Vai al contenuto

Motore Passo Passo e inversione rotazione con switch


Claudio011960

Messaggi raccomandati

Salve a tutti, sono entrato nel mondo di Arduino da poco, ho dei vaghi ricordi di quando usavo il Basic.

Ho necessità di pilotare un motore passo passo e che cambi direzione tramite uno switch.

Fino ad ora sono riuscito a fargli fare il cambio di rotazione solo alla fine della rotazione dei 360°, ma io ho bisogno che la rotazione possa cambiare in qualsiasi punto del percorso.

Allego il listato di quanto fatto e ringrazio chi mi sarà di aiuto.

Claudio

 

/* 17-02-2015, Claudio G.

Programma per pilotare un motore Passo-Passo

Deve cambiare senso di rotazione quando rileva il cambio di stato di un ingresso

*/

 

 

#include <Stepper.h>;

 

int SwDir = 7; //Sensore Forcella per Cambio Direzione

int SwUpDw = 6; //Pulsante per incremento velocità

 

int OutLed01 = 9; //Led

 

int SpeedValue = 5; // Variabile su cui andrà memorizzato la velocità di rotazione

int Speed = SpeedValue;

int SpeedUp = 2;

int ValDir = 0; // variabile che memorizza il valore letto di SwDir

 

//10 = IN1, 11 = IN 2, 12 = IN 3, 13 = IN 4;

 

Stepper myStepper(2048, 10, 12, 11, 13);

 

void setup() {

Serial.begin(9600);

pinMode (SwDir, INPUT); // Definito SWDir come INPUT

pinMode (SwUpDw, INPUT); // Definito SwUpDw come INPUT

 

pinMode (OutLed01, OUTPUT); // Definito OutLed01 come OUTPUT

 

myStepper.setSpeed(Speed); // Velocità motore

}

 

void loop() {

 

ValDir = digitalRead(SwDir); // legge il pin di SwDir e lo memorizza in ValDir

digitalWrite(OutLed01, ValDir); // imposta il LED a seconda dell'azione svolta sul pulsante

if (ValDir == HIGH) // Se Stato_Pulsante è uguale a 1 o HIGH (5 volt)

{

digitalWrite(OutLed01, ValDir); // imposta il LED a seconda dell'azione svolta sul pulsante

delay (100); // delay per debounce switch

myStepper.step(2048);

delay(1000);

// Avanti ();

}

else { // Altrimenti

digitalWrite(OutLed01, LOW); // Scriviamo sul pin 9 lo stato basso (0 Volt)

delay (1000);

myStepper.step(-2048);

delay(1000);

// Indietro();

}

}

 

void Avanti() {

myStepper.step(2048);

delay(1000);

}

 

void Indietro() {

myStepper.step(-2048);

delay(1000);

}

 

void ChkSwHigh() {

ValDir = digitalRead(SwDir); // legge il pin di SwDir e lo memorizza in ValDir

digitalWrite(OutLed01, ValDir); // imposta il LED a seconda dell'azione svolta sul pulsante

if (ValDir == HIGH) // Se Stato_Pulsante è uguale a 1 o HIGH (5 volt)

{

digitalWrite(OutLed01, ValDir); // imposta il LED a seconda dell'azione svolta sul pulsante

delay (100); // delay per debounce switch

}

else { // Altrimenti

digitalWrite(OutLed01, LOW); // Scriviamo sul pin 9 lo stato basso (0 Volt)

}

}

Link al commento
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un membro per lasciare un commento

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora

Giochi in Uscita



×
×
  • Crea Nuovo...