buon giorno.
mi sono molto divertito con quel codice e l'ho sviluppato arrivando a questo:
byte pwm;
byte EN1 = 7;
byte EN2 = 6;
byte EN3=8;
byte EN4=9;
void setup() {
pinMode(EN1, OUTPUT);
pinMode(EN2, OUTPUT);
Serial.begin(9600);}
void avanti(byte pwm) {
digitalWrite(EN1, HIGH);
analogWrite(EN2, (255-pwm));
}
void indietro(byte pwm) {
digitalWrite(EN1, LOW);
analogWrite(EN2, pwm);
}
void ferma() {
digitalWrite(EN1, LOW);
digitalWrite(EN2, LOW);
}
void sterzaDestra(byte pwm) {
digitalWrite(EN3, HIGH);
analogWrite(EN4, (255-pwm));
}
void sterzaSinistra(byte pwm) {
digitalWrite(EN3, LOW);
analogWrite(EN4, pwm);
}
void diritto() {
digitalWrite(EN3, LOW);
digitalWrite(EN4, LOW);
}
char dir;
void loop() {
dir=Serial.read();
if(dir=='a'){avanti(255);}
if(dir=='i'){indietro(255);}
if(dir=='f'){ferma();}
if(dir='d'){sterzaDestra(255);}
if(dir='s'){sterzaSinistra(255);}
if(dir='x'){diritto();}
}
questo codice mi dovrebbe gestire due motori di una macchinetta. il primo la deve spingere avanti indietro(con i comandi avanti/indietro), il secondo la dovrebbe far sterzare. invice con questo codice funziona solo un motore(quello posto in OUT1,OUT2).
qualcuno a qualche idea? per comandare due motori bisogna fare qualcosa di speciale?