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 |
---|
развернутьArduino продукты |
---|
развернутьПримеры Arduino |
---|
Категории:
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino