Проблема с кнопкой
Я делаю проект, в котором при нажатии кнопки на ЖК-экране отображается сообщение. Но с множеством проб и ошибок это не дает правильного результата.
Вот схема:
Вот код:
#include <LiquidCrystal.h>
// инициализируем библиотеку, связывая любой необходимый вывод интерфейса ЖК-дисплея
// с номером вывода Arduino, к которому он подключен
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
#define BUTTON 7
void setup() {
// устанавливаем количество столбцов и строк ЖК-дисплея:
lcd.begin(16, 2);
pinMode(BUTTON, INPUT);
}
void loop() {
// устанавливаем курсор в столбец 0, строку 1
// (примечание: строка 1 — это вторая строка, так как отсчет начинается с 0):
lcd.setCursor(0, 0);
// вывести количество секунд с момента сброса:
lcd.print("Press Button");
lcd.setCursor(0,1);
lcd.print("to make COFFEE");
if (digitalRead(BUTTON) == HIGH) {
lcd.clear();
lcd.print("SENT TO MACHINE");
}
}
@James, 👍-2
2 ответа
Лучший ответ:
Похоже, у вас несколько проблем.
Положительное и отрицательное снабжение "rails" на вашей макетной плате не соединены внутри друг с другом. Вы должны добавить плюсовую перемычку.
Вы пытаетесь определить, когда кнопка обеспечивает логический уровень
HIGH
, но это невозможно сделать с текущим "подключением".
Еще одна вещь, которая может помочь определить эту или другую возможную проблему, — это изображение вашей установки под другим углом, чтобы мы могли точно увидеть, как подключены эта кнопка, конденсатор и резистор.
Это место, которое было бы неплохо увидеть под другим углом.
вы должны реализовать подавление дребезга, потому что, когда вы нажимаете кнопку рукой, она будет отскакивать и делать сигнал нестабильным, поэтому нет High/Low, вот документ от Arduino:
https://www.arduino.cc/en/Tutorial/BuiltInExamples/Debounce
- Как заставить ЖК-экран прокручивать текст , позволяя вводить кнопки?
- Закодируйте и подключите ЖК-дисплей и кнопку
- Не остается в подменю
- Как запрограммировать кнопку джойстика, чтобы сбросить все?
- Новичок в Arduino и ищет направление для исследования идеи проекта
- Печать string and integer LCD
- Определение того, была ли нажата и отпущена кнопка
- Отправка значения с одного Arduino на другой
Я не анализировал (во всяком случае) их схему, как вы, но сообщение на ЖК-дисплее указывает на то, что
lcd.print("SENT TO MACHINE");
был выполнен в какой-то момент (из-за завершающего **INE** в первой строке), что, кажется, ставит под сомнение *"нет возможности сделать это"*. Таким образом, вы можете захотеть подтвердить это в ответе, хотя бы для того, чтобы отклонить его, предполагая, что он не информирует вас о том, что в их цепи происходит что-то другое., @timemage@timemage - Вы неправильно меня процитировали. Это «Вы пытаетесь определить, когда кнопка обеспечивает ВЫСОКИЙ логический уровень, но нет возможности сделать это с текущей «проводкой»», что является точным утверждением. Я **также** подозреваю, как и вы, что объявление OP
pinMode(BUTTON, INPUT);
превратило вход в радиоантенну, и это просто вызывает сообщение «SENT TO MACHINE». СОВЕТ: Лучшая часть SE — это тот факт, что несколько человек могут ответить на один и тот же вопрос., @VE7JROЦитата кажется верной. Ваш ответ показывает, что вы неправильно поняли то, что я говорю. То, что вы делаете прямо здесь, в этом комментарии, - это то, что я имел в виду, признавая, что происходит на ЖК-дисплее, хотя бы для того, чтобы отклонить это. Только, не делая этого в ответ. То, что вы говорите о его поведении без подтягивания, соответствует тому, что я думал об этом. Итак, нет необходимости, чтобы мой собственный ответ. Однако ваш ответ можно улучшить, сказав обе эти вещи в самом ответе., @timemage
@timemage - LOL, каждый ответ в каждом стеке SE можно улучшить. Вместо того, чтобы жаловаться на мой ответ, попробуйте опубликовать лучший. Я предлагаю один из тех ответов «книжный отчет». Используйте все инструменты в «панели инструментов для составления ответа», такие как полужирный текст, курсив, H1, H2 и т. д. Убедитесь, что это максимальное количество символов, которое вы можете ввести (30 КБ или сейчас 60 КБ?), потому что это именно что ищет новый пользователь, верно?, @VE7JRO
Это честная попытка быть полезным. Не знаю, что тебя в этом убедит., @timemage
Смысл наличия комментариев под ответами заключается в том, что ответы, которые могут быть неплохими, могут быть дополнительно изменены, чтобы сделать их лучше. Или указать на неточность., @Nick Gammon
Я ценю вашу помощь! Все работает (и извините за плохой ракурс :/ ), @James