ho costruito questo robottino
http://imageshack.us/a/img854/5521/imag0317kl.jpg
con arduino uno e shield motori 2A e gli ho caricato questo programmino:
char comando, vel;
int velocita=255;
const int pinsensore=2;
int statesens=HIGH;
void setup(){
Serial.begin(9600);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(pinsensore,INPUT);
}
void loop(){
if(digitalRead(pinsensore)==LOW) stop();
if(Serial.available()>0){
comando=Serial.read();
Serial.println(comando);
switch(comando){
case 'g': go();break;
case 's': stop(); break;
case 'b': back(); break;
case 'r': right(); break;
case 'l': left();go(); break;
case 'm': delay(500);
vel=Serial.read();
if(vel=='1') velocita=100;
else if(vel=='2') velocita=180;
else if(vel=='3') velocita=255;
if(vel) Serial.println("Velocita' modificata");
break;
}
}
}
void go(){
//Motore sinistro
digitalWrite(7,LOW);
analogWrite(6,velocita);
//Motore destro
digitalWrite(4,LOW);
analogWrite(5,velocita);
}
void stop(){
//Motore sinistro
digitalWrite(7,LOW);
analogWrite(6,0);
//Motore destro
digitalWrite(4,LOW);
analogWrite(5,0);
}
void back(){
//Motore sinistro
digitalWrite(7,HIGH);
analogWrite(6,velocita);
//Motore destror
digitalWrite(4,HIGH);
analogWrite(5,velocita);
}
void right(){
//Motore sinistro
digitalWrite(7,HIGH);
analogWrite(6,velocita);
//Motore destro
digitalWrite(4,LOW);
analogWrite(5,velocita);
}
void left(){
//Motore sinistro
digitalWrite(7,HIGH);
analogWrite(6,velocita);
//Motore destro
}
Link della shield motori che uso:
tralasciando le righe di codice inerenti al sensore IR,quando tento di girare il robottino a destra o sinistra(case left/right) o gira su se stesso o va dritto.come mai?come devo modificare le funzioni left(),right() ??Io vorrei che quando deve girare a destra il mio robottino si fermi giri di 90° a destra e poi vada avanti.come faccio??avevo pensato di usare
la libreria simpletimer ma non so come implementare il tutto.mi aiutate???
Grazie