Доброго времени суток. Захотел выводить двузначные числа на экран ( собираю термостат), но к сожалению ничего путнего в обсуждениях не нашел. Итак вопрос - в какую строну смотреть инфу, или может кто либо мыслью поделится о том, как вывести не экран числа 12 или 13 ( двузначные). Почему то в примерах по подключению клавиатур есть всякие разные варианты, а такого нужного - как отображение двух и трехзначных чисел нема
А причем здесь клавиатура? Вы же собираетесь выводить число на экран LCD16x2 или я ошибаюсь? Или проблема с вводом? Т.е. хотите ввести двухзначное число с клавы и отобразить на экране? Формулируйте задачу правильно. Правильно поставленная перед собой задача - половина решения.
Алгоритм: 1.Перевести контроллер нажатием определенной клавиши, например #, в режим ввода значения. 2.Включить курсор, перевести его на первую цифру ввода. Можно сделать мигающим. 3.Прекратить вывод на экран числа из переменной1, оставив последнее значение. 4.Отслеживать ввод с клавиатуры цифры. 5.Когда цифра введена записать ее в первое поле ввода, сохранить в переменную2. Передвинуть курсор на позицию. 6.Отслеживать ввод с клавиатуры цифры. 7.Когда цифра введена записать ее во второе поле ввода, сохранить в переменную3. 8.Вычислить переменную1 = переменная2*10+переменная3. Неплохо бы записать в EEPROM. 9.Отключить курсор. 10.Начать вывод переменной1 на экран. Если при выполнении аглоритма на была нажата клавиша *, то переходим сразу на пункт 9. У меня нет ни клавы, ни дисплея. Поэтому помочь в реализации могу только чисто теоретически.
И да, и нет Сам алгоритм работает, немного подтупил сегодня с подключением клавиатуры, завтра, думаю все настрою. Выложу пока сам просто отображение заранее заданных чисел, с мигающим курсором может кому нибудь и это сгодится Код (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); }
Ага, вот и проблемка - экран не корректно отображает переменные типа int, вместо значения цифры клавиатуры выводит её цифровой код. Чтобы этого не случилось, необходимо использовать переменную типа char, но вот строчка умножения совсем никуда не годится - выводится не числовое значение, а символ соответствующий произведению двух чисел.