Ciao a tutti, sto facendo una macchinina "autonoma", ma prima di aggiungerci il sensore ad ultrasuoni devo prima di tutto assicurarmi che la parte "meccanica/elettronica" dell'auto sia funzionante. Cosa che non è.
Praticamente, uso un Arduino UNO R3 (originale), una mini-breadboard, e due L293D.
La macchinina è composta da due motori: quello principale da 6/9V per le ruote motrici e quello per lo sterzo (fungendo a mo' di servo) da 3/5V.
Uso due integrati (che chiameremo int1 ed int2 rispettivamente per quello del motore principale e quello dello sterzo) perchè i due motori necessitano di tensione differente (probabilmente esiste qualche modo per abbassare la tensione che va al motore più piccolo, tramite resistenze o altro, ma non lo conosco).
Il problema è questo: (a) quando alimento Arduino con una batteria da 9V, ed int1 con il pin8 (Vcc) collegato al "Vin" di Arduino, il LED integrato in Arduino al pin13 da errore e si mette a lampeggiare.
(b) Se invece collego il Vcc di int1 al normale 5V di Arduino, ed alimento il tutto tramite cavo USB, "funziona perfettamente" (nel senso che lo sketch viene eseguito correttamente ed i componenti rispondono in modo corretto, seppur molto più debole a causa della tensione troppo bassa, inoltre in questo caso il LED del pin13 rimane acceso fisso).
(c) Se invece torno ad usare la batteria esterna ed il Vcc lo collego ai 5V di Arduino, per due secondi il LED del pin13 rimane acceso e lo sketch viene eseguito (sento il rumore del motore di sterzo che si muove, seppur non abbia abbastanza potenza da far sterzare le ruote) mentre il motore principale rimane fermo, e dopo due secondi il LED del pin13 comincia a lampeggiare e tutto ritorna come al punto "a".
Sapete dirmi perchè?
Ed eventualmente come risolvere, o se ci sono modi più "ottimizzati" per realizzare il tutto?
Grazie mille!
Di seguito riporto il codice, anche se non credo serva a qualcosa)
const int motorAPin1 = 3;
const int motorAPin2 = 4;
const int motorBPin1 = 6;
const int motorBPin2 = 7;void setup() {
pinMode(motorAPin1, OUTPUT);
pinMode(motorAPin2, OUTPUT);
pinMode(motorBPin1, OUTPUT);
pinMode(motorBPin2, OUTPUT);
}void loop() {
avanti();
sinistra();
delay(2000);
destra();
delay(2000);
ferma();
neutro();
delay(1000);
indietro();
delay(1500);}
void ferma() {
digitalWrite(motorAPin1, LOW);
digitalWrite(motorAPin2, LOW);
}void avanti() {
digitalWrite(motorAPin1, LOW);
digitalWrite(motorAPin2, HIGH);
}void indietro() {
digitalWrite(motorAPin1, HIGH);
digitalWrite(motorAPin2, LOW);
}void neutro(){
digitalWrite(motorBPin1, LOW);
digitalWrite(motorBPin2, LOW);
}void sinistra() {
digitalWrite(motorBPin1, HIGH);
digitalWrite(motorBPin2, LOW);
}void destra() {
digitalWrite(motorBPin1, LOW);
digitalWrite(motorBPin2, HIGH);
}