Salve a tutti, sono nuovo del forum..Prometto che mi presenterò subito nella sezione adatta. Mi sono iscritto perchè stasera ho sbattuto la testa su un problema che non riesco a risolvere (Premetto che uso Arduino da una settimana :D) . Praticamente ho modificato un classico esempio di controllo motore DC con driver L293en per poter controllare l'accensione del motore mediante un pulsante che agisce sul Pin enable del driver. Il circuito presenta anche un secondo bottone per il controllo del verso di rotazione del motore. Succedono 2 Cose Strane :
1 - Il bottone di controllo del Pin Enable è come se non ci fosse. Come collego l'usb il motore parte spedito!!! Il secondo bottone, quello per invertire la rotazione, funge tranquillamente.
2 - Questa è la cosa più strana, ovvero staccando il pin dal piedino 1 (enable) il motore continua a girare!!! Ho un driver difettoso?
Vi posto codice e schema Fritzing. Grazie a tutti per l'aiuto, a presto!!!
P.S. Ho provato anche inizializzando i pin 7 e enable a LOW, ma non cambia nulla.
int switchPin = 2; // switch input
int motor1Pin1 = 3; // pin 2 on L293
int motor1Pin2 = 4; // pin 7 on L293
int enablePin = 9; // pin 1 on L293
int val = 0;
int stato = 0;
int vecchio_val = 0;
int bottone_contr=7;
void setup() {
// set the switch as an input:
pinMode(switchPin, INPUT);
// set all the other pins you're using as outputs:
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(enablePin, OUTPUT);
pinMode(bottone_contr , INPUT);
}
void loop() {
val=digitalRead(bottone_contr);
if((val==HIGH)&&(vecchio_val==LOW)){
stato=1-stato;
}
vecchio_val=val;
if(stato=1){
digitalWrite(enablePin, HIGH);
if (digitalRead(switchPin) == HIGH) {
digitalWrite(motor1Pin1, LOW); // set pin 2 on L293D low
digitalWrite(motor1Pin2, HIGH); // set pin 7 on L293D high
}
// if the switch is low, motor will turn in the opposite direction:
else{
digitalWrite(motor1Pin1, HIGH); // set pin 2 on L293D high
digitalWrite(motor1Pin2, LOW); // set pin 7 on L293D low
}
}
else {
digitalWrite(enablePin,LOW);
}
}