Опять прошу помощи, коллеги, не проходите мимо!!!
- Войдите на сайт для отправки комментариев
Пнд, 26/11/2018 - 22:20
Уже обращался за помощью, кратко опишу проблему: у меня есть 4х4 клавиатура, есть переменная температутры, при нажатии на А должен включаться режим набора температуры. Это я решил реализовать через switch. Но возникла проблема, при нажатии 190(у других комбинаций принцип работы тот же, сделал 2 для пробы) все нормально, а при нажатии 180 происходит магия!!! Код из "190" исполняется и в "180". Начал совсем недавно, может не понимаю логики самого switch? Код ниже, прошу помогите!
#include <Keypad.h> // подключаем нашу библиотеку const byte ROWS = 4; //число строк у нашей клавиатуры const byte COLS = 4; //число столбцов у нашей клавиатуры boolean flagok = false; // Флажок категорий boolean flagok1 = false; // Флажок сотен температуры boolean flagok2 = false; // Флажок десятков температуры boolean flagok3 = false; // Фиговый флажок int Flagok = 0; // Флажок цифр сотен int Flagok1 = 0; // Флажок цифр десятков int Flag = 1; 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; } switch (flagok) { case true: char customKey1 = customKeypad.getKey();// Нажатие второе, выбор температуры switch (customKey1) { case '1': flagok1 = true;// Флажок второй Flagok = 1; Serial.println("1##"); temp = temp + 100; break; case '2': flagok1 = true;// Флажок второй Flagok = 2; Serial.println("2##"); temp = temp + 200; break; case '0': flagok1 = true;// Флажок второй Flagok = 0; Serial.println("0##"); temp = temp + 0; break; } break; } switch(flagok1){ case true: char customKey2 = customKeypad.getKey();// Нажатие третье, выбор температуры switch(Flagok){ case 1: switch (customKey2) { case '8': flagok2 = true; Flagok1 = 18; Serial.println("18#"); temp = temp + 80; break; case '9': flagok2 = true; Flagok1 = 19; Serial.println("19#"); temp = temp + 90; break; } break; } break; } switch(flagok2){ case true: char customKey3 = customKeypad.getKey();// Нажатие четвертое, выбор температуры switch(Flagok1){ case 18: switch (customKey3) { case '0': flagok3 = true; Serial.println("180"); Serial.println("Ваша температура:"); Serial.println(temp); break; } case 19: switch (customKey3) { case '0': flagok3 = true; Serial.println("190"); Serial.println("Ваша температура:"); temp = temp + 0; Serial.println(temp); break; } } break; } } // VOID LOOP
вставь задержку в несколько секунд между 133 и 134 строками
лучше на 136 и 148 брейки добавить, а то в кейсах 18 и 19 чего то не хватает ;)