robo seguidor de linha
TRANSCRIPT
//Teste Robô Seguidor de Linha | Arduino - Canal Click Luna
//Potencia Normal
//Potencia Reduzida
//Potencia Tras
#define potN 120
#define potR 60
#define potT 100
//Direita
int in1=4;
int in2=5;
//Esquerda
int in3=6;
int in4=7;
int velocidadeA=8;
int velocidadeB=9;
int lerSD=48;
int lerSE=46;
void setup() {
// Inicializa os pinos dos motores como saida
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(velocidadeA, OUTPUT);
pinMode(velocidadeB, OUTPUT);
//sensores entrada
pinMode(lerSD, INPUT);
pinMode(lerSE, INPUT);
}
void loop() {
// Adquire os valores do sensor direito e esquerdo
int sD=digitalRead(lerSD);
int sE=digitalRead(lerSE);
if(sD == 0 && sE == 0){
control('f');
}else if(sD == 1 && sE == 0){
control('d');
}else if(sD == 0 && sE == 1){
control('e');
}else if(sD == 1 && sE == 1){
control('p');
}
delay(100);
}
//Funcao que controla os motores
void control(char dir){
switch(dir){
case 'f':
analogWrite(velocidadeA,potN);
analogWrite(in1, HIGH);
analogWrite(in2, LOW);
analogWrite(velocidadeB,potN);
analogWrite(in3, HIGH);
analogWrite(in4, LOW);
break;
case 'd':
analogWrite(velocidadeA,potR);
analogWrite(in1, LOW);
analogWrite(in2, HIGH);
analogWrite(velocidadeB,potN);
analogWrite(in3, HIGH);
analogWrite(in4, LOW);
break;
case 'e':
analogWrite(velocidadeA,potN);
analogWrite(in1, HIGH);
analogWrite(in2, LOW);
analogWrite(velocidadeB,potR);
analogWrite(in3, LOW);
analogWrite(in4, HIGH);
break;
case 'p':
analogWrite(velocidadeA,0);
analogWrite(in1, LOW);
analogWrite(in2, LOW);
analogWrite(velocidadeB,0);
analogWrite(in3, LOW);
analogWrite(in4, LOW);
break;
/* case 't':
analogWrite(velocidadeA,potT);
analogWrite(in1, LOW);
analogWrite(in2, HIGH);
analogWrite(velocidadeB,potT);
analogWrite(in3, LOW);
analogWrite(in4, HIGH);
break;
*/
} }