Robot
Robot
h>
#include <Wire.h>
#include <SoftwareSerial.h>
void AVANCER_V1()
{
analogWrite(IN1,175);
analogWrite(IN2,0);
analogWrite(IN3,175);
analogWrite(IN4,0);
}
void DROITE_V1()
{
analogWrite(IN1,150);
analogWrite(IN2,0);
analogWrite(IN3,0);
analogWrite(IN4,0);
}
void AVANCER_V2()
{
analogWrite(IN1,135);
analogWrite(IN2,0);
analogWrite(IN3,135);
analogWrite(IN4,0);
}
void GAUCHE_V2()
{
analogWrite(IN1,0);
analogWrite(IN2,0);
analogWrite(IN3,120);
analogWrite(IN4,0);
}
void SUIVEUR_VITESSE1()
{
if((((Cap_G)==(1))) && (((Cap_D)==(1)))){
AVANCER_V1();
}
if((((Cap_G)==(1))) && (((Cap_D)==(0)))){
DROITE_V1();
}
if((((Cap_G)==(0))) && (((Cap_D)==(1)))){
GAUCHE_V1();
}
}
void ARRETER()
{
analogWrite(IN1,0);
analogWrite(IN2,0);
analogWrite(IN3,0);
analogWrite(IN4,0);
}
void GAUCHE_V1()
{
analogWrite(IN1,0);
analogWrite(IN2,0);
analogWrite(IN3,150);
analogWrite(IN4,0);
}
void DROITE_V2()
{
analogWrite(IN1,120);
analogWrite(IN2,0);
analogWrite(IN3,0);
analogWrite(IN4,0);
}
void TD_Croisement()
{
analogWrite(IN1,175);
analogWrite(IN2,0);
analogWrite(IN3,0);
analogWrite(IN4,175);
}
void SUIVEUR_VITESSE2()
{
if((((Cap_G)==(1))) && (((Cap_D)==(1)))){
AVANCER_V2();
}
if((((Cap_G)==(1))) && (((Cap_D)==(0)))){
DROITE_V2();
}
if((((Cap_G)==(0))) && (((Cap_D)==(1)))){
GAUCHE_V2();
}
}
void REAGIR_COULEUR()
{
pinMode(TCS230_S0, OUTPUT);
pinMode(TCS230_S1, OUTPUT);
pinMode(TCS230_S2, OUTPUT);
pinMode(TCS230_S3, OUTPUT);
pinMode(TCS230_OUT, INPUT);
digitalWrite(TCS230_S0, (100 == 0 || 100 == 2) ? LOW : HIGH);
digitalWrite(TCS230_S1, (100 == 0 || 100 == 20) ? LOW : HIGH);
setColorWithFilter(1);
ROUGE = pulseIn(TCS230_OUT, digitalRead(TCS230_OUT) == HIGH ? LOW : HIGH);
setColorWithFilter(2);
VERT = pulseIn(TCS230_OUT, digitalRead(TCS230_OUT) == HIGH ? LOW : HIGH);
if((ROUGE) < (VERT)){
ARRETER();
}
if((VERT) < (ROUGE)){
SUIVEUR_VITESSE2();
}
}
void setup()
{
Serial.begin(9600);
void loop(){
IN1 = 3;
IN2 = 5;
IN3 = 6;
IN4 = 9;
Cap_Obs_Droit = getDistance(13,12);
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
pinMode(7,INPUT);
pinMode(8,INPUT);
delay(200);
while(!((Cap_Obs_Droit) < (5.0)))
{
Cap_G = digitalRead(7);
Cap_D = digitalRead(8);
Cap_Obs_Droit = getDistance(13,12);
SUIVEUR_VITESSE1();
}
delay(200);
Cap_G = digitalRead(7);
Cap_D = digitalRead(8);
while(!((((Cap_G)==(0))) && (((Cap_D)==(0)))))
{
Cap_G = digitalRead(7);
Cap_D = digitalRead(8);
Cap_Obs_Avant = getDistance(4,2);
if((Cap_Obs_Avant) < (7)){
ARRETER();
}else{
SUIVEUR_VITESSE2();
}
}
delay(200);
Cap_Obs_Avant = getDistance(4,2);
while(!((Cap_Obs_Avant) < (17.0)))
{
Cap_Obs_Avant = getDistance(4,2);
ARRETER();
}
delay(2000);
Cap_G = digitalRead(7);
Cap_D = digitalRead(8);
COMPTEUR = 0;
while(!((((Cap_G)==(0))) && ((((Cap_D)==(0))) && (((COMPTEUR)==(2))))))
{
Cap_Obs_Avant = getDistance(4,2);
Cap_G = digitalRead(7);
Cap_D = digitalRead(8);
if((((Cap_G)==(0))) && (((Cap_D)==(0)))){
COMPTEUR += 1;
AVANCER_V2();
delay(200);
TD_Croisement();
delay(200);
}else{
if((Cap_Obs_Avant) < (7.0)){
ARRETER();
}else{
SUIVEUR_VITESSE2();
REAGIR_COULEUR();
}
}
}
ARRETER();
}