Вывод информации на lcd дисплей

vvadim
Offline
Зарегистрирован: 23.05.2012

При вращении шагового двигателя нужно сохранить 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. Но комбинаций нажатия кнопок тьма и прописывать все варианты вывода на дисплей не хочется. Есть ли способ вывода на дисплей буквенной индикации как в моём случае. С цифровой разобрался, а с буквами застрял.

Snubist
Offline
Зарегистрирован: 18.02.2013

Не совсем понятно, что нужно. Если что бы отображалась информация пока нажата кнопка, как это сделано в твоем примере, то просто убери затирание остальных символов.

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");
......

Если что то другое то уточняй

vvadim
Offline
Зарегистрирован: 23.05.2012

Нажал кнопку 1 - под цифрой 1 прописалось S, нажал кнопку 3 - под цифрой 3 прописалось S, но и под единицей осталось и так далее.

Snubist
Offline
Зарегистрирован: 18.02.2013

а стирать когда? При отпускании?

vvadim
Offline
Зарегистрирован: 23.05.2012

стирать при перезагрузке

Snubist
Offline
Зарегистрирован: 18.02.2013

тогда так

в сетап занести 

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");
}

 
vvadim
Offline
Зарегистрирован: 23.05.2012

Я хочу использовать 

 

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("        ");

как главное меню. Из него буду выходить в настроки скорости и потом возвращаться. Как тут быть?

Snubist
Offline
Зарегистрирован: 18.02.2013

не совсем понимаю.

 


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("                 ");

Делает тоже самое.

Snubist
Offline
Зарегистрирован: 18.02.2013

Если ставишь ее в лооп то она постоянно затирает все что вывел. Поэтому либо надо в сетап поставить ее, либо использовать что то другое

vvadim
Offline
Зарегистрирован: 23.05.2012

Вот что то другое и ищу

Клапауций
Offline
Зарегистрирован: 10.02.2013

vvadim пишет:
Вот что то другое и ищу

Видимо, вы ищите функцию функцию lcd.read, которая должна присутсвовать в библиотеке LiquidCrystal, потому как LCD индикатор поддерживает не только функцию записи символов, но и чтения записанного, если LCD подключен по восьми проводам - сам искал, не нашёл.

иначе, вобще непонятно, что вы пытаетесь сделать