Arduino Esplora: плата-геймпад со встроенными датчиками

Arduino Esplora на базе Leonardo несёт джойстик, кнопки и набор датчиков. Характеристики платы, её библиотека и два примера: RGB-светодиод и секундомер на TFT.
Чем Esplora отличается от других Arduino
Среди плат Arduino есть модели, созданные под определённые задачи, и Esplora — одна из самых необычных. Она спроектирована на основе Arduino Leonardo и выделяется тем, что датчики и органы управления уже установлены и готовы к работе. По форме плата напоминает геймпад: слева аналоговый джойстик, справа четыре кнопки.

Как и в Leonardo, здесь стоит AVR-микроконтроллер ATmega32U4 с кварцевым резонатором на 16 МГц. Компьютер может распознавать плату как обычную клавиатуру или мышь, а библиотеки Keyboard и Mouse позволяют запрограммировать управление от её имени.
Встроенные средства ввода и вывода
- аналоговый джойстик с кнопкой и четыре отдельные кнопки;
- линейный потенциометр;
- микрофон;
- датчики освещённости и температуры;
- трёхосевой акселерометр;
- зуммер, генерирующий звуковой сигнал прямоугольной формы;
- RGB-светодиод;
- два входа и два выхода Tinkerkit с 3-пиновыми разъёмами для модулей датчиков и приводов;
- разъём для TFT-дисплея, SD-карты или других устройств с протоколом SPI.

| Микроконтроллер | ATmega32U4 |
| Питание | 5 В |
| Flash-память | 32 кБ, из них 4 кБ под загрузчик |
| ОЗУ | 2,5 кБ |
| Тактовая частота | 16 МГц |
| Габариты | 164х60 мм |
| Вес | 53 г |
Библиотека Esplora и готовые примеры
Для платы существует специальная библиотека с высокоуровневыми методами. Она возвращает уже обработанные данные — например, температуру сразу в градусах Цельсия или Фаренгейта — и упрощает обращение к устройствам вывода, таким как RGB-светодиод.
Вместе с библиотекой идут примеры, по которым удобно знакомиться с платой:
- EsploraBlink — мерцание RGB-светодиода;
- EsploraAccelerometer — чтение показаний акселерометра;
- EsploraJoystickMouse — управление курсором компьютера с джойстика;
- EsploraLedShow и EsploraLedShow2 — световые эффекты с участием джойстика, слайдера, микрофона и датчика освещённости;
- EsploraLightCalibrator — определение освещённости;
- EsploraMusic — воспроизведение мелодии;
- EsploraSoundSensor — обработка сигнала микрофона;
- EsploraTemperatureSensor — расчёт температуры по показаниям датчика.

Пример: цвет светодиода по кнопкам
Простой скетч управляет каналами RGB-светодиода тремя кнопками: SWITCH2 включает красный, SWITCH3 — зелёный, SWITCH4 — синий. Пока кнопка не нажата, соответствующий цвет погашен.
Библиотека подключается строкой #include <Esplora.h>. В скетче объявлены три целые переменные red, green и blue. В цикле loop() каждая кнопка опрашивается функцией Esplora.readButton(); нажатой кнопке в итоговом листинге соответствует уровень LOW. Переменная получает значение 255, если кнопка нажата, и 0 в противном случае, после чего все три значения передаются вызовом Esplora.writeRGB(red, green, blue).
TFT-дисплей и секундомер
На лицевой стороне платы есть разъёмы для TFT-дисплея с диагональю 1,8 дюйма и слотом MicroSD. Дисплей вставляют так, чтобы синяя надпись SD Card находилась возле порта USB.

С модулем работает библиотека TFT, входящая в Arduino IDE. Она создана на основе Adafruit GFX и Adafruit ST7735: первая отвечает за отрисовку графики, вторая — за взаимодействие с экраном. Для Esplora используется специальный класс EsploraTFT. Базовый шрифт имеет размер символа 5х8 пикселей, его можно увеличить до 10x16, 15x24 или 20x32.
В качестве примера собран секундомер. Скетч подключает TFT.h, SPI.h и Esplora.h. В setup() экран инициализируется вызовом EsploraTFT.begin(), заливается чёрным, на него синим цветом выводится постоянная надпись, а затем размер шрифта увеличивается функцией setTextSize(3) — им отображаются секунды.
В основном цикле опрашиваются три кнопки: SWITCH_1 запускает отсчёт, SWITCH_3 останавливает его, SWITCH_4 сбрасывает значение. Пока секундомер запущен, программа сравнивает millis() с запомненной отметкой и каждые 1000 мс прибавляет к счётчику единицу. Отдельная функция обновляет экран: старое значение закрашивается цветом фона, число секунд преобразуется в строку и выводится белым. События кнопок дублируются в последовательный порт на скорости 9600.
Если плата не определяется
Когда компьютер не видит Esplora, устанавливают драйвер платы Arduino. Если не загружается скетч, проверяют исправность кабеля USB.