Дисплей LCD 1602 подключение к Ардуино по i2c

LCD дисплей Arduino позволяет визуально отображать данные с датчиков. Расскажем, как правильно подключить модуль QAPASS LCD к Arduino по I2C и рассмотрим основные команды инициализации и управления LCD 1602. Также рассмотрим различные функции в языке программирования C++, для вывода текстовой информации на дисплее, который часто требуется использовать в проектах Ардуино.

Как подключить к Arduino LCD без I2C

Текстовый экран 16×2 используется для вывода информации с датчиков, отображения меню или подсказок. На экране выводятся черные символы размером 5×8 пикселей. Встроенная подсветка включается подачей питания на пины модуля. Текстовый дисплей 16×2 без модуля IIC подключается к микроконтроллеру через 16 контактов. Распиновка экрана с примером подключения размещена ниже.

Для этого занятия нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • LCD монитор 1602 i2c;
  • провода «папа-мама».
LCD 1602 i2c Arduino Uno Arduino Nano Arduino Mega
GND GND GND GND
VCC 5V 5V 5V
SDA A4 A4 20
SCL A5 A5 21

Жидкокристаллический дисплей имеет 2 ряда по 16 символов, отсюда и его название LCD 1602. В память устройства встроено 192 знака, еще 8 знаков может определить сам пользователь. При подключении дисплея без IIC модуля потребуется использовать 6 портов общего назначения у микроконтроллера Arduino, не считая питания. Соберите схему, как на картинке выше и загрузите следующую программу в плату.

Скетч. Ардуино и LCD 1602 без I2C модуля

Пояснения к коду:

  1. для данного примера используется стандартная библиотека LiquidCrystal.h для QAPASS, которая не поддерживает кириллицу;
  2. чтобы упростить схему и не использовать большое количество пинов микроконтроллера, следует использовать дисплей с модулем I2C.

Принцип работы I2C интерфейса Arduino

I2C — последовательная двухпроводная шина для связи интегральных схем внутри электронных приборов, известна, как I²C или IIC (англ. Inter-Integrated Circuit). I²C была разработана фирмой Philips в начале 1980-х годов, как простая 8-битная шина для внутренней связи между схемами в управляющей электронике (например, в компьютерах на материнских платах, в мобильных телефонах и т.д.).

В простой системе I²C может быть несколько ведомых устройств и одно ведущее устройство, которое инициирует передачу данных и синхронизирует сигнал. К линиям SDA (линия данных) и SCL (линия синхронизации) можно подключить несколько ведомых устройств. Часто ведущим устройством является контроллер Ардуино, а ведомыми устройствами: часы реального времени или LCD Display.

Как подключить LCD 1602 I2C к Arduino

Жидкокристаллический дисплей 1602 с I2C модулем подключается к плате Ардуино всего 4 проводами — 2 провода данных и 2 провода питания. Подключение QAPASS 1602a к Arduino проводится стандартно для шины I2C: вывод SDA подключается к порту A4, вывод SCL – к порту A5. Питание LCD дисплея осуществляется от порта +5V. Смотрите подробнее схему подключения жк монитора 1602 на фото ниже.

После подключения LCD монитора к Ардуино через I2C вам потребуется установить библиотеку LiquidCrystal_I2C.h для работы с LCD дисплеем по интерфейсу I2C и библиотека Wire.h (имеется в стандартной программе Arduino IDE). Скачать рабочую библиотеку LiquidCrystal_I2C.h для LCD 1602 с модулем I2C можно на странице Библиотеки для Ардуино на нашем сайте по прямой ссылке с Google Drive.

Скетч для жк дисплея QAPASS 1602 I2C

Пояснения к коду:

  1. перед выводом информации на дисплей, необходимо задать положение курсора командой setCursor(0,1) , где 0 — номер символа в строке, 1 — номер строки;
  2. в отличии от clear() — команда noDisplay() не удаляет надпись, а отключает ее вывод на дисплее и ее можно снова показать.

Подключение двух дисплеев по I2C

По умолчанию у всех дисплеев 1602 с модулем I2C адрес — «0x27», но можно изменить адрес текстового экрана и узнать его через сканер iic шины. Таким образом, если у вас есть необходимость подключить к одному микроконтроллеру несколько дисплеев 1602, то следует изменить адреса устройств, что бы не было совпадений. Давайте рассмотрим, каким образом изменить IIC адрес жидкокристаллического дисплея.

Если перевернуть дисплей и посмотреть на IIC модуль (смотри фото выше), то там можно заметить контакты, обозначенные, как «A0», «A1» и «A2». Если по умолчанию LCD имеет адрес «0x27» на шине IIC, то замкнув перемычку «A0», адрес дисплея сменится на «0x26». Таким образом, к одной шине можно подключить несколько дисплеев, не забыв указать их адреса в скетче — смотри следующий пример кода.

Скетч. Подключение нескольких LCD 1602 к шине i2c

Перед загрузкой следующего скетча, сначала соберите схему с двумя дисплеями и просканируйте шину IIC. Это необходимо сделать, чтобы убедится в том, что плата Arduino «видит» оба устройства на шине. А также перепроверить правильность адресов. После этого можно загружать следующий код, который позволит управлять сразу двумя дисплеями с модулями IIC от одного микроконтроллера Arduino Uno.

Пояснения к коду:

  1. в программе у каждого дисплея имя должно быть уникальным.

Библиотека LiquidCrystal_I2C.h для LCD дисплея

В следующем примере разберем сразу несколько возможностей, которая дает библиотека LiquidCrystal_I2C Arduino (на самом деле мы взяли команды из стандартной библиотеки). Продемонстрируем вывод мигающего курсора, как убрать надпись с экрана на некоторое время без удаления и, как управлять подсветкой дисплея из кода программы. Для этого загрузите в Ардуино следующий код программы.

Скетч. Описание библиотеки LiquidCrystal_I2C.h

Пояснения к коду:

  1. библиотека LiquidCrystal_I2C.h содержит встроенные команды для управления LCD дисплея по шине I²C и позволяет значительно упростить скетч.
  2. читайте также про возможность авто прокрутки строки на дисплее Ардуино.

Заключение: Используя программы Ардуино для lcd 1602a из этой записи и схему подключения lcd 1602 к Ардуино по i2c вы сможете применять данный дисплей в проектах Ардуино с LCD и в различных примерах. Если у вас остались вопросы по использованию монитора 1602 i2c Arduino — оставляйте их в комментариях на этой странице. Возможно, то что вы ищете уже решено и есть в ответах.

Источник



Подключение шилда LCD Keypad Shield 1602 к Arduino

LCD Keypad Shield – одна из самых популярных плат расширения для ардуино. Она может существенно упростить работу с жидкокристаллическими экранами, позволяя разработчику сосредоточиться на других задачах. В этой статье мы рассмотрим шилд LCD Keypad Shield для дисплея TC 1602 со встроенными 5 управляющими кнопками. Узнаем, как работает эта плата, как ее можно подключить к ардуино, рассмотрим несколько примеров скетчей в реальных проектах. Если вы не знаете, что такое шилд, то можете предварительно прочитать статью о платах расширениях и шилдах ардуино.

Описание шилда LCD Keypad Shield

Arduino LCD keypad shield

Рассматриваемый шилд представляет собой плату с встроенными модулями индикации и управления. Индикация осуществляется с помощью LCD-дисплея TC1602, управление – через встроенные кнопки. Есть возможность регулировки яркости дисплея прямо на плате с помощью подстроечного резистора. Плата снабжена разъемами, в которые могут быть подключены другие устройства, например, датчики. Для работы с экраном используются пины 4-10, для определения нажатия кнопок – только один аналоговый пин A0. Свободными являются цифровые пины 0-3, 11-13 и аналоговые пины A1-A5.

Похожее:  Русско английская клавиатура для iphone

Подключение шилда LCD Keypad Shield 1602 к Arduino

Основные области применения шилда: создание управляющих модулей, реализующих настройки устройства с помощью интерфейса меню. Экран шилда можно использовать для вывода информации, получаемой с датчиков, с возможностью выполнения пользователем каких-либо действий путем нажатия на встроенные кнопки. Естественно, можно найти и другие способы использования платы: например, реализовать игру типа тетрис.

Технические характеристики

  • Тип дисплея: LCD 1602, символьный, 4-х битный режим.
  • Разрешение: 16×2 (две строки по 16 символов каждая). Знакоместо 5×8 точек.
  • Цвет дисплея: синий (возможны варианты с желтым и зеленым цветом). Буквы белого цвета.
  • Технология: STN, Transflective, Positive.
  • Контроллер дисплея: HD44780U.
  • Предельная частота обновления экрана: 5Гц
  • Питание дисплея: 5 Вольт
  • Кнопки: 6 кнопок (5 кнопок управления и Reset).
  • Дополнительные элементы: регулировка яркости подсветки (потенциометр).
  • Рабочая температура экрана: от -20 °С до +70 °С;
  • Температура хранения экрана: от -30 °С до +80 °С.

Распиновка LCD shield для подключения к Arduino

Arduino LCD keypad shield

Контакт дисплея LCD 1602 Описание Контакт на LCD Shield
Пины LCD экрана
GND Земля
VDD Питание 5В
Contrast Управление контрастом Потенциометр
RS Команды/Данные 8
R/W Чтение/Запись
Enable Включение (активирование) 9
DB0 Не используется
DB1 Не используется
DB2 Не используется
DB3 Не используется
DB4 Дата 1 4
DB5 Дата 2 5
DB6 Дата 3 6
DB7 Дата 4 7
Back LED + Включение подсветки 10
Back LED – Питание подсветки
Пины для кнопок
Кнопка UP Управляющая кнопка A0
Кнопка DOWN Управляющая кнопка A0
Кнопка LEFT Управляющая кнопка A0
Кнопка RIGHT Управляющая кнопка A0
Кнопка SELECT Управляющая кнопка A0
Reset Перезагрузка платы Reset
ICSP ICSP для перепрошивки встроенного микроконтроллера HD44780U
UART Контакты для UART соединения 0, 1

Дополнительные элементы шилда

  • Индикаторный светодиод (включается при подключении питания к плате).
  • Контактные площадки для подключения аналоговых устройств (GND, VSS, пин данных).
  • Потенциометр для регулирования контрастностью экрана.

Подключение платы LCD Shield к Arduino

Подключение шилда очень простое – нужно попасть ножками в соответствующие разъемы платы ардуино и аккуратно совместить их. Ничего дополнительно подсоединять или припаивать не надо. Нужно помнить и учитывать тот факт, что часть пинов зарезервированы для управления дисплеем и кнопками и не может быть использована для других нужд! Для удобства подключения дополнительного оборудования на плате выведены дополнительные разъемы 5В и GND к каждой контактной площадке аналоговых пинов. Это, безусловно, упрощает работу с датчиками. Также можно подключать цифровые устройства через свободные пины 0-3 и 11-13. Подключив шилд, мы можем работать с экраном и кнопками на нем так же, как с отдельными устройствами, учитывая только номера пинов, к которым припаяны соответствующие контакты.

Скетч для экрана на Arduino LCD shield

Для работы с LCD экранами обычно используют популярную библиотеку LiquidCrystal . На этапе инициализации создается объект класса LiquidCrystal, в конструкторе которого мы указываем пины с подключенными контактами экрана. Для нашего шилда требуется использовать такой вариант: LiquidCrystal lcd(8, 9, 4, 5, 6, 7); Последовательность аргументов конструктора:

  • RS (8)
  • Enable (9)
  • data(4)
  • data(5)
  • data(6)
  • data(7)

Ничего сложного в работе с объектом нет. В setup() мы инициализируем объект, указывая ему количество символов и строк:

Для вывода информации на дисплей используем метод print():

Текст выведется в место текущего нахождения курсора (в начале работы скетча это первая строка и первый символ). Для указания произвольного положения курсора можно использовать функцию setCursor(<столбец>, <строка>):

Кнопки LCD Keypad Shield

На плате присутствуют пять управляющих кнопок, работа с которыми ведется через один аналоговый пин A0. В шилде использован достаточно распространенный способ простого кодирования сигнала, при котором каждая кнопка формирует определенное значение напряжения, которое после АЦП преобразуется в соответствующее значение от 0 до 1023. Таким образом, мы можем передавать информацию о нажатии разных кнопок через один пин, считывая его при помощи функции analogRead();

Значения уровня сигнала на пине A0 в зависимости от выбранной кнопки:

Нажатие кнопки Значение на аналоговом пине
RIGHT 0-100
UP 100-200
DOWN 200-400
LEFT 400-600
SELECT 600-800
Клавиша не нажата 800-1023

Пример скетча работы с кнопками LCD Keypad Shield:

В выбранном методе кодирования есть два главных недостатка:

  • Нельзя отслеживать одновременное нажатие нескольких кнопок;
  • Возможные искажения сигнала могут привести к ложным срабатываниям.

Нужно учитывать эти ограничения, выбирая этот шлд в своих проектах, если вы планируете использовать устройство в системах с большим количеством помех, которые могут искажать сигнал на входе A0, из-за чего АЦП может сформировать ошибочное значение и скетч в результате выполнит другие инструкции.

Пример скетча для работы с экраном и кнопками меню

В данном примере мы определяем текущую нажатую кнопку и выводим ее название на экран. Обратите внимание, что для удобства мы выделили операцию определения кнопки в отдельную функцию. Также в скетче мы выделили отдельный метод для вывода текста на экран. В ней мы показываем сообщение (параметр message) и очищаем его через секунду. Нужно помнить, что в течение этой секунды нажатия кнопок не обрабатываются

Краткие выводы по плате расширения LCD keypad shield

Плата расширения LCD Keypad достаточно популярная, она проста и удобна для использования в проектах Arduino. Сегодня ее можно легко купить практически в любом интернет-магазине.

Источник

Текстовый экран 16×2: инструкция по подключению и примеры использования

В качестве примера подключим дисплей к управляющей плате Arduino Uno.

Подключение к Arduino

Вывод Обозначение Пин Arduino Uno
1 GND GND
2 VCC 5V
3 VO GND
4 RS 11
5 R/W GND
6 E 12
7 DB0
8 DB1
9 DB2
10 DB3
11 DB4 5
12 DB5 4
13 DB6 3
14 DB7 2
15 VCC 5V
16 GND GND

Для упрощения работы с LCD-дисплеем используйте встроенную библиотеку Liquid Crystal. В ней вы найдёте примеры кода с подробными комментариями.

Вывод текста

Для вывода первой программы приветствия, воспользуйтесь кодом вроде этого:

Кириллица

Существует два способа вывода кириллицы на текстовые дисплеи:

Рассмотрим оба способа более подробно.

Таблица знакогенератора

Дисплейный модуль хранит в памяти две страницы знакогенератора, которые состоят из различных символов и букв.

Для вывода символа на дисплей необходимо передать его номер в шестнадцатеричной системе из таблицы знакогенератора.

Так букве Я соответствует код B1 в шестнадцатеричной системе. Чтобы передать на экран строку «Яndex», необходимо в явном виде с помощью последовательности \x## встроить в строку код символа:

Вы можете смешивать в одной строке обычные символы и явные коды как угодно. Единственный нюанс в том, что после того, как компилятор в строке видит последовательность \x , он считывает за ним все символы, которые могут являться разрядами шестнадцатеричной системы даже если их больше двух. Из-за этого нельзя использовать символы из диапазона 0-9 и A-F следом за двузначным кодом символа, иначе на дисплее отобразится неправильная информация. Чтобы обойти этот момент, можно использовать тот факт, что две записанные рядом строки склеиваются.

Сравните две строки кода для вывода надписи «Яeee»:

Используя полученную информацию выведем на дисплей сообщение «Привет, Амперка!»:

Переключение страниц знакогенератора

Дисплейный модуль хранит в памяти две страницы знакогенератора. По умолчанию установлена нулевая страница. Для переключения между страницами используйте методы:

Дисплей не может одновременно отображать символы разных страниц.

Рассмотрим пример, в котором одна и та же строка будет отображаться по-разному — в зависимости от выбранной страницы.

Полную таблицу символов с кодами можно найти в документации к экрану.

Использование библиотеки LiquidCrystalRus

Совсем не обязательно мучатся со знакогенератором, чтобы вывести русский символ. Для решения проблемы скачайте и установите библиотеку LiquidCrystalRus.

Это копия оригинальной библиотеки LiquidCrystal с добавлением русского языка. Добавленный в библиотеку код трансформирует русские символы UTF8 в правильные коды для текстового экрана.

В качестве примера выведем фразу «Привет от Амперки» на дисплей.

Примеры работы для Espruino

В качестве примера подключим дисплей к управляющей плате Iskra JS.

Подключение к Iskra JS

Вывод Обозначение Пин Iskra JS
1 GND GND
2 VCC 5V
3 VO GND
4 RS P11
5 R/W GND
6 E P12
7 DB0
8 DB1
9 DB2
10 DB3
11 DB4 P5
12 DB5 P4
13 DB6 P3
14 DB7 P2
15 VCC 5V
16 GND GND

Для работы с LCD-дисплеем из среды Espruino существует библиотека HD44780.

Вывод текста

Для вывода программы приветствия, воспользуйтесь скриптом:

Кирилица

Вывод кирилицы на дисплей с помощью платформы Iskra JS доступен через встроенную в дисплей таблицу знакогенератора.

Таблица знакогенератора

Дисплейный модуль хранит в памяти две страницы знакогенератора, которые состоят из различных символов и букв.

Для вывода символа на дисплей необходимо передать его номер в шестнадцатеричной системе из таблицы знакогенератора.

Так букве Я соответствует код B1 в шестнадцатеричной системе. Чтобы передать на экран строку «Яndex», необходимо в явном виде с помощью последовательности \x## встроить в строку код символа:

Вы можете смешивать в одной строке обычные символы и явные коды как угодно. Единственный нюанс в том, что после того, как компилятор в строке видит последовательность \x , он считывает за ним все символы, которые могут являться разрядами шестнадцатеричной системы даже если их больше двух. Из-за этого нельзя использовать символы из диапазона 0–9 и A–F следом за двузначным кодом символа, иначе на дисплее отобразится неправильная информация. Чтобы обойти этот момент, можно использовать тот факт, что две строки записанные рядом склеиваются.

Сравните две строки кода для вывода надписи «Яeee»:

Используя полученную информацию выведем на дисплей сообщение «Привет, Амперка!»:

Переключение страниц знакогенератора

Дисплейный модуль хранит в памяти две страницы знакогенератора. По умолчанию установлена нулевая страница. Для переключения между страницами используйте методы:

Дисплей не может одновременно отображать символы разных страниц.

Рассмотрим пример, в котором одна и та же строка будет отображаться по-разному — в зависимости от выбранной страницы.

Полную таблицу символов с кодами можно найти в документации к экрану.

Комнатный термометр

Дисплей удобен для отображения показаний модулей и сенсоров. Сделаем задатки «Умного Дома», а именно «комнатный термометр».

Источник

Как сделать простой калькулятор на Arduino

Хотя калькуляторы существуют уже очень давно, их электронные версии доминировали в мире в течение десятков лет. Калькуляторы, от простых до научных, бывают всех форм и размеров. Но в современном мире, где практически у каждого есть смартфон, от них нет никакой пользы. Это не значит, что они нам не нравятся. Так что давайте отдадим им дань уважения, собрав свой собственный простой калькулятор на Arduino.

Что нам понадобится, чтобы завершить этот проект:

    (я использую Arduino Uno); ;
  • клавиатура 4×4; ;
  • потенциометр, 1–10 кОм;
  • резистор, 200–1000 Ом; .

Перед тем, как начать

Чтобы иметь возможность скомпилировать программу, необходимо, чтобы в Arduino IDE были установлены библиотеки LiquidCrystal.h и Keypad.h . Это можно сделать одним из двух способов. Если у вас установлена Arduino IDE версии 1.6.2 и выше, просто используйте менеджер библиотек. Если вы используете более раннюю версию, то вам необходимо скопировать эти библиотеки в каталог библиотек в месте установки Arduino IDE. Ссылка на руководство, как устанавливать библиотеки.

Arduino Uno Arduino Uno

Принцип действия

Это простое устройство стартует с очистки экрана LCD и ждет нажатий кнопок на клавиатуре. В зависимости от нажатых пользователем кнопок оно формирует числа. Как только пользователь нажимает на кнопку операции, оно запоминает первое число и операцию, которую необходимо выполнить, и продолжает обрабатывать ввод второго числа. Когда пользователь закончит ввод второго числа и нажмет кнопку «равно» на клавиатуре, программа выполнит требуемую операцию и выведет на экран результат. После чего она ожидает нажатия кнопки «очистить» ('C'), чтобы начать всё с начала (пользователь также может в любой момент сбросить программу).

LCD дисплей 1602

Arduino IDE обладает встроенной библиотекой ( LiquidCrystal.h ), которая поддерживает LCD дисплеи на базе чипсета Hitachi HD44780 (и на базе совместимых аналогов). Кроме отображения текста на LCD, эта библиотека также может обрабатывать печать чисел с плавающей запятой с заданным количеством цифр после запятой, что делает работу разработчика проще. Например:

Этот код напечатает на LCD дисплее 3.1415, так как число 4 в вызове функции означачает вывод только 4 цифр после запятой.

LCD дисплей в данном примере использует 4-битный режим передачи данных через выводы D4-D7 (11-14 на плате). Потенциометр действует, как делитель напряжения, и управляет контрастностью отображаемого текста. Его средний вывод подключен к выводу V0 (вывод 3) дисплея.

LCD дисплей HD44780 1602 LCD дисплей 1602

Давайте подключим наш LCD к плате Arduino. Сначала подключите выводы +5V и GND от Arduino к линиям питания на макетной плате. Подключите свой LCD к макетной плате и соедините вывод 1 с шиной корпуса, а вывод 2 с шиной +5V.

Далее установите на макетную плату потенциометр и подключите две его крайние ноги: первую к +5V, вторую к GND (какая из них будет первой или второй, значения не имеет). Теперь подключите средний вывод потенциометра к выводу 3 LCD дисплея.

Нам понадобится подать питание на подсветку дисплея. Выводы 15 и 16 LCD дисплея – это анод и катод встроенного светодиода, который служит в качестве подсветки LCD. Мы подключаем их к шинам питания, как и любой другой светодиод к источнику напряжения 5 вольт: анод к положительному выводу напряжения, а катод к GND, с последовательно включенным токоограничивающим резистором. Вы можете использовать резистор номиналом 100–220 Ом. Я использовал 1 кОм, так как с резистором 220 Ом подсветка была слишком яркой для моей камеры, чтобы снять видео. Если хотите, то можете заменить резистор потенциометром и сделать подсветку регулируемой.

Продолжаем. Выполните следующие соединения: вывод 4 LCD дисплея к выводу 7 платы Arduino, вывод 5 LCD дисплея к GND, вывод 6 LCD дисплея к выводу 8 платы Arduino, и последние выводы 11, 12, 13, 14 LCD дисплея к выводам 9, 10, 11, 12 платы Arduno, соответственно. Если вы хотите убедиться, что выполнили все соединения правильно, я добавил простой код для проверки дисплея. Вы можете просто записать его в свою плату Arduno и посмотреть, работает ли ваш LCD дисплей правильно.

Простой калькулятор на Arduino – Подключение LCD дисплея Простой калькулятор на Arduino – Подключение LCD дисплея

Клавиатура

Большинство проектов, которые чуть сложнее, чем просто мигание светодиодам (проекты, использующие только вывод), потребует от пользователя какого-либо ввода. В многих случаях для получения пользовательского ввода используются кнопки. Для Arduino существует библиотека Keypad.h (если у вас ее нет, проверьте ссылки в конце статьи), которая способна обрабатывать ввод с матричной клавиатуры и проста в использовании. Эта библиотека устраняет необходимость использования внешних подтягивающих резисторов, так как она использует встроенные в микросхему подтягивающие резисторы, а также обрабатывает/устанавливает высокое сопротивление на всех выводах неиспользуемого столбца. Она, по сути, сканирует столбец за столбцом. Выполняется это путем установки низкого уровня на выводе текущего столбца и чтения значений выводов строк для этого столбца, а затем перехода к следующему столбцу и так далее, пока не просканирует все подключенные/назначенные выводы. Кроме использования встроенных подтягивающих резисторов, библиотека также обрабатывает дребезг контактов. Библиотека не использует задержки; вместо этого, она периодически использует встроенную функцию millis() Arduino и определяет, как долго была нажата кнопка, и было изменение состояния определенной кнопки. Без задержек код выполняется более эффективно и не потребляет вычислительные ресурсы, устраняя необходимость обработки дребезга контактов с использованием программных задержек.

Я хотел использовать выводы на плате Arduino только с одной стороны с 0 по 13, так как это как раз необходимое количество выводов (и было бы проще подключать провода, расположенные на одной стороне, и не получить в итоге спутанную лапшу из проводов). Но после нескольких тестов светодиод на выводе 13 стал раздражать, поэтому я решил не использовать вывод 13. Я также не стал использовать выводы 0–1. Я подключил LCD к выводам 7–12, а клавиатуру к выводам 2–5 и аналоговым выводам A2–A5 для строк и столбцов. Таким образом, вы можете подключить клавиатуру, как вам удобно; просто убедитесь, что разделили строки и столбцы. Либо подключите строки к выводам A2–A5 или к выводам 2–5, а столбцы подключите к оставшимся выводам на противоположной стороне платы Arduino. Так, если вы подключаете строку 1 к выводу A2, то подключайте столбец 1 к выводу 2.

Простой калькулятор на Arduino – Подключение клавиатуры Простой калькулятор на Arduino – Подключение клавиатуры

Если вы подключили что-то не так, не волнуйтесь! Просто откройте исходный код программы калькулятора и измените порядок выводов клавиатуры в соответствии с вашей схемой:

Если вы хотите проверить вашу клавиатуру, есть простой код, который поможет вам сделать это. Просто скомпилируйте и загрузите его в плату Arduino с подключенной клавиатурой:

Матричная клавиатура Матричная клавиатура

У меня не было готовой клавиатуры, а ждать месяц доставки из Китая не хотелось, поэтому я сделал ее сам. Клавиатура показана на рисунке ниже. Если вы планируете сделать ее сами, то вам понадобятся:

  • 16 кнопок;
  • небольшая макетная печатная плата;
  • 8 проводов (4 для разводки строк и 4 для разводки столбцов);
  • паяльник и припой.

Программа/код

Код состоит из трех циклов. Первый цикл сканирует клавиатуру на наличие нажатий клавиш и выводит их на дисплей, одну клавишу за раз. В то же время, когда он сдвигает предыдущее число на один порядок вверх, он добавляет новую цифру на место единиц. Это продолжается, пока пользователь не нажмет на кнопку одного из операторов или не сбросит, нажав 'C'. Затем программа прерывает первый цикл и переходит ко второму.

Второй цикл в основном такой же, как и первый, но он ждет уже нажатия только кнопки '='. В этом месте, программа рассчитывает результат на основе выбранного оператора, печатает результат и переходит к следующему и завершающему циклу.

В третьем цикле программа просто ждет нажатия кнопки 'C' на клавиатуре. При нажатии кнопки 'C', программа перезапускается.

Код может быть оптимизирован, но я написал его таким образом, чтобы начинающий читатель мог быстро проследить за кодом и получить представление о ходе выполнения программы (и чтобы не застрять, анализируя упакованный код).

Теперь, когда мы закончили со сборкой макета и объяснением кода, пришло время прошить код.

Если вы не хотите подключать клавиатуру к этому проекту (если у вас ее нет, и вы не хотите ее собирать), то можете исользовать, вместо нее, монитор последовательного порта Arduino. Вы можете сделать это, просто изменив несколько строк кода:

Продолжаем! Если у вас нет LCD дисплея, вы можете аналогичным способом изменить программу для передачи данных на ваш компьютер, вместо печати на LCD дисплее, и получать результаты через монитор последовательного порта.

Комплектующие простого калькулятора на Arduino Комплектующие простого калькулятора на Arduino

Заключение и полезные ссылки

Хотя тема данного проекта – простой калькулятор на базе Arduino, его основная цель – объяснить, как использовать клавиатуру для получения символов, и как получить итоговое число из отдельно введенных символов.

Он также объясняет, как управлять LCD дисплеем, подключенным к Arduino, и как объединить эти два действия в работающий калькулятор. Данная программа ограничена переменными и математикой платформы Arduino, поэтому не стоит ожидать от нее слишком многого – Arduino имеет свои ограничения, когда речь идет о больших числах и числах с плавающей запятой. Например, когда речь идет о числах с плавающей запятой, у нас есть типы float и double . Тип double должен иметь большую точность по сравнению с float , но на Arduino это не так. Поэтому использование double , вместо float , не даст вам большей точности, если вы не используете Arduino Due.

Создание более сложного калькулятора, который будет обрабатывать большие числа и большие числа с плавающей запятой, возможно, но это выходит за рамки данной статьи. Для тех из вас, кому интересны большие числа, существует библиотека ( BigNumber.h , на самом деле класс C++), которая может обрабатывать большие числа, доступна по ссылке. И когда я говорю большие числа, то имею в виду, что вы сможете выполнять вычисления, пока не кончится память. Так что, если вы любите большие числа и хотите проверить ограничения плат Arduino, вы обязательно должны пройти по этой ссылке.

Что касается библиотеки работы с клавиатурой, если вы хотите глубже узнать, как она работает, то должны проверить эту ссылку и посмотреть ее возможности.

Источник