Когда я запускаю этот код на моем arduino nano по какой-то причине, через некоторое время он, кажется, останавливается. Я пытался загрузить его и ждать 5 минут, но, похоже, это еще не останавливает его.
Кто-нибудь знает, может ли waitforkey () остановить процессорный процессор, например, после слишком долгого ожидания? ? Или у меня может быть какая-то утечка памяти?
#include<Keypad.h>
const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'0', 'E', 'C'}
};
byte rowPins[ROWS] = {8, 7, 6, 9};
byte colPins[COLS] = {2, 3, 4};
char command[4];
char p0;
char p1;
char p2;
char p3;
int count = 0;
int relayPin = 10;
bool solved = false;
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup() {
keypad.setHoldTime(0); // Default is 1000mS
keypad.setDebounceTime(0); // Default is 50mS
pinMode(relayPin, OUTPUT);
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
}
void loop() {
ledCompare(count);
if (solved == true) {
digitalWrite(relayPin, HIGH);
digitalWrite(A0, HIGH);
command[3] = 'E';//makes statement untrue
char key = keypad.waitForKey();
count = 0;
solved = false;
ledsOff();
}
char key = keypad.waitForKey();
if (key == 'C') {
count = 0;
}
else {
command[count] = key;
count++;
}
if (count == 4) {
if (command[0] == p0 && command[1] == p1 && command[2] == p2 && command[3] == p3) {
solved = true;
}
else if(command[0] == p0 && command[1] == p1 && command[2] == p2 && command[3] == p3){
reprogram();
}
else {
ledsOff();
digitalWrite(relayPin, LOW);
solved = false;
count = 0;
}
}
}
void ledsOn() {
digitalWrite(A0, HIGH);//Meest rechter
digitalWrite(A1, HIGH);
digitalWrite(A2, HIGH);
digitalWrite(A3, HIGH);
}
void ledsOff() {
digitalWrite(A0, LOW);//Meest rechter
digitalWrite(A1, LOW);
digitalWrite(A2, LOW);
digitalWrite(A3, LOW);
}
void ledCompare(int x){
if (count >= 1) {
digitalWrite(A3, HIGH);
}
if (count >= 2) {
digitalWrite(A2, HIGH);
}
if (count >= 3) {
digitalWrite(A1, HIGH);
}
}
void reprogram(){
ledsOff();
char key = keypad.waitForKey();
if(key != 'C'){
p0 = key;
digitalWrite(A3, HIGH);
}
else{
reprogram();
}
key = keypad.waitForKey();
if(key != 'C'){
p0 = key;
digitalWrite(A2, HIGH);
}
else{
reprogram();
}
key = keypad.waitForKey();
if(key != 'C'){
p0 = key;
digitalWrite(A1, HIGH);
}
else{
reprogram();
}
key = keypad.waitForKey();
if(key != 'C'){
p0 = key;
digitalWrite(A0, HIGH);
solved = true;
}
else{
reprogram();
}
}