Stepper motor e tastierino numerico

Ciao a tutti!

Ho un problemino da risolvere…

Il mio progetto prevede l’inserimento di un numero tramite una tastiera e questo numero deve essere il numero di giri del motore.

Come posso fare?

Grazie mille!
Leo

cosa hai gia comprato/ programmato? Ciao Uwe

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni e a leggere il regolamento se non lo hai già fatto: Regolamento Qui una serie di link utili, non inerenti al tuo problema: - qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections - qui le pinout delle varie schede by xxxPighi: Pinout - qui una serie di link [u]generali[/u] utili: Link Utili

Ciao Uwe. Ho comprato tutto e ho praticamente scritto il programma ma appunto mi manca questa parte. Premetto che conosco veramente poco di c /c++ in quanto ho appena iniziato. Se vuoi ti giro quello che ho scritto. Grazie per la disponibilità!

Sí dici cosa hai come motore/driver/tastiera, come l' hai collegato e il sketch che hai scritto. Ciao Uwe

Tastiera: Tastiera

Motore Stepper Nema 23: Stepper

Driver Tb 6560: Driver

Collegamento Driver: Collegamento Driver

Sketch:

#include <Keypad.h>

int giri = 0;
int passi = 0;

const byte righe = 4;
const byte colonne = 4;

byte pinRighe[righe] = {9, 8, 7, 6};
byte pinColonne[colonne] = {5, 4, 3, 2};

char tasti[righe][colonne] = {
 
 {'1','2','3','A'},
 {'4','5','6','B'},
 {'7','8','9','C'},
 {'*','0','#','D'}
 
};

Keypad tastiera = Keypad(makeKeymap(tasti), pinRighe, pinColonne, righe, colonne);

char tasto;

void setup() {
 
 Serial.begin(9600);
 
 pinMode(10, OUTPUT); //CW (direzione)
 pinMode(11, OUTPUT); //CLK (step)
 
 digitalWrite(10, LOW);
 digitalWrite(11, LOW);
 
 passi = passi + 1;
 giri = giri + 1;
 
}

void loop() {
 
 tasto = tastiera.getKey(); 
 
 digitalRead(tasto);
 
 if(tasto != 0) {
   
   Serial.print(tasto);
   delay(100);
   
 }
 
 if(tasto == 'A') {
   
   Serial.print("Avvio..."); 
   delay(2000);
   
   while(giri < tasto) {
   
     for(passi = 0; passi < 1600; passi++) { 
       
       digitalWrite(11, HIGH);
       delayMicroseconds(250);
       digitalWrite(11, LOW);
       delayMicroseconds(250);
       
     }     
     
     delay(2000);
     
     if(passi == 1600) {
       
       digitalWrite(11, LOW);
       
     }
     
     giri++;
     
   }
 }
}

Ci saranno sicuramente grossissimi errori dovuti alla mia non conoscenza del linguaggio, ma sto imparando. Mi scuso se ho scritto bestiate!

Grazie!