...

Arduino shield что это за программа

Arduino Shield: назначение, подключение, программирование на примере LCD Keypad shield

Arduino Shields – платы расширения для ардуино.

Плата расширения Arduino – это законченное устройство, предназначенное для выполнения определенных функций и подключаемое к основному контроллеру с помощью стандартных разъемов. Такие платы, совершенно логично называемые “платами расширения”, служат для выполнения самых разнообразных задач и могут существенно упростить жизнь “ардуинщика”.

Плата расширения или Arduino shield?

Давайте сперва разберемся в терминах. Плата расширения Ардуино – это законченное устройство, предназначенное для выполнения определенных функций и подключаемое к основному контроллеру с помощью стандартных разъемов. Другое популярное название платы расширения – англоязычное Arduino shield или просто “шилд”. На плате расширения установлены все необходимые электронные компоненты, а взаимодействие с микроконтроллером и другими элементами основной платы происходят через стандартные пины ардуино. Чаще всего питание на шилд тоже подается с основной платы arduino, хотя во многих случаях есть возможность запитки с других источников. В любом шилде остаются несколько свободных пинов, которые вы можете использовать по своему усмотрению, подключив к ним любые другие компоненты.

Англоязычное слово Shield переводится как щит, экран, ширма. В нашем контексте его следует понимать как нечто, покрывающее плату контроллера, создающего дополнительный слой устройства, ширму, за которой скрываются различные элементы.

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

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

Распиновка LCD 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

LCD Keypad Shield

Cкетч для работы с экраном и кнопками меню LCD Keypad shield

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

#include LiquidCrystal lcd(8, 9, 4, 5, 6, 7); #define BTN_UP 1 #define BTN_DOWN 2 #define BTN_LEFT 3 #define BTN_RIGHT 4 #define BTN_SELECT 5 #define BTN_NONE 10 int detectButton() < int keyAnalog = analogRead(A0); if (keyAnalog < 100) < // Значение меньше 100 – нажата кнопка right return BTN_RIGHT; >else if (keyAnalog < 200) < // Значение больше 100 (иначе мы бы вошли в предыдущий блок результата сравнения, но меньше 200 – нажата кнопка UP return BTN_UP; >else if (keyAnalog < 400) < // Значение больше 200, но меньше 400 – нажата кнопка DOWN return BTN_DOWN; >else if (keyAnalog < 600) < // Значение больше 400, но меньше 600 – нажата кнопка LEFT return BTN_LEFT; >else if (keyAnalog < 800) < // Значение больше 600, но меньше 800 – нажата кнопка SELECT return BTN_SELECT; >else < // Все остальные значения (до 1023) будут означать, что нажатий не было return BTN_NONE; >> void clearLine(int line) < lcd.setCursor(0, 1); lcd.print(" "); >void printDisplay(String message) < Serial.println(message); lcd.setCursor(0, 1); lcd.print(message); delay(1000); clearLine(1); >void setup() < Serial.begin(9600); lcd.begin(16, 2); lcd.print("Arduino Master"); delay(3000); lcd.setCursor(0, 0); lcd.print("Arduino Master"); >void loop() < int button = detectButton(); switch (button) < case BTN_UP: printDisplay("UP"); break; case BTN_DOWN: printDisplay("DOWN"); break; case BTN_LEFT: printDisplay("LEFT"); break; case BTN_RIGHT: printDisplay("RIGHT"); break; case BTN_SELECT: printDisplay("SELECT"); break; default: //printDisplay("Press any key"); break; >>

Обзор модуля Multi-function Shield для Arduino

Обзор модуля Multi-function Shield для Arduino

В этой статье расскажу о многофункциональном модуле Multi-function Shield, который поможет новичкам быстро изучить программирование, без сборки электрических схем, таких как управление светодиодами, кнопками, семисегментном дисплее, датчиками температуры, сдвиговом регистре и другими модулями.

Технические параметры:

► 4 светодиода: D10, D11, D12, D13;
► 3 тактовые кнопки: A1, A2, A3;
► Потенциометр (10 кОм): A0;
► 4-разрядный 7-семисегментный LED индикатор на 2-х сдвиговых регистрах 74HC595: Latch 4, Clock 7, Data 8;
► Звуковой излучатель (Зуммер): D3;
► Разъем для подключения инфракрасного датчика: D2;
► Разъем для подключения аналогово LM35 или цифрового DS18B20 датчиков температуры (Джампер J1 подключает или отключает резистор 10 кОм для правильной работы этих датчиков): A4;
► Разъем APC220 для подключения модулей (Bluetooth, голосового модуля и др.): GND, +5v, D0, D1 (rx/tx);
► Свободные пины (с ШИМ (pwm)), например для сервоприводов: D5, D6, D9, A5.
► Габариты: 70 х 53 х 15;
► Вес: 23 грама.

Общие сведенья

Модуль рассчитан на совместную работу с платформами Arduino UNO, Leonardo и MEGA, при необходимости, используя провода Dupont можно подключить и к другим Arduino, но тогда модуль утрачивает свое главное достоинство.

Теперь немного расскажу о самом модуле, верхней части установлен 4-х сегментный дисплей, включенный через сдвиговые регистры 74HC595. Рядом установлена кнопка перезагрузки контроллера, на другой стороне установлен 7 контактный разъем. Чуть ниже установлены четыре светодиода с резисторами, подключенные к выводам D10, D11, D12, D13 на Arduino UNO. Так же, на плате установлен активный зуммер, со встроенным генератором, подключен он к выводу D3. Рядом установлен, подстроечный резистор на 10 кОм, подключенный к выводу A0.

В самом низу, расположены три тактовых кнопки, подключены к выводам D15, D16, D17. Правее установлены четыре, трехконтактные разъемы BLS, к которым можно подключить сервопривод, вывода D5, D6, D9, A5. И последний 6-ти контактный разъем, служит для подключения датчика температуры DS18B20 и LM35, вывод A4, перемычка J1 подключает или отключает подтягивающий резистор на 10 кОм.

Подключение модуля Multi-function Shield к Arduino UNO

Необходимые детали:
► Контроллер Arduino UNO R3 x 1 шт.
► Многофункциональный модуль Multi-function Shield x 1 шт.
► Кабель USB 2.0 A-B, синий, ~30 см x 1 шт.

Описание:
В данных примерах буду использовать Arduino UNO, необходимо установить данный Shield сверху Arduino UNO и подключить USB кабель, дополнительное питание подключать не нужно. В примерах не буду использовать внешние библиотеки, так как базовые примеры можно без них.

Программа №1 — Управление светодиодами.
Как говорил ранее, на модуле установлено четыре светодиода, подключены они к выводам D10, D11, D12, D13. Анод светодиода подключен к 5В, а катод через резистор 510 Ом подключен к выводу Arduino. То есть, светодиод загорится когда мы подадим на вывод LOW (0 В), а погаснет когда подадим HIGH (0 В).

Многофункциональный модуль для Arduino

Платформа Arduino прекрасна своими модулями расширения (shields). Их множество, на все случаи жизни. Большая часть модулей имеет некоторую специализацию, будь то модуль драйверов двигателей, модуль дисплея 1602 или модуль для работы с сетью Ethernet. Но есть такие, которые можно назвать многофункциональными. Именно о таком модуле и пойдет речь в этой статье.

На универсальном модуле расширения есть:

  • четырёхразрядный семисегментный индикатор, плюс два сдвиговых регистра: для коммутации разрядов и сегментов;
  • четыре светодиода;
  • зуммер;
  • потенциометр многооборотный:
  • три кнопки, плюс кнопка сброса;
  • разъёмы для подключения датчиков LM35, DS18B20 и инфракрасного приёмника;
  • разъём APC220 для подключения одноимённого радиомодуля, либо модулей bluetooth со стандартным набором контактов.
  • прочие GPIO.

Характеристики

  • напряжение питания: 5 В;
  • размеры: 69 x 53,5 мм;

Приобрести данный модули и саму плату Arduino можно у в нашем интернет-магазине:

Подключение

Принципиальная схема платы

Таблица контактов Arduino, к которым подключены элементы модуля.

Arduino
Семисегментный индикатор Latch 4, Clock 7, Data 8
Светодиоды D10, D11, D12, D13
Зуммер D3
Потенциометр A0
Кнопки A1, A2, A3
Разъём датчиков LM35, DS18B20 A4
Разъём инфракрасного приёмника D2
Разъём APC220 GND, +5V, D0(RX), D1(TX)
Прочие разъёмы D5, D6, D9, A5

Также необходимо отдельно отметить две перемычки на плате:

  • J1 — подключает подтяжку к питанию через резистор 10 кОм;
  • J2 — подключает подтяжку кнопок к питанию через резистор 10 кОм.

Программа

В действительности, модуль не несёт на себе каких-то специфичных устройств, так что для работы со всей имеющейся периферией подойдут программы из разных уроков:

  • работа с аналоговым датчиком температуры LM35
  • работа с цифровым датчиком температуры DS18B20
  • про зуммер
  • про потенциометр
  • про кнопки

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

#define LATCH_DIO 4 // линия синхронизации данных, защелка (LCHCLK) #define CLK_DIO 7 // линия тактирования (SFTCLK) #define DATA_DIO 8 // линия передачи данных (SDI) byte counter = 0; // коды цифр от 0 до 9 const byte seg_digits[] = ; // коды разрядов const byte seg_num[] = ; // таймер unsigned long counter_next; unsigned int counter_to = 200; void setup () < // настройка контактов индикатора pinMode(LATCH_DIO, OUTPUT); pinMode(CLK_DIO, OUTPUT); pinMode(DATA_DIO, OUTPUT); >void loop() < unsigned long tm = millis(); if( counter_next < tm )< counter_next = tm + counter_to; counter++; >// вывод числа на индикатор поразрядно writeNumber(0 , 0); // первый разряд (индекс 0) writeNumber(1 , (counter/100) % 10); // второй разряд writeNumber(2 , (counter/10) % 10); // третий разряд writeNumber(3 , counter % 10); // четвёртый разряд > // вывод цифры в заданный разряд void writeNumber(byte seg, byte val)

При подготовке материала использовались источники:
http://wiki.me-robotics.ru/Arduino_Shield:_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B5_LCD_Keypad_shield

Добавить комментарий