Codice per utilizzare driver L293D

ITIS “F.GIORDANI” Caserta
A.S. 2017/18
classe: 4D informatica
indirizzo di studio: Informatica e Telecomunicazione – articolazione Informatica
Materia: Informatica
Programmatore:Bonomo Alessandro
Sistema Operativo: Windows 10
Linguaggio: Arduino
Obiettivo didattico:
Programmare il sensore del driver L293D.
Obiettivo dell’esercitazione:
Programmare il motore per permettere il movimento.
 
Elenco attrezzature e materiali:
  1. Scheda arduino.
  2. Breadboard.
  3. Chip motore L293D.
  4. Cavo usb per collegare Arduino.

 

Codice Arduino(vers. 2.0):
class driverL293D
{
  private:
  int pinSxAvanti; // motore di sinistra ,pin attivazione direzione avanti
  int pinDxAvanti; // motore di destra ,pin attivazione direzione avanti
  int pinSxIndietro; // motore di sinistra ,pin attivazione direzione indietro
  int pinDxIndietro; // motore di destra ,pin attivazione direzione indietro
  public:
  driverL293D()
  {
    //configurazione di default
    this->pinSxAvanti=2;
    this->pinDxAvanti=3;
    this->pinSxIndietro=4;
    this->pinDxIndietro=5;
    pinMode(pinSxAvanti , OUTPUT);
    pinMode(pinDxAvanti , OUTPUT);
    pinMode(pinSxIndietro , OUTPUT);
    pinMode(pinDxIndietro , OUTPUT);
  }
  driverL293D(int pinSxAvanti,int pinDxAvanti,int pinSxIndietro,int pinDxIndietro)
  {
    //configurazione con pin come parametri
    this->pinSxAvanti=pinSxAvanti;
    this->pinDxAvanti=pinDxAvanti;
    this->pinSxIndietro=pinSxIndietro;
    this->pinDxIndietro=pinDxIndietro;
    pinMode(pinSxAvanti , OUTPUT);
    pinMode(pinDxAvanti , OUTPUT);
    pinMode(pinSxIndietro , OUTPUT);
    pinMode(pinDxIndietro , OUTPUT);
  }
  void avantiDi(int millisec)
  {
    digitalWrite(pinSxAvanti , 1);
    digitalWrite(pinDxAvanti , 0);
    digitalWrite(pinSxIndietro , 1);
    digitalWrite(pinDxIndietro , 0);
    int tempo=0;
    while(millisec-tempo>0)
    {
      delay(1);
      tempo++;
    }
    fermo();
  }
  void indietroDi(int millisec)
  {
    digitalWrite(pinSxAvanti , 0);
    digitalWrite(pinDxAvanti , 1);
    digitalWrite(pinSxIndietro , 0);
    digitalWrite(pinDxIndietro , 1);
    int tempo=0;
    while(millisec-tempo>0)
    {
      delay(1);
      tempo++;
    }
    fermo();
  }
  private:
  void fermo()
  {
    digitalWrite(pinSxAvanti , 0);
    digitalWrite(pinDxAvanti , 0);
    digitalWrite(pinSxIndietro , 0);
    digitalWrite(pinDxIndietro , 0);
  }
};


// dichiarazione pin
const int pinSxAvanti=2;
const int pinDxAvanti=3;
const int pinSxIndietro=4;
const int pinDxIndietro=5;

// oggetti delle classi
driverL293D driverMotoriObj(pinSxAvanti, pinDxAvanti, pinSxIndietro, pinDxIndietro);

void setup()
{
  // vai avanti per 5 secondi (5000 ms)
  driverMotoriObj.avantiDi(5000);
  // vai indietro per 5 secondi (5000 ms)
  driverMotoriObj.indietroDi(5000);
}
void loop()
{
  
}

Descrizione top-down dei passi realizzativi:

  1. Realizzare il circuito
  2. Scrivere il codice arduino
  3. Collegare la scheda arduino al pc tramite il cavo usb
  4. Caricare il programma cliccando sul pulsante “carica” dell‘ambiente software arduino

Test finale:
Osservare il funzionamento del  motore.

Comments are closed.