mercoledì 11 dicembre 2019

Arduino N° 27 - Pilotaggio di 2 motori con ponte ad H

Arduino N° 26

 Achille De Santis

Arduino N° 28




Utili sottoprogrammi per la gestione ed il controllo di motori in continua da utilizzare per la movimentazione  di robot, veicoli ecc...


/* ---------------------------- Inizio Programma -----------------------------
 *  Achille De Santis
 * Pilotaggio di 2 motori con ponte H
 * V5 del 09-07-2019
 * In questo modo è facile pilotare anche tre o più motori.
 * Base di lavoro per la gestione di ROBOT, veicoli telecomandati ed altro.
*/

// ---------- pin dell'asse X dei motori --------------
#define MOTOR_XA      13  // motore polo XA
#define MOTOR_XB      12  // motore polo XB
// ---------- pin dell'asse Y dei motori --------------
#define MOTOR_YA      11  // motore polo YA
#define MOTOR_YB      10  // motore polo YB
// --------------------------------------------------------

void motore(int MA,bool A, int MB, bool B)       // motore generico
{
  digitalWrite(MA, A);  // motore, pin A
  digitalWrite(MB, B);  // motore, pin B
}

// --------------------------------------------------------------------------
void avantiSX()   {motore(MOTOR_XA, 1, MOTOR_XB, 0);}
void avantiDX()   {motore(MOTOR_YA, 1, MOTOR_YB, 0);}
void avanti()     {avantiSX(); avantiDX();}
// --------------------------------------------------------------------------
void indietroSX() {motore(MOTOR_XA, 0, MOTOR_XB, 1);}
void indietroDX() {motore(MOTOR_YA, 0, MOTOR_YB, 1);}
void indietro()   {indietroSX(); indietroDX();}
// --------------------------------------------------------------------------
void fermoSX()    {motore(MOTOR_XA,0,MOTOR_XB,0); }
void fermoDX()    {motore(MOTOR_YA,0,MOTOR_YB,0); }
void fermo()      {fermoSX(); fermoDX();  }
// -----------------------------------------------------------------------------
void DXavanti() { fermoDX(); avantiSX(); delay(300); avanti(); }
void SXavanti() { fermoSX(); avantiDX(); delay(300); avanti();  }
// -----------------------------------------------------------------------------
void DXindietro() { fermo(); indietroSX(); delay(300); fermo(); }
void SXindietro() { fermo(); indietroDX(); delay(300); fermo(); }
// ----------------------------------------------------------------------------- 

void setup()
{
  pinMode (MOTOR_XA, OUTPUT);
  pinMode (MOTOR_XB, OUTPUT);
  pinMode (MOTOR_YA, OUTPUT);
  pinMode (MOTOR_YB, OUTPUT);
}

void loop()
{
    // inserire qui il programma
}

// --------------------------- Fine programma ---------------------------


Nessun commento:

Posta un commento