Claudio011960 Inviato 18 Febbraio 2015 Condividi Inviato 18 Febbraio 2015 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 Altre opzioni di condivisione...
Messaggi raccomandati
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 accountAccedi
Sei già registrato? Accedi qui.
Accedi Ora