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
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:
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!