Continuando a lavorare con i motori passo-passo e Arduino hai visto lo sketch che ti permette di testare il collegamento dei due pulsanti facendo lampeggiare il led connesso al pin 13.
Se non sai come collegare i due pulsanti ad Arduino puoi leggere la prima parte di questa serie di articoli.
Riporto lo sketch illustrato per consentirti di approfondire le sue funzionalità prima di passare a mostrarti il video di quello che esegue:
#define LED 13 #define ORARIO 2 #define ANTIOR 3 int ora = 0; int ant = 0; void setup() { pinMode(LED, OUTPUT); pinMode(ORARIO, INPUT); pinMode(ANTIOR, INPUT); } void loop() { ora = digitalRead(ORARIO); ant = digitalRead(ANTIOR); if (ora == HIGH) { orario(); } if (ant == HIGH) { antior(); } } void orario() { for (int i=0; i<ORARIO; i++) { digitalWrite(LED, HIGH); delay(300); digitalWrite(LED, LOW); delay(300); } } void antior() { for (int i=0; i<ANTIOR; i++) { digitalWrite(LED, HIGH); delay(300); digitalWrite(LED, LOW); delay(300); } }
Avrai già notato che ho apportato delle modifiche rispetto a quello già mostrato, ma non mi piace ripetermi, sebbene le funzioni eseguite non cambino ho affinato leggermente lo sketch introducendo alcuni passaggi che poi ti torneranno utili per comprendere meglio lo sketch che utilizzerai per far ruotare il motore passo-passo.
Vediamo i cambiamenti, il primo di tutti riguarda la funzione loop() che è alleggerita, non ci sono più i comendi che accendono e spengono il led in modo ciclico:
le linee 18-40 le puoi comprimere nelle linee 18 e 19;
linee 18-19: il controllo non varia, verifichi sempre che il pulsante corrispondente al pin impostato sia premuto, ma nell’azione da intraprendere non esegui le istruzioni di accensione e spegnimento in seguenza, ma richiami una ulteriore funzione che per analogia con il futuro sketch ho chiamato orario o antior (antiorario), abbreviata per simmetria del codice, così entrambe le linee sono della medesima lunghezza, lo so è maniacale, ma a me piace così;
Dovrai qundi aggiungere le due fnzioni orario() e antior() alla fine dello sketch:
linee 22-31: definisci la funzione orario(), al cui interno sono definite le istruzioni da eseguire alla pressione del pulsante connesso al pin 2;
entrando nello specifico delle istruzioni eseguite ho sostituito la sequenza di accensione, spegnimento, accensione, spegnimento con un ciclo, in fondo di un ciclo si tratta.
linea 24: definisci un ciclo da 0 fino al raggiungimento del valore definito nella costante ORARIO, che come sai è il pin a cui hai collegato uno dei pulsanti;
linee 26-28: esegue il passaggio di accensione, attesa, spegnimento, attesa del led connesso al pin 13, per farlo non puoi utilizzare la sequenza di comandi che hai visto nel precedente sketch, utilizza quindi il comando digitalWrite(pin,HIGH) per accendere il led, e digitalWrite(pin,LOW) per spegenrlo, il delay(300) è sufficente a far lampeggiare il led visibilmente;
linee 33-42: esegui le medesime operazioni viste per la funzione orario() con la sola differenza che il valore su cui il ciclo for si basa è ANTIOR che indica il pin 3 e qundi il ciclo sarà di 3 lampeggi.
Giunti a questo punto avrai già intuito che se invece di collegare i bottoni ai pin 2 e 3 tu li collegassi al pin 5 e 7, ad esempio, dovresti variare il valore delle costanti ORARIO e ANTIOR da 2 e 3 rispettivamente in 5 e 7.
La conseguenza sarebbero più lampeggi alla pressione dei tasti.
Ecco l’effetto dello sketch che hai appena visto:
Buon divertimento.
2 commenti
Vorrei chiederLe un consiglio rispetto ad un motore che possiedo rottamato da una carrozzina per disabili (Mejra) 150W/24 Volts da cui fuoriescono 4 fili: 2 di grosso spessore di colore diverso e 2 di sezione molto più piccola e di colore entrambi nero.
Come posso alimentarlo con regolatore di velocità? Vorrei inviarLe le foto dello stesso, ma come faccio?
grazie giuseppe Litta
Autore
Ciao Giuseppe,
puoi darmi del tu, siamo tutti appassionati.
Non conosco questo tipo di motore, puoi indicarmi la sigla o qualche dato presente sul motore, provo a cercare le specifiche e capire di che tipo si tratta.
Per la foto inviala pure a info @ mauroalfieri . it (togli gli spazi)
P.s.: ho eliminato il tuo numero di cellulare dal commento per evitare che qualche sito NON ben intenzionato se ne appropri e inizi a atempestarti di chiamate pubblicitarie.