Помощь с LCD

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

  1. KellaKilla

    KellaKilla Нерд

    Доброго времени суток.

    Захотел выводить двузначные числа на экран ( собираю термостат), но к сожалению ничего путнего в обсуждениях не нашел. Итак вопрос - в какую строну смотреть инфу, или может кто либо мыслью поделится о том, как вывести не экран числа 12 или 13 ( двузначные).
    Почему то в примерах по подключению клавиатур есть всякие разные варианты, а такого нужного - как отображение двух и трехзначных чисел нема :(
     
  2. X-Dron

    X-Dron Гик

    LCD как подключен? 6-ю проводами или по I2C?
     
  3. KellaKilla

    KellaKilla Нерд

    Да, подключение по I2C клавиатура матричная 4x4.
     
  4. X-Dron

    X-Dron Гик

    А причем здесь клавиатура? Вы же собираетесь выводить число на экран LCD16x2 или я ошибаюсь?
    Или проблема с вводом? Т.е. хотите ввести двухзначное число с клавы и отобразить на экране?
    Формулируйте задачу правильно.
    Правильно поставленная перед собой задача - половина решения.
     
  5. KellaKilla

    KellaKilla Нерд

    Необходимо ввести двухзначное число с клавиатуры и отобразить его на экране.
     
  6. KellaKilla

    KellaKilla Нерд

    Да, криво написал в стартовом топике :(
     
  7. X-Dron

    X-Dron Гик

    Алгоритм:
    1.Перевести контроллер нажатием определенной клавиши, например #, в режим ввода значения.
    2.Включить курсор, перевести его на первую цифру ввода. Можно сделать мигающим.
    3.Прекратить вывод на экран числа из переменной1, оставив последнее значение.
    4.Отслеживать ввод с клавиатуры цифры.
    5.Когда цифра введена записать ее в первое поле ввода, сохранить в переменную2. Передвинуть курсор на позицию.
    6.Отслеживать ввод с клавиатуры цифры.
    7.Когда цифра введена записать ее во второе поле ввода, сохранить в переменную3.
    8.Вычислить переменную1 = переменная2*10+переменная3. Неплохо бы записать в EEPROM.
    9.Отключить курсор.
    10.Начать вывод переменной1 на экран.

    Если при выполнении аглоритма на была нажата клавиша *, то переходим сразу на пункт 9.

    У меня нет ни клавы, ни дисплея. Поэтому помочь в реализации могу только чисто теоретически.
     
    KellaKilla нравится это.
  8. Пушной звер

    Пушной звер Оракул Модератор

    первое число умножит на 10 и прибавить второе
     
    KellaKilla нравится это.
  9. KellaKilla

    KellaKilla Нерд

    Всем спасибо за участие, завтре буду пробовать.
     
  10. X-Dron

    X-Dron Гик

    Как успехи? получилось?
     
  11. KellaKilla

    KellaKilla Нерд

    И да, и нет :)
    Сам алгоритм работает, немного подтупил сегодня с подключением клавиатуры, завтра, думаю все настрою.
    Выложу пока сам просто отображение заранее заданных чисел, с мигающим курсором может кому нибудь и это сгодится
    Код (Text):
    #include <LiquidCrystal.h>
    LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
    int i=1;
    int b=2;
    int g;
    void setup()
    {
      //преветственный экран
      lcd.begin(20, 4); //установка экрана
    }
    void loop()
    {
    lcd.setCursor(3,2);
    lcd.print(i);
    lcd.cursor();
    delay(1000);
    lcd.setCursor(4,2);
    lcd.print(b);
    lcd.cursor();
    delay(1000);
    g=10*i+b;
    lcd.clear();
    lcd.setCursor(0,3);
    lcd.print(g);
    delay(5000);


    }
     
     
  12. KellaKilla

    KellaKilla Нерд

    Ага, вот и проблемка - экран не корректно отображает переменные типа int, вместо значения цифры клавиатуры выводит её цифровой код. Чтобы этого не случилось, необходимо использовать переменную типа char, но вот строчка умножения совсем никуда не годится - выводится не числовое значение, а символ соответствующий произведению двух чисел.