Вывод информации на lcd дисплей
- Войдите на сайт для отправки комментариев
Сб, 24/08/2013 - 22:17
При вращении шагового двигателя нужно сохранить 4 положения при нажатии на 4 кнопки с выводом события на дисплей.
lcd.setCursor(0,0);
lcd.print("1 2 3 4 ");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(1,1);
lcd.print(" ");
lcd.setCursor(2,1);
lcd.print(" ");
lcd.setCursor(3,1);
lcd.print(" ");
lcd.setCursor(4,1);
lcd.print(" ");
lcd.setCursor(5,1);
lcd.print(" ");
lcd.setCursor(6,1);
lcd.print(" ");
lcd.setCursor(7,1);
lcd.print(" ");
if(Button1State == HIGH) savedPos1 = stepper.currentPosition();
lcd.setCursor(0,0);
lcd.print("1 2 3 4 ");
lcd.setCursor(0,1);
lcd.print("S");
lcd.setCursor(1,1);
lcd.print(" ");
lcd.setCursor(2,1);
lcd.print(" ");
lcd.setCursor(3,1);
lcd.print(" ");
lcd.setCursor(4,1);
lcd.print(" ");
lcd.setCursor(5,1);
lcd.print(" ");
lcd.setCursor(6,1);
lcd.print(" ");
lcd.setCursor(7,1);
lcd.print(" ");
и так аналогично для других трёх кнопок под номером кнопки выводится S. Но комбинаций нажатия кнопок тьма и прописывать все варианты вывода на дисплей не хочется. Есть ли способ вывода на дисплей буквенной индикации как в моём случае. С цифровой разобрался, а с буквами застрял.
Не совсем понятно, что нужно. Если что бы отображалась информация пока нажата кнопка, как это сделано в твоем примере, то просто убери затирание остальных символов.
lcd.setCursor(0,0); lcd.print("1 2 3 4 "); lcd.setCursor(0,1); lcd.print(" "); lcd.setCursor(1,1); lcd.print(" "); lcd.setCursor(2,1); lcd.print(" "); lcd.setCursor(3,1); lcd.print(" "); lcd.setCursor(4,1); lcd.print(" "); lcd.setCursor(5,1); lcd.print(" "); lcd.setCursor(6,1); lcd.print(" "); lcd.setCursor(7,1); lcd.print(" "); if(Button1State == HIGH) savedPos1 = stepper.currentPosition(); lcd.setCursor(0,0); lcd.print("1 2 3 4 "); lcd.setCursor(0,1); lcd.print("S"); if(Button2State == HIGH) savedPos2 = stepper.currentPosition(); lcd.setCursor(0,0); lcd.print("1 2 3 4 "); lcd.setCursor(2,1); lcd.print("S"); ......Если что то другое то уточняй
Нажал кнопку 1 - под цифрой 1 прописалось S, нажал кнопку 3 - под цифрой 3 прописалось S, но и под единицей осталось и так далее.
а стирать когда? При отпускании?
стирать при перезагрузке
тогда так
в сетап занести
lcd.setCursor(0,0); lcd.print("1 2 3 4 "); lcd.setCursor(0,1); lcd.print(" ");В лооп
if(Button1State == HIGH) { savedPos1 = stepper.currentPosition(); lcd.setCursor(0,1); lcd.print("S"); } if(Button2State == HIGH) { savedPos2 = stepper.currentPosition(); lcd.setCursor(2,1); lcd.print("S"); }Я хочу использовать
lcd.setCursor(0,0); lcd.print("1 2 3 4 "); lcd.setCursor(0,1); lcd.print(" "); lcd.setCursor(1,1); lcd.print(" "); lcd.setCursor(2,1); lcd.print(" "); lcd.setCursor(3,1); lcd.print(" "); lcd.setCursor(4,1); lcd.print(" "); lcd.setCursor(5,1); lcd.print(" "); lcd.setCursor(6,1); lcd.print(" "); lcd.setCursor(7,1); lcd.print(" ");как главное меню. Из него буду выходить в настроки скорости и потом возвращаться. Как тут быть?
не совсем понимаю.
lcd.setCursor(1,1); lcd.print(" "); lcd.setCursor(2,1); lcd.print(" "); lcd.setCursor(3,1); lcd.print(" "); lcd.setCursor(4,1); lcd.print(" "); lcd.setCursor(5,1); lcd.print(" "); lcd.setCursor(6,1); lcd.print(" "); lcd.setCursor(7,1); lcd.print(" ")Ты просто стираешь вторую строку дисплея. (заносишь пробелы в каждую ячейку конкретно указывая ее)
выражение
lcd.setCursor(0,1); lcd.print(" ");Делает тоже самое.
Если ставишь ее в лооп то она постоянно затирает все что вывел. Поэтому либо надо в сетап поставить ее, либо использовать что то другое
Вот что то другое и ищу
Видимо, вы ищите функцию функцию lcd.read, которая должна присутсвовать в библиотеке LiquidCrystal, потому как LCD индикатор поддерживает не только функцию записи символов, но и чтения записанного, если LCD подключен по восьми проводам - сам искал, не нашёл.
иначе, вобще непонятно, что вы пытаетесь сделать