Já consegui juntar tudo e por o Arduino a rolar, a desviar-se de objectos e a buscar a luz.
Como rodas arranjei-lhe duas tampas plásticas de garrafão de agua.
Na frente tem 2 arames que accionam dois interruptores e para "vêr a luz" tem 2 LDR's.
O Código é bastante simples e foi feito numa noite.
#define moto1A 7
#define moto1B 8
#define moto1E 9
#define moto2A 4
#define moto2B 5
#define moto2E 6
#define sensor1 2
#define sensor2 3
#define ldr1 0
#define ldr2 1
#define vel1 150
#define vel2 255
void setup()
{
Serial.begin(9600);
Serial.println("SETUP");
}
void loop()
{
lerLuz();
if(!digitalRead(sensor1))
sensorDireita();
if(!digitalRead(sensor2))
sensorEsquerda();
motorFrente(vel1,250);
}
void motorFrente(int vel, int tempo){
digitalWrite(moto1A,LOW);
digitalWrite(moto1B,HIGH);
analogWrite(moto1E, vel);
digitalWrite(moto2A,LOW);
digitalWrite(moto2B,HIGH);
analogWrite(moto2E, vel);
delay(tempo);
}
void motorTras(int vel, int tempo){
Serial.print("Tras : ");
Serial.print(vel,DEC);
Serial.print(" , ");
Serial.println(tempo,DEC);
digitalWrite(moto1A,HIGH);
digitalWrite(moto1B,LOW);
analogWrite(moto1E, vel);
digitalWrite(moto2A,HIGH);
digitalWrite(moto2B,LOW);
analogWrite(moto2E, vel);
delay(tempo);
}
void motorDireita(int vel, int tempo){
Serial.print("Direita : ");
Serial.print(vel,DEC);
Serial.print(" , ");
Serial.println(tempo,DEC);
digitalWrite(moto1A,LOW);
digitalWrite(moto1B,HIGH);
analogWrite(moto1E, vel);
digitalWrite(moto2A,HIGH);
digitalWrite(moto2B,LOW);
analogWrite(moto2E, vel);
delay(tempo);
}
void motorEsquerda(int vel, int tempo){
Serial.print("Esquerda : ");
Serial.print(vel,DEC);
Serial.print(" , ");
Serial.println(tempo,DEC);
digitalWrite(moto1A,HIGH);
digitalWrite(moto1B,LOW);
analogWrite(moto1E, vel);
digitalWrite(moto2A,LOW);
digitalWrite(moto2B,HIGH);
analogWrite(moto2E, vel);
delay(tempo);
}
void motorParar(int tempo){
Serial.print("Parar ");
Serial.print(" , ");
Serial.println(tempo,DEC);
digitalWrite(moto1A,LOW);
digitalWrite(moto1B,LOW);
analogWrite(moto1E, 255);
digitalWrite(moto2A,LOW);
digitalWrite(moto2B,LOW);
analogWrite(moto2E, 255);
delay(tempo);
}
void sensorDireita() {
Serial.println("Sensor Direita");
motorParar(1000);
motorTras(vel1,1000);
motorEsquerda(vel1,700);
}
void sensorEsquerda() {
Serial.println("Sensor Esquerda");
motorParar(1000);
motorTras(vel1,1000);
motorDireita(vel1,700);
}
void lerLuz(){
int dir = analogRead(ldr1);
int esq = analogRead(ldr2);
Serial.print("Luz : ");
Serial.print(esq,DEC);
Serial.print(" , ");
Serial.println(dir,DEC);
if((dir-esq)<-100){
motorDireita(vel1,500);
}
else if((dir-esq)<-50){
motorDireita(vel1,250);
}
else if ((dir-esq)>100){
motorEsquerda(vel1,500);
}
else if ((dir-esq)>50){
motorEsquerda(vel1,2500);
}
}
está um mimo! que motores usaste?
ResponderEliminar:tup:
Obrigado
ResponderEliminarUsei estes motores DC: Motores DC