Hallo,
ich möchte mithilfe eines PIN Codes einen Motor ansteuern. Das funktioniert soweit auch schon.
Folgendes möchte ich erreichen:
- richtige Eingabe des PINs => Motor dreht links herum
- richtige Eingabe des PINs => Motor drehts rechts herum
- richtige Eingabe des PINs => Motor dreht links herum
usw. also immer abwechselnd links / rechts.
Bei falschem PIN darf natürlich nichts passieren.
Habe es schon soweit hinbekommen, dass der Motor bei richtigem PIN in eine Richtung dreht. Bei der nächsten richtigen Eingabe dreht er aber wieder in dieselbe Richtung.
#include <Stepper.h>
#include <Keypad.h>
#define STEPS 32
int Steps2Take;
const byte PINLENGTH = 4;
char pinCode[PINLENGTH+1] = {'0','8','1','5'};
char keyBuffer[PINLENGTH+1] = {'-','-','-','-'};
const byte ROWS = 4;
const byte COLS = 4;
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};
byte colPins[COLS] = {5, 4, 3, 2};
Stepper small_stepper(STEPS, 10, 12, 11, 13);
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup(){
Serial.begin(9600);
}
void loop(){
char customKey = customKeypad.getKey();
if (customKey) {
if ((int(customKey) >= 48) && (int(customKey) <= 57)){
addToKeyBuffer(customKey);
}
else if (customKey == '#') {
checkKey();
}
}
}
void addToKeyBuffer(char inkey) {
Serial.print(inkey);
Serial.print(" > ");
for (int i=1; i<PINLENGTH; i++) {
keyBuffer[i-1] = keyBuffer[i];
}
keyBuffer[PINLENGTH-1] = inkey;
Serial.println(keyBuffer);
}
void checkKey() {
if (strcmp(keyBuffer, pinCode) == 0) {
Serial.println("CORRECT");
}
else {
Serial.println("WRONG!");
}
for (int i=0; i < PINLENGTH; i++) {
keyBuffer[i] = '-';
}
}
switch(results.value)
void pinCorrect() {
small_stepper.setSpeed(1000);
Steps2Take = 2048;
small_stepper.step(Steps2Take);
delay(2000);
}
void pinCorrect() {
small_stepper.setSpeed(1000);
Steps2Take = -2048;
small_stepper.step(Steps2Take);
delay(2000);
}
void pinWrong() {
small_stepper.setSpeed(1000);
Steps2Take = 0;
small_stepper.step(Steps2Take);
delay(2000);
}
Könnt ihr mir hier weiterhelfen?