Arduino:Примеры/Управление RGB-светодиодом при помощи Arduino и Android-приложения
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Управление RGB-светодиодом при помощи Arduino и Android-приложения[1]
В этой статье рассказывается, как создать Android-приложение, которое через Bluetooth подключается к Arduino и позволяет управлять цветом RGB-светодиода. Создание приложения будет выполняться при помощи бесплатного веб-сервиса MIT App Inventor 2.
Вот так проект выглядит в действии:
Если вы не знакомы с RGB-светодиодами, то о них можно почитать тут.
Необходимые компоненты
- Плата Arduino;
- Bluetooth-модуль HC-04, HC-05 или HC-06;
- RGB-светодиод с общим анодом;
- Три резистора на 220 Ом;
- Макетная плата;
- Провода-перемычки;
Кроме того, вам понадобится смартфон с функцией Bluetooth.
Создание Android-приложения
Android-приложение для этого проекта создано при помощи веб-сервиса MIT App Inventor. Это отличная платформа для новичков в разработке приложений для Android, т.к. в ее основе лежит простой и понятный принцип «drag-n-drop», а создаваемые приложения получаются простыми, но в то же время полностью рабочими.
Чтобы зарегистрироваться в MIT App Inventor, понадобится аккаунт в Google. Страница для залогинивания находится тут.
Теперь загрузите файл, с которым мы будем работать. Он называется «Control_RGB_LED.aia», и его можно скачать отсюда. Затем залогиньтесь в MIT App Inventor и кликните на Projects > Import project (.aia) from my computer.
Теперь выберите файл «Control_RGB_LED.aia», который скачали ранее, и нажмите ОК. В результате файл откроется в MIT App Inventor, после чего вы сможете приступить к его редактированию.
Секция Designer
MIT App Inventor состоит из 2 главных секций – Designer и Blocks.
В секции Designer вы добавляете новые кнопки, текст, меню и т.д. В общем, меняете внешний вид приложения. Приложение «Control_RGB_LED.aia» выглядит в секции Designer следующим образом:
На смартфоне оно выглядит немного по-другому:
Секция Blocks
Эта секция отвечает за функциональность приложения. Другими словами, она определяет, какие действия выполняет приложение после того, как вы нажимаете на его кнопки.
Вот так секция Blocks выглядит для приложения «Control_RGB_LED.aia»:
Установка приложения
Чтобы сгенерировать установочный файл, кликните по кнопке Tab ⇆ :
Здесь у вас два варианта:
- App (provide QR code for .apk). Генерирует QR-код для APK-файла. Чтобы загрузить этот APK-файл, просканируйте QR-код смартфоном.
- App (save .apk to my computer). Генерирует APK-файл и сохраняет его на компьютере. Чтобы загрузить этот APK-файл, просто скопируйте его с компьютера на смартфон.
Чтобы установить приложение, следуйте инструкциям мастера установки. Готово!
Код
Скопируйте в IDE Arduino код, показанный ниже, а затем загрузите его на плату Arduino. Убедитесь, что выбрали правильные пункты в меню Инструменты > Плата (Tools > Board) и Инструменты > Порт (Tools > Port).
Примечание: Перед тем, как загружать код, отключите от Bluetooth-модуля контакты RX и TX.
/*
* Руи Сантос (Rui Santos)
* Более подробно о проекте на: http://randomnerdtutorials.com
*/
#define max_char 12
char message[max_char]; // хранит сообщение
char r_char; // считывает каждый символ
byte index = 0; // определяет позицию в массиве
int i;
int redPin = 11; // красный светодиод RGB-светодиода -> D11
int greenPin = 10; // зеленый контакт RGB-светодиода -> D10
int bluePin = 9; // синий контакт RGB-светодиода -> D9
int redValue = 255;
int greenValue = 255;
int blueValue = 255;
String redTempValue; // строка для красного
// светодиода RGB-светодиода
String greenTempValue; // строка для зеленого
// светодиода RGB-светодиода
String blueTempValue; // строка для синего
// светодиода RGB-светодиода
int flag = 0;
char currentColor;
void setup() {
pinMode(redPin,OUTPUT);
pinMode(bluePin,OUTPUT);
pinMode(greenPin, OUTPUT);
// запускаем последовательную коммуникацию на скорости 9600 бод:
Serial.begin(9600);
}
void loop() {
// цикл while() считывает сообщение:
while(Serial.available() > 0){
flag = 0;
// в сообщении может быть не более 12 символов:
if(index < (max_char-1)){
r_char = Serial.read(); // считываем символ
message[index] = r_char; // сохраняем символ в массиве
if(r_char=='R'){
currentColor = 'R';
redTempValue = "";
}
else if(r_char=='G'){
currentColor = 'G';
greenTempValue = "";
}
else if(r_char=='B'){
currentColor = 'B';
blueTempValue = "";
}
if(currentColor == 'R' && r_char!='R'){
redTempValue += r_char;
}
else if(currentColor == 'G' && r_char!='G'){
greenTempValue += r_char;
}
else if(currentColor == 'B' && r_char!='B'){
blueTempValue += r_char;
}
index++; // переходим на следующую позицию
message[index] = '\0'; // удаляем последнюю позицию
}
}
if(flag == 0){
analogWrite(redPin, 255-redTempValue.toInt());
analogWrite(greenPin, 255-greenTempValue.toInt());
analogWrite(bluePin, 255-blueTempValue.toInt());
/*Serial.print('R');
Serial.println(redTempValue);
Serial.print('G');
Serial.println(greenTempValue);
Serial.print('B');
Serial.println(blueTempValue);
Serial.print("MESSAGE ");*/ // "СООБЩЕНИЕ "
Serial.println(message);
flag=1;
for(i=0; i<12; i++){
message[i] = '\0';
}
// сбрасываем индекс
index=0;
}
}
Схема
Подключите друг к другу компоненты, как показано на схеме ниже:
Примечание: Если используете RGB-светодиод с общим катодом, его длинную ножку нужно подключить к GND.
Важно: Bluetooth-модуль подключается к Arduino следующим образом:
- Контакт TX на Bluetooth-модуле – к контакту RX на Arduino
- Контакт RX на Bluetooth-модуле – к контакту TX на Arduino
Собранная цепь должна выглядеть примерно так:
Запуск приложения
Если вы не сгенерировали APK-файл (это файл для установки Android-приложения на смартфон), то можете загрузить его отсюда. Затем переместите этот файл на смартфон, откройте и следуйте инструкциям мастера установки.
Теперь включите у смартфона Bluetooth:
Убедитесь, что смартфон спарен с Bluetooth-модулем. Спаренные устройства ищите в настройках Bluetooth на смартфоне.
Теперь откройте установленное приложение. Кликните на кнопку «Connect Bluetooth», чтобы через Bluetooth подключить смартфон к Arduino.
Выберите Bluetooth-модуль (он должен называться «linvor»).
Вот и все! Приложение готово к использованию.
Демонстрация
Вот так проект выглядит в действии. Чтобы поменять цвет RGB-светодиода, просто двигайте ползунки, а затем кликните на кнопку CHANGE COLOR.
[Видео]
Возможные проблемы и их решение
- Не могу загрузить код на плату Arduino.
- Проверьте, соединены ли контакты RX и TX между Bluetooth-модулем и Arduino. Во время загрузки кода на плату Arduino они должны быть отключены. Эти контакты нужны для последовательной коммуникации между Arduino и компьютером.
- Не могу найти Bluetooth-модуль.
- Убедитесь, что спарили смартфон и Bluetooth-модуль. Зайдите в настройки Bluetooth на смартфоне и поищите доступные устройства – одним из них должен быть как раз Bluetooth-модуль (он может называться «linvor», «HC-06», «HC-05», «HC-04» и т.д.). Спарьте смартфон и Bluetooth-модуль друг с другом. Если система запросит пароль, впишите «1234».
- Приложение не взаимодействует с Arduino.
Также проверьте правильность подключения между Bluetooth-модулем и Arduino. Контакт TX на Bluetooth-модуле должен быть подключен к контакту RX на Arduino, а контакт RX на Bluetooth-модуле – к контакту TX на Arduino.
- Bluetooth-модуль запрашивает пароль
- Впишите «1234».
См.также
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino