Hallo,
ich möchte gerne meinen Schrittmotor mit dem Folientaster steuern können, also einen bestimmten Wert eingeben. Bzw. wie kann ich diesen bestimmten Wert lesen und ausgeben an den Schrittmotor.
Kann mir dazu jemand helfen?
Gruß
Lukas
Hallo,
ich möchte gerne meinen Schrittmotor mit dem Folientaster steuern können, also einen bestimmten Wert eingeben. Bzw. wie kann ich diesen bestimmten Wert lesen und ausgeben an den Schrittmotor.
Kann mir dazu jemand helfen?
Gruß
Lukas
Hallo,
für das keypad gibt es Beispiele. Für Schrittmotore gibt es die auch. Gehe die Aufgabe getrennt an. Erst mit dem Keypad eine Zahl mit mehreren Stellen einlesen und zusammen bauen. Die Eingabe mit einer Taste z.B * als Enter abschliessen. Dann hast Du eine Zahl z.B 1234.
Dann gehst Du den Schrittmotor an. Was willst Du da als Parameter von dem Keypad haben. Position ? Anzahl Schritte.? Was auch immer. Solange Du nur einen Wert eingibst klappt das so.Um einen richtigen Mensch-Maschine Dialog aufzubauen wirst Du noch eine Anzeige benötigen damit Du weist was Du gerade eingeben sollst.
Heinz
Danke für die Antwort, was muss ich denn machen damit ich einen Wert abschließen kann weil momentan setzt er ja nur eine Zahl nach der anderen.
Lukas
Hi
Du definierst Dir eine der Tasten für 'Fertig'.
Vorher musst Du natürlich die eingegebenen Ziffern zu einer Zahl 'zusammen basteln'.
In der ersten Klasse fing Das an mit Ein Zehner und drei Einer sind 13.
Du machst Das genau anders herum:
Beim Start den Wert auf Null stetzen
Mit jeder Ziffer den Wert x 10 und anschließend plus den Wert der Ziffer
Mit dem Stern wird der eingegebene (und mitgerechnete) Wert zum Stepper geschickt, der Wert wieder auf Null gesetzt
Mit Raute wird der Wert direkt auf Null gesetzt (gelöscht)
MfG
Hallo,
hab da gerade mal in meiner Wühlkiste gewühlt. Ob Du da was von brauchen kannst musst Du mal sehen.
/* Beispiel basierend auf Beispiel aus LIB
* Beispiel FolienTastatur zur Eingabe von zwei
* Integer Werten mit der Zuweisung A für Wetr1 B für Wert2
* Eingabe z.B 123A wird der vartablen Wert1 zugewiesen
* Hardware UNO, Keypad
* Nov. 2018 erweitert Mai 2019 auf 2 Werte
*/
#include <Keypad.h>
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
char zeile[10];// Eingabe Zeile
byte i;// Index CString
int wert1, wert2;
void setup() {
Serial.begin(9600);
}
void loop() {
readKeypad();
}
void readKeypad(){
char Key = customKeypad.getKey();
if (Key) { // Taste gedrückt
//Serial.print(Key,DEC);
Serial.print(Key);
//Serial.print(Key,DEC);
if (Key == 65) { // "A" erkannt
zeile[i] = char(0); // C string Endzeichen
wert1 = atoi(zeile);
Serial.print("\n Wert1 ");Serial.println(wert1);
//Serial.print (strlen(zeile));
i = 0; // Zeiger auf Anfang string löschen
}
if (Key == 66) { // "B" erkannt
zeile[i] = char(0);
wert2 = atoi(zeile);
Serial.print("\n Wert2 ");Serial.println(wert2);
i = 0;
}
// Zeichen inten anhängen und Index erhöhen
else if (i < 4 && Key >= 48 && Key <= 57 ) {
zeile[i] = Key;
i++;
}
}
}
Danke für die Hilfe, ich werde mich da mal durchwühlen.
Gruß
Lukas