Arduino:Примеры/Управление RGB-светодиодом и динамиком по сети
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Проверка/Оформление/Редактирование: Мякишев Е.А.
Управление RGB-светодиодом и динамиком по сети
Данный пример демонстрирует управление RGB-светодиодом и динамиком по сети с помощью платы Arduino Uno и платы расширения Arduino Ethernet Shield
Необходимые компоненты
- Плата Arduino Uno, 1 шт.;
- Плата расширения Arduino Ethernet Shield, 1 шт.;
- Резистор 220 Ом, 3 шт.;
- Резистор 150 Ом, 1 шт.;
- RGB-cветодиод с общим катодом, 1 шт.;
- Динамик, 1 шт.;
- Макетная плата;
- Провода перемычки;
Монтажная схема
Соедините Arduino Uno и плату расширения Arduino Ethernet Shieldи после этого подключите RGB-светодиод и динамик согласно монтажной схеме.
Код
#include <Ethernet.h> // Подключение библиотеки Ethernet
#include <SPI.h> // Подключение библиотеки SPI
#define BLUE 5 // Синий вывод RGB-светодиода подключен к 5 цифровому контакту
#define GREEN 6 // Зеленый вывод RGB-светодиода подключен к 6 цифровому контакту
#define RED 7 // Красный вывод RGB-светодиода подключен к 7 цифровому контакту
#define SPEAKER 3 // Вывод динамика подключен к 3 цифровому контакту
int freq = 0; // Частота звука по умолчанию
int pin; // Контакт светодиода для управления
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x4A, 0xE0 }; // MAC-адрес вашего Ethernet шилда
// если вы его не знаете, можете оставить этот
EthernetServer server = EthernetServer(80); // Создаем сервер прослушивающий 80 порт
boolean receiving = false; // Отслеживание получаемых данных от клиента
void setup()
{
Serial.begin(9600); // Инициализация последовательного соединения на скорости 9600 бод
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
// Соединение с DHCP
if (!Ethernet.begin(mac))
{
Serial.println("Could not Configure Ethernet with DHCP."); // Вывод в монитор порта "Could not Configure Ethernet with DHCP."
// ("Не удалось настроить Ethernet с помощью DHCP")
return;
}
else
{
Serial.println("Ethernet Configured!"); // Вывод в монитор порта "Ethernet Configured!"
// "Ethernet настроен!"
}
// Запускаем сервер
server.begin();
Serial.print("Server Started.\nLocal IP: "); // Вывод в монитор порта "Server Started.\nLocal IP:"
// (
// Сервер запущен
// Локальный IP: <здесь будет указан IP адрес>
// )
Serial.println(Ethernet.localIP()); // Вывод в монитор порта IP адреса
}
void loop()
{
EthernetClient client = server.available();
if (client)
{
// HTTP запрос заканчивается пустой строкой
boolean currentLineIsBlank = true;
boolean sentHeader = false;
while (client.connected())
{
if (client.available())
{
char c = client.read(); // Читаем данные из входящего буфера
if(receiving && c == ' ') receiving = false; // Данные получены
if(c == '?') receiving = true; // Поиск аргументов переданных GET-запросом(аргументы после символа "?")
// Обработка GET-запроса
if(receiving)
{
// Если полученн аргумент 'L' - то управляем светодиодом
if (c == 'L')
{
Serial.print("Toggling Pin "); // Вывод в монитор порта "Toggling Pin" ("Переключаем контакт ")
pin = client.parseInt(); // Ищем следующее корректное целое число во входящем потоке данных и сохраняем в переменной
Serial.println(pin); // Вывод в монитор порта номер контакта RGB-светодиода
digitalWrite(pin, !digitalRead(pin)); // Включаем/выключаем светодиод
break;
}
// Если получен аргумент 'S' - то управляем динамиком
else if (c == 'S')
{
Serial.print("Setting Frequency to "); // Вывод в монитор порта "Setting Frequency to "("Настройка частоты на ")
freq = client.parseInt(); // Ищем следующее корректное целое число во входящем потоке данных и сохраняем в переменной
Serial.println(freq); // Вывод в монитор порта выбранной частоты
if (freq == 0)
noTone(SPEAKER); // Выключаем воспроизведение звука
else
tone(SPEAKER, freq); // Включаем воспроизведение звука
break;
}
}
// Отправляем заголовок ответа и HTML-код
if(!sentHeader)
{
// Отправляем стандартный заголовок ответа HTTP
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html\n");
// Красная кнопка переключения
client.println("<form action='' method='get'>");
client.println("<input type='hidden' name='L' value='7' />");
client.println("<input type='submit' value='Toggle Red' />");
client.println("</form>");
// Зеленая кнопка переключения
client.println("<form action='' method='get'>");
client.println("<input type='hidden' name='L' value='6' />");
client.println("<input type='submit' value='Toggle Green' />");
client.println("</form>");
// Синяя кнопка переключения
client.println("<form action='' method='get'>");
client.println("<input type='hidden' name='L' value='5' />");
client.println("<input type='submit' value='Toggle Blue' />");
client.println("</form>");
// Ползунок частоты для динамика
client.println("<form action='' method='get'>");
client.print("<input type='range' name='S' min='0' max='1000' step='100' value='0'/>");
client.println("<input type='submit' value='Set Frequency' />");
client.println("</form>");
sentHeader = true;
}
if (c == '\n' && currentLineIsBlank) break;
if (c == '\n')
{
currentLineIsBlank = true;
}
else if (c != '\r')
{
currentLineIsBlank = false;
}
}
}
delay(5); // Даём веб-браузеру время для получения данных
client.stop(); // Закрываем соединение
}
}
См.также
Внешние ссылки
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
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino