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 ---------------------------
/* ---------------------------- 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