Опять прошу помощи, коллеги, не проходите мимо!!!

Борис2905
Offline
Зарегистрирован: 18.11.2018

Уже обращался за помощью, кратко опишу проблему: у меня есть 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

 

 

DIVGENY
Offline
Зарегистрирован: 23.08.2016

вставь задержку в несколько секунд между 133 и 134  строками

Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018

лучше на 136 и 148 брейки добавить, а то в кейсах 18 и 19 чего то не хватает ;)