Вопрос по WHILE с переменной CHAR в условии

Тема в разделе "Arduino & Shields", создана пользователем SuperMuh, 24 сен 2015.

  1. SuperMuh

    SuperMuh Нуб

    Здрасьте. Пытаюсь зациклить опрос клавиатуры с помощью while.В условии ставлю, что нажатая клавиша должна быть 1 или 2, но программа пролетает этот цикл насквозь... Что не так, подскажите, пожалуйста.

    Вот отрывок:
    Код (Text):

    void loop()
    {
        myGLCD.print("B""\x8B""\xB1""ep""\xB8""\x82""e", CENTER, 3); //Печатаем "Выберите"
        myGLCD.print("\xBF""po""\xB3""pa""\xBC""\xBC""\x83", CENTER, 10); //Печатаем "программу"
        myGLCD.update(); //заливаем из буфера на экран
       
        //опрос клавиатуры
        if ((Keypad.Key_State() == 3))    // не нажата = 0, нажата = 1, отжата = 2,  зажата = 3
        {
          while(keypress != '1' || keypress !='2')
           {
              char keypress = Keypad.Getkey();  // помещаем результат нажатой клавиши в переменную 'keypress' типа char
              while ((Keypad.Key_State())){}  // оставаться здесь, пока клавиша нажата - клава срабатывает на отжатие
              myGLCD.print(String (keypress), CENTER, 30); //преобразуем char в String для вывода на экран
              myGLCD.update();
           }
        }
        myGLCD.clrScr(); //очищаем экран
        myGLCD.update();
     
     
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    А тут: while(keypress != '1' || keypress !='2') написано "не должна быть 1 или не должна быть 2".
     
  3. SuperMuh

    SuperMuh Нуб

    Исправил, но даже так пролетает... Надо как-то оставить его в цикле, чтобы считать нужную кнопку...
     
  4. vvr

    vvr Инженерище

    а чем if не устраивает
     
  5. Вадыч

    Вадыч Нерд

    Что значит пролетает?
    У Вас keypress определяется внутри цикла. Не пойму как компилятор пропустил
     
  6. SuperMuh

    SuperMuh Нуб

    сделал. но малость через **** for))

    а вообще ошибка тут была в том, что while надо было ставить двумя строчками выше - сразу перед if
     
  7. SuperMuh

    SuperMuh Нуб

    Да! и еще пришлось char keypress переписать в int и работать уже с числовыми значениями