Motores DC e sensores
Deixo un código derivado do que usamos o curso pasado co renacuajobot. Debera funcionar cos motores de continua, pero según se poñan os cables dos motores pode ser que haxa que cambiar algún HIGH por LOW.
Deixo o código e comento os cambios que se deberan facer:
// variables para gardar o valor dos sensores
int colorSensorE;
int colorSensorD;
// variables para os pines
int pinSensorE=2;
int pinSensorD=3;
int motEsqA=6;
int motEsqB=7;
int motDerA=8;
int motDerB=9;
void setup(){
//pines de saida e entrada
pinMode(2,INPUT);
pinMode(3,INPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
}
void loop() {
//lemos os sensores
ler();
// comprobo o estado dos sensores e fago que o robot actue en consecuencia
if (colorSensorE==1 && colorSensorD==1){
adiante();
}
else if(colorSensorE==0 && colorSensorD==1){
xiraE();
}
else if(colorSensorE==1 && colorSensorD==0){
xiraD();
}
delay(10);
}
void adiante(){
digitalWrite(motEsqA,LOW);
digitalWrite(motEsqB,HIGH);
digitalWrite(motDerA,LOW);
digitalWrite(motDerB,HIGH);
}
void atras(){
digitalWrite(motEsqA,HIGH);
digitalWrite(motEsqB,LOW);
digitalWrite(motDerA,HIGH);
digitalWrite(motDerB,LOW);
}
void xiraE(){
digitalWrite(motEsqA,HIGH);
digitalWrite(motEsqB,LOW);
digitalWrite(motDerA,HIGH);
digitalWrite(motDerB,LOW);
}
void xiraD(){
digitalWrite(motEsqA,LOW);
digitalWrite(motEsqB,HIGH);
digitalWrite(motDerA,LOW);
digitalWrite(motDerB,HIGH);
}
void para(){
digitalWrite(motEsqA,LOW);
digitalWrite(motEsqB,LOW);
digitalWrite(motDerA,LOW);
digitalWrite(motDerB,LOW);
}
void ler(){
colorSensorE=digitalRead(pinSensorE);
colorSensorD=digitalRead(pinSensorD);
}