Hi all,
I think i have a small error in my code but i cant find it. Please help!
const int button1 = 1;
const int button2 = 3;
const int button3 = 5;
const int button4 = 7;
const int LedA = 2;
const int LedB = 4;
const int LedC = 6;
const int LedD = 8;
int code[] = {1, 2, 3, 4, 1, 2, 3, 4, 1, 2};
int entered[10];
int mode = 1;//mode 0=keypad 1=spel
void setup() {
Serial.begin(9600);
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
pinMode(button3, INPUT_PULLUP);
pinMode(button4, INPUT_PULLUP);
pinMode(LedA, OUTPUT);
pinMode(LedB, OUTPUT);
pinMode(LedC, OUTPUT);
pinMode(LedD, OUTPUT);
digitalWrite(LedA, LOW);
digitalWrite(LedB, LOW);
digitalWrite(LedC, LOW);
digitalWrite(LedD, LOW);
Serial.println("SETUP READY");
}
void loop() {
voorbeeld();
mode = 1;
while (mode == 1) {
spel();
}
}
void spel() {
if (digitalRead(button1) == LOW) {
digitalWrite(LedA, HIGH);
Serial.println("KNOP 1");
delay(500);
digitalWrite(LedA, LOW);
checkInput1(1);
}
else if (digitalRead(button2) == LOW) {
digitalWrite(LedB, HIGH);
Serial.println("KNOP 2");
delay(500);
digitalWrite(LedB, LOW);
checkInput1(2);
}
else if (digitalRead(button3) == LOW) {
digitalWrite(LedC, HIGH);
Serial.println("KNOP 3");
delay(500);
digitalWrite(LedC, LOW);
checkInput1(3);
}
else if (digitalRead(button4) == LOW) {
digitalWrite(LedD, HIGH);
Serial.println("KNOP 4");
delay(500);
digitalWrite(LedD, LOW);
checkInput1(4);
}
}
void checkInput1(int button) {
if (entered[0] != 0) {
checkInput2(button);
}
else if (entered[0] == 0) {
entered[0] = button;
if (entered[0] == code [0]) {
Serial.println("input 1: Goed");
}
else {
Serial.println("Input 1: Fout");
entered[0] = 0;
entered[1] = 0;
entered[2] = 0;
entered[3] = 0;
entered[4] = 0;
entered[5] = 0;
entered[6] = 0;
entered[7] = 0;
entered[8] = 0;
entered[9] = 0;
voorbeeld();
}
}
}
void checkInput2(int button) {
if (entered[1] != 0) {
checkInput3(button);
}
else if (entered[1] == 0) {
entered[1] = button;
if (entered[1] == code [1]) {
Serial.println("input 2: Goed");
}
else {
Serial.println("Input 2: Fout");
entered[0] = 0;
entered[1] = 0;
entered[2] = 0;
entered[3] = 0;
entered[4] = 0;
entered[5] = 0;
entered[6] = 0;
entered[7] = 0;
entered[8] = 0;
entered[9] = 0;
voorbeeld();
}
}
}
void checkInput3(int button) {
if (entered[2] != 0) {
checkInput4(button);
}
else if (entered[2] == 0) {
entered[2] = button;
if (entered[2] == code [2]) {
Serial.println("input 3: Goed");
}
else {
Serial.println("Input 3: Fout");
entered[0] = 0;
entered[1] = 0;
entered[2] = 0;
entered[3] = 0;
entered[4] = 0;
entered[5] = 0;
entered[6] = 0;
entered[7] = 0;
entered[8] = 0;
entered[9] = 0;
voorbeeld();
}
}
}
void checkInput4(int button) {
if (entered[3] != 0) {
checkInput5(button);
}
else if (entered[3] == 0) {
entered[3] = button;
if (entered[3] == code [3]) {
Serial.println("input 4: Goed");
}
else {
Serial.println("Input 4: Fout");
entered[0] = 0;
entered[1] = 0;
entered[2] = 0;
entered[3] = 0;
entered[4] = 0;
entered[5] = 0;
entered[6] = 0;
entered[7] = 0;
entered[8] = 0;
entered[9] = 0;
voorbeeld();
}
}
}
void checkInput5(int button) {
if (entered[4] != 0) {
checkInput6(button);
}
else if (entered[4] == 0) {
entered[4] = button;
if (entered[4] == code [4]) {
Serial.println("input 5: Goed");
}
else {
Serial.println("Input 5: Fout");
entered[0] = 0;
entered[1] = 0;
entered[2] = 0;
entered[3] = 0;
entered[4] = 0;
entered[5] = 0;
entered[6] = 0;
entered[7] = 0;
entered[8] = 0;
entered[9] = 0;
voorbeeld();
}
}
}
void checkInput6(int button) {
if (entered[5] != 0) {
checkInput7(button);
}
else if (entered[5] == 0) {
entered[5] = button;
if (entered[5] == code [5]) {
Serial.println("input 6: Goed");
}
else {
Serial.println("Input 6: Fout");
entered[0] = 0;
entered[1] = 0;
entered[2] = 0;
entered[3] = 0;
entered[4] = 0;
entered[5] = 0;
entered[6] = 0;
entered[7] = 0;
entered[8] = 0;
entered[9] = 0;
voorbeeld();
}
}
}
void checkInput7(int button) {
if (entered[6] != 0) {
checkInput8(button);
}
else if (entered[6] == 0) {
entered[6] = button;
if (entered[6] == code [6]) {
Serial.println("input 7: Goed");
}
else {
Serial.println("Input 7: Fout");
entered[0] = 0;
entered[1] = 0;
entered[2] = 0;
entered[3] = 0;
entered[4] = 0;
entered[5] = 0;
entered[6] = 0;
entered[7] = 0;
entered[8] = 0;
entered[9] = 0;
voorbeeld();
}
}
}
void checkInput8(int button) {
if (entered[7] != 0) {
checkInput9(button);
}
else if (entered[7] == 0) {
entered[7] = button;
if (entered[7] == code [7]) {
Serial.println("input 8: Goed");
}
else {
Serial.println("Input 8: Fout");
entered[0] = 0;
entered[1] = 0;
entered[2] = 0;
entered[3] = 0;
entered[4] = 0;
entered[5] = 0;
entered[6] = 0;
entered[7] = 0;
entered[8] = 0;
entered[9] = 0;
voorbeeld();
}
}
}
void checkInput9(int button) {
if (entered[8] != 0) {
checkInput10(button);
}
else if (entered[8] == 0) {
entered[8] = button;
if (entered[8] == code [8]) {
Serial.println("input 9: Goed");
}
else {
Serial.println("Input 9: Fout");
entered[0] = 0;
entered[1] = 0;
entered[2] = 0;
entered[3] = 0;
entered[4] = 0;
entered[5] = 0;
entered[6] = 0;
entered[7] = 0;
entered[8] = 0;
entered[9] = 0;
voorbeeld();
}
}
}
void checkInput10(int button) {
if (entered[9] != 0) {
Serial.println("???");
}
else if (entered[9] == 0) {
entered[9] = button;
if (entered[9] == code [9]) {
Serial.println("input 10: Goed");
}
else {
Serial.println("Input 10: Fout");
entered[0] = 0;
entered[1] = 0;
entered[2] = 0;
entered[3] = 0;
entered[4] = 0;
entered[5] = 0;
entered[6] = 0;
entered[7] = 0;
entered[8] = 0;
entered[9] = 0;
voorbeeld();
}
}
}
void voorbeeld() {
digitalWrite(LedA, HIGH);
digitalWrite(LedB, HIGH);
digitalWrite(LedC, HIGH);
digitalWrite(LedD, HIGH);
delay(1000);
digitalWrite(LedA, LOW);
digitalWrite(LedB, LOW);
digitalWrite(LedC, LOW);
digitalWrite(LedD, LOW);
delay(700);
digitalWrite(LedA, HIGH);
delay(300);
digitalWrite(LedA, LOW);
delay(300);
digitalWrite(LedB, HIGH);
delay(300);
digitalWrite(LedB, LOW);
delay(300);
digitalWrite(LedC, HIGH);
delay(300);
digitalWrite(LedC, LOW);
delay(300);
digitalWrite(LedD, HIGH);
delay(300);
digitalWrite(LedD, LOW);
delay(300);
digitalWrite(LedA, HIGH);
delay(300);
digitalWrite(LedA, LOW);
delay(300);
digitalWrite(LedB, HIGH);
delay(300);
digitalWrite(LedB, LOW);
delay(300);
digitalWrite(LedC, HIGH);
delay(300);
digitalWrite(LedC, LOW);
delay(300);
digitalWrite(LedD, HIGH);
delay(300);
digitalWrite(LedD, LOW);
delay(300);
digitalWrite(LedA, HIGH);
delay(300);
digitalWrite(LedA, LOW);
delay(300);
digitalWrite(LedB, HIGH);
delay(300);
digitalWrite(LedB, LOW);
delay(300);
}
My serial monitor prints:
SETUP READY
input 1: Goed
KNOP 1
Input 2: Fout
Kinput 1: Goed
KNOP 1
Input 2: Fout
input 1: Goed
KNOP 1
Input 2: Fout
The problem:
After I press button 1 it checks the first input but directly after that it will detect another push on button 1 (which makes input 2 wrong)
Something else is a bith off since it doesnt print everything to the serial monitor right ( should be KNOP 1). Does this have anything to do with my problem?
I tried disconnecting the button1 and replacing the button1. This problem only occours with button1 so i suspect an error in my code.
thanks!