Коллеги, помогите с кодом
- Войдите на сайт для отправки комментариев
Вс, 18/11/2018 - 23:45
Я совсем недавно начал заниматься Ардуино, и похоже не понял где-то самой логики оператора свитч. Данный код должен выводить (Введите температуру) после нажатия A. После при нажатии 1, 2 или 0, выводилось соответственно 1## или 2##. Загвоздка в том, что после нажатия на A и надписи (Введите температуру), программа игнорирует нажатия 1, 2 и 0. Прошу объяснить где накасячил и как исправить. Буду очень благодарен.
#include <Keypad.h> // подключаем нашу библиотеку
const byte ROWS = 4; //число строк у нашей клавиатуры
const byte COLS = 4; //число столбцов у нашей клавиатуры
boolean flagok = false; // Флажок категорий
boolean flagok1 = false; // Флажок сотен температуры
int temp = 0;
char hexaKeys[ROWS][COLS] = {
{'1','4','7','*'}, // здесь мы располагаем названия наших клавиш, как на клавиатуре,для удобства пользования
{'2','5','8','0'},
{'3','6','9','#'},
{'A','B','C','D'}
};
byte rowPins[ROWS] = {5, 4, 3, 2}; //к каким выводам подключаем управление строками
byte colPins[COLS] = {9, 8, 7, 6}; //к каким выводам подключаем управление столбцами
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup(){
Serial.begin(9600);
}
void loop(){
char customKey = customKeypad.getKey();// Нажатие первое, выбор категории "А"
switch(customKey){// Свитч первого нажатия
case 'A':
flagok = true;// Флажок первый
Serial.println("Введите температуру");
break;
default:
flagok = false;// Флажок первый
break;
}
switch(flagok){
case true:
char customKey1 = customKeypad.getKey();// Нажатие второе, выбор температуры
switch(customKey1){
case '1':
flagok1 = true;// Флажок второй
Serial.println("1##");
break;
case '2':
flagok1 = true;// Флажок второй
Serial.println("2##");
break;
case '0':
flagok1 = true;// Флажок второй
Serial.println("0##");
break;
case false:
flagok1 = false;// Флажок второй
break;
}
break;
}
} // VOID LOOP
38 и 45 строки не нравятся.
В момент нажатия на кнопку (А) у Вас flagok = true, а все остально время flagok = false, значит все остальное в коде ни когда ни сработает.
закаментируйте блок default: Тогда заработает и то не корректно, несколько раз придется жать на кнопки 1,2 или 0, пока в монитор порта выскочит информация.
Ох, спасибо помогли,!! Очень вам обязан)))
Большое спасибо за помощь)))) Программа зарабтала, ошибку понял, думаю, что на эти грабли благодаря вам уже не наступлю!! Спасибо вам огромное!!))