Sto maledetto L293D..........

Tanto per giocare un po' ho comprato una macchinina radiocomandata e ho deciso di metterci il bluetooth e dei sensori ad ultrasuoni.
Per comandare i motori uso un l293d, ma come lo uso sto integrato?
Io nello sketch (perso :() ho fatto una cosa tipo così:
metto ad HIGH il piedino enable1,
metto ad HIGH uno dei due motor A
metto a LOW uno dei due motorA.
Per invertire il senso di rotazione inverto i piedini a HIGH e LOW, ma non funziona nulla.... sto sbagliando qualcosa?

Beh riscrivi il codice che hai perso, per sicurezza controlli se funziona e in caso di esito negativo lo posti qui..
In ogni caso puoi seguire questo tutorial.

Ma ha mai funzionato lo sketch che hai scritto? L'integrato è nuovo? Perchè altrimenti non sarebbero da escludere dei problemi riguardo lo stesso L293D.

sciorty:
Beh riscrivi il codice che hai perso, per sicurezza controlli se funziona e in caso di esito negativo lo posti qui..
In ogni caso puoi seguire questo tutorial.

Ma ha mai funzionato lo sketch che hai scritto? L'integrato è nuovo? Perchè altrimenti non sarebbero da escludere dei problemi riguardo lo stesso L293D.

L'integrato è appena uscito dal tubo :slight_smile:
questo è lo sketch birichino: non mi inverte la direzione del motore:

int motor1Pin1 = 3;    // pin 2 on L293D
int motor1Pin2 = 2;    // pin 7 on L293D
int enablePin = 11;    // pin 1 on L293D

void setup() {
  // set the switch as an input:


  // set all the other pins you're using as outputs:
  pinMode(motor1Pin1, OUTPUT);
  pinMode(motor1Pin2, OUTPUT);
  pinMode(enablePin, OUTPUT);

  // set enablePin high so that motor can turn on:
  digitalWrite(enablePin, HIGH);
}

void loop() {
    digitalWrite(motor1Pin1, LOW);   // set pin 2 on L293D low
    digitalWrite(motor1Pin2, HIGH);  // set pin 7 on L293D high
      
    delay(10000);
    digitalWrite(motor1Pin1, HIGH);  // set pin 2 on L293D high
    digitalWrite(motor1Pin2, LOW);   // set pin 7 on L293D low
  
}
[code]

[/code]

Credo di aver trovato il problema...... stay tuned :wink:

RISOLTO
Mancava un delay :wink:

cece99:
Credo di aver trovato il problema...... stay tuned :wink:

RISOLTO
Mancava un delay :wink:

Non é facile aiutarTi se Ti autorispondi e autorisolvi i problemi. :wink: :wink: :wink:

Fai girare il motore per 10 secondi in un verso ma per qualce µsecondo nell altro verso.
dopo

delay(10000);
    digitalWrite(motor1Pin1, HIGH);  // set pin 2 on L293D high
    digitalWrite(motor1Pin2, LOW);   // set pin 7 on L293D low

ci va un altro delay();.

Non é una cattiva idea fare una pausa tra il pilotaggio in un senso e il pilotaggio nel altro senso perché cosí la macchinetta frena e hai una corrente di spunto del motore minore. Basta mettere Enable per qualche secondo a LOW poi cambi il pilotaggio dei pin 2 e 3 e metti Enable di nuovo a H.

Se vuoi frenare piú veloce se metti i pin 2 e 3 tutti due a H oppure a L. Cosí cortocircuiti il motore e quello frena velocemente perché usato come generatore messo in corto. Con enable si ferma a causa dell'atrito meccanico.

Ciao Uwe