loop() либо перестает работать, либо перестает работать lcd | кнопки не работают
Я использую комплект Let's Start Coding Ultimate Kit 1 (это был подарок на Рождество, не спрашивайте), и я пытаюсь использовать его для набора текста. Однако я не реализовал настоящие буквы.
#include <MakerScreenXVI.h>;
MakerScreenXVI lcd;
int currentNumber = 1;
int ms = 0;
int totalMS = 0;
bool first = false;
void setup() {
// поместите сюда код установки для однократного запуска:
pinMode(A0, INPUT);
pinMode(A3, INPUT);
lcd.begin();
lcd.print("Success");
lcd.setCursor(0,1);
lcd.print(currentNumber);
}
void loop() {
delay(200);
changeNumber();
delay(200);
}
void clearLCDLine(int line) {
lcd.setCursor(0,line);
for(int n = 0; n < 16; n++) // 20 указывает символы в строке. Для ЖК 2х16 напишите - 16
{
lcd.print(" ");
}
}
void changeNumber() {
if (digitalRead(A0) == LOW) {
if (first == false) {
clearLCDLine(1);
first = true;
} else {
first = false;
}
currentNumber++;
if (currentNumber == 27) {currentNumber = 1;}
lcd.print(currentNumber);
} else if (digitalRead(A3) == LOW) {
currentNumber = currentNumber - 1;
if (currentNumber == 0) {currentNumber = 26;}
//очиститьLCDLine(1);
lcd.print(currentNumber);
}
}
По какой-то причине после удаления 1 он останавливается. На экран ничего не печатается, и с него ничего не стирается. Как я могу это исправить?
Кроме того, кнопки всегда возвращают значение LOW
. Как это исправить?
1 ответ
Лучший ответ:
Кнопки будут посылать НИЗКИЙ сигнал при нажатии, если они установлены с помощью pinMode INPUT_PULLUP.
Проблема с тем, что currentNumber не отображается, заключается в том, что после того, как вы очистите экран с помощью цикла for, вам нужно сбросить курсор в положение 0,1 с помощью lcd.setCursor(0,1);
. В противном случае числа печатаются вне поля зрения.
Если я добавлю lcd.setCursor(0,1);
чуть выше каждой строки с lcd.print(currentNumber);
, я думаю, что код ведет себя так, как вы ищете.
Правка от человека, задавшего вопрос:
Вы также должны добавить задержку около 150-200, иначе одно нажатие будет считаться как много.
Я почему-то что-то сделал (думаю с кнопкой и гнёздами на плате) и обе кнопки уходят в минусы. Я следовал вашим инструкциям. До этого вам нужно было сначала нажать кнопку «вниз» (A3), чтобы другая кнопка работала, а затем она показывала однозначные числа и ноль. Как я могу это исправить?, @BoeingLikesToDab
Если я правильно понимаю, вы внесли некоторые изменения в код, поэтому трудно дать прямой совет, не видя этого. Код, который вы разместили выше, обеспечивает «границы» для переменной currentNumber с операторами «if». Я рекомендую отправить нам электронное письмо по адресу [email protected] с кодом, и мы сможем помочь., @letsstartcoding
- Печать string and integer LCD
- Как отобразить символ º на ЖК-дисплее?
- Отправка значения с одного Arduino на другой
- Черные квадраты дисплея Arduino 16x2
- NodeMCU с RFID RC522 и LCD-модулем интерфейса I2C вместе
- ЖК-дисплей I2C отображает странные символы
- Экран LCD 16*02 I2C показывает только первый напечатанный символ
- Потенциометр 10 кОм против резистора 10 кОм на ЖК-дисплее
LSCU-Kit не знаю, но есть ли на входах подтягивающие резисторы? Если нет, можете ли вы установить штифты с внутренними подтягиваниями и попробовать это?, @the busybee