Оглавление:
- Шаг 1. Спецификация материалов
- Шаг 2: Схема и Цикрут
- Шаг 3: Код
- Шаг 4: Корректировка значений
- Шаг 5. Проект после критики и обзора
- Шаг 6: После некоторой проданной работы
- Шаг 7: Момент истины
- Шаг 8: Конец
Видео: Клавиатура с одним контактом 4 × 4: 10 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Каждый раз, когда я вижу клавиатуру, она идет с большим количеством контактов, это большая трата ваших контактов Arduino, так что можем ли мы запустить клавиатуру с одним и только одним контактом?. Ответ здесь.
Шаг 1. Спецификация материалов
Аппаратное обеспечение:
01 Arduino UNO
02 Макетные платы
01 ЖК-дисплей с I2C
16 кнопок
04 резисторы 1,5 кОм
04 резисторы 620 Ом
04 резисторы 220 Ом
08 резисторы 100 Ом
01 резистор 1 кОм
07 Перемычки
Программное обеспечение:
Arduino IDE, установленная на вашем ПК
Шаг 2: Схема и Цикрут
Вся идея состоит в том, что у нас есть матрица кнопок 4 * 4, подключенных вертикально к земле правым проводом и горизонтально другим проводом (вывод кнопки) и резисторами 1,5 кОм, 620 Ом, 220 Ом и 100 Ом, концы 4 ряда соединены четырьмя резисторами 100 Ом, как показано на схеме.
Каждый раз, когда вы нажимаете кнопку, вы замыкаете цепь, и ток проходит по другому пути и другой цепочке резисторов, поэтому вывод A0 принимает разные аналоговые показания для каждой кнопки. Все, что вам сейчас нужно, это кодирование.
Шаг 3: Код
#включают
#включают
LiquidCrystal_I2C lcd (0x3f, 20, 4);
int Button = A0;
int readvalue;
установка void ()
{
Serial.begin (9600);
lcd.begin ();
pinMode (Кнопка, ВХОД);
lcd.backlight ();
lcd.print («Привет, мир»);
задержка (2000);
lcd.clear ();
lcd.print («Одноштырьковая клавиатура 4 * 4»);
задержка (2000); }
пустой цикл ()
{
readvalue = analogRead (Кнопка);
Serial.println (значение чтения);
если (readvalue == 852) {lcd.clear (); lcd.print ("A");}
else {если (readvalue == 763) {lcd.clear (); lcd.print ("B");}
else {если (readvalue == 685) {lcd.clear (); lcd.print ("C");}
else {если (readvalue == 965) {lcd.clear (); lcd.print ("D");}
else {если (readvalue == 565) {lcd.clear (); lcd.print ("9");}
else {если (readvalue == 614) {lcd.clear (); lcd.print ("6");}
else {если (readvalue == 360) {lcd.clear (); lcd.print ("3");}
else {если (readvalue == 335) {lcd.clear (); lcd.print ("#");}
else {если (readvalue == 396) {lcd.clear (); lcd.print ("8");}
else {если (readvalue == 349) {lcd.clear (); lcd.print ("5");}
else {если (readvalue == 235) {lcd.clear (); lcd.print ("2");}
else {если (readvalue == 279) {lcd.clear (); lcd.print ("0");}
else {если (readvalue == 452) {lcd.clear (); lcd.print ("7");}
else {если (readvalue == 271) {lcd.clear (); lcd.print ("4");}
else {если (readvalue == 170) {lcd.clear (); lcd.print ("1");}
else {if (readvalue == 92) {lcd.clear (); lcd.print ("*");} else {}}}}}}}}}}}}}}}}}
Шаг 4: Корректировка значений
Когда вы откроете последовательный монитор, он покажет значение 1023, если вы нажмете кнопку, он даст вам другое показание, вы должны принять эти значения и внести некоторые изменения в код.
Шаг 5. Проект после критики и обзора
Нет сомнений в том, что мы все здесь, чтобы учиться и делиться своими знаниями, благодаря некоторым комментариям, оставленным некоторыми людьми из сообщества, которые были очень полезны, я решил внести некоторые корректировки и улучшения в свой проект:
Оборудование:
Я решил спаять все компоненты на печатной плате, чтобы избежать проблем с плохим соединением на макетных платах.
Код:
Друг посоветовал мне использовать средство устранения неполадок программного обеспечения, и это просто цикл (например, цикл «for»), чтобы программа занимала некоторое время, чтобы выбрать чтение. Это означает, что она выполняет много операций чтения (500 на моем экзамене), но требует только последний.
for (i = 1; i <= 500; i ++) {// берем только 500-й аналог чтения
value = analogRead (Button);} // это поможет занять некоторое время, чтобы избежать плохих показаний
Другой друг, благодаря ему, посоветовал мне сравнить «readvalue» с диапазоном значений, а не с одним, потому что «readvalue» принимает множество значений для одной и той же кнопки. Например, «A» дает чтение: 849, 850, 851 852, 853, 854, 855, так что это диапазон из 7 значений: порог (852) и 3 значения слева и справа. здесь нам нужно сравнить абсолютное значение разницы между «readvalue» и «852» с «3».
if (abs (readvalue-852) <= 8) {lcd.clear (); lcd.print ("A");}
Шаг 6: После некоторой проданной работы
Шаг 7: Момент истины
Как вы можете видеть, программа иногда путает кнопки, но она все еще работает, теоретически со схемой все в порядке, но код требует дополнительной калибровки.
Шаг 8: Конец
Надеюсь, вам понравился этот проект, и вы попытаетесь его реализовать, может быть, у вас все получится лучше, чем у меня.
Спрашивайте меня, если у вас есть вопросы, оставляйте комментарии и не забудьте проголосовать за меня, если вам это нравится.
Рекомендуемые:
Sonoff Basic Wifi Extender - Реле с сухим контактом MQTT - Низкое напряжение 5 В постоянного тока: 6 шагов
Sonoff Basic Wifi Extender - реле с сухим контактом MQTT - 5 В постоянного тока, низкое напряжение: Хорошо, у меня было несколько базовых устройств Sonoff первого поколения, и я не хочу использовать их с 220 В, поскольку они еще не были действительно безопасными в той версии. Они лежали какое-то время, ожидая, что с ними что-нибудь сделать, поэтому я наткнулся на мартин-гера
0,96-дюймовый I2C OLED с контактом SMD: 3 шага
0,96-дюймовый I2C OLED с контактом SMD: Материал: 1 плата OPEN-SMART UNO R3 1 x 0,96 дюйма I2C OLED с контактом SMD, 1 экран расширения ввода-вывода, 1 тестовое приспособление, 4 кабеля Dopont Обзор: Красивый модуль дисплея I2C OLED с контактами SMD и PAD для DIY. Его легко припаять к плате Experiment или
Создайте свой наушник с одним сбалансированным якорем - Klipsch X10 + ER4P: 5 шагов
Создайте свой собственный наушник с одной сбалансированной арматурой - Klipsch X10 + ER4P: речь идет о том, как создать один наушник со сбалансированной арматурой, используя оболочку Klipsch X10 и драйвер Knowles BA (используемый в наушниках высокого класса ER4PS). Все материалы доступны на сайте earphonediylabs.com
Как модифицировать серводвигатель для непрерывного вращения (робот-ходунка с одним двигателем): 8 шагов (с изображениями)
Как модифицировать серводвигатель для непрерывного вращения (робот-ходунка с одним двигателем): это руководство является частью одного шагающего робота. Https://www.instructables.com/id/How-to-build-the-one-motor- walker / Я знаю, что существует триллион таких руководств :-) Их брали в школе во время обеденного перерыва с камерой Sony Mavica (флоп
Клавиатура с одним касанием: 4 шага (с изображениями)
Машер с клавиатурой в одно касание: тратите драгоценные секунды на ввод кода каждый раз, когда вам нужно открыть дверь? Это маленькое «устройство» упрощает процесс, нажимая нужные для вас клавиши, и его можно спрятать на ладони, чтобы вы просто пялились рукой о клавиатуру и - приложение