09.02.2016 | Arduino, Покупка, Программер, Своими руками, Электро | 2
| Автор: Кирилл
Получил новую посылку с готовым модулем Gizwits на ESP8266 ESP-12F и спешу поделиться новостью с вами + показать как программировать его в среде Arduino. Gizwits - это небольшой облачный проект позволяющий удалено управлять 3-х цветным светодиодом и датчиком расположенных прямо на платках Gizwits по Wi-Fi. Но нам больше интересен сам модуль ESP-12F.
Сам модуль Gizwits не интересен как продукт на котором можно строить законченные проекты, больше он подойдет для быстрого старта и обучения, так как для отладки больших и сложных проектов он не годится. Именно это я хочу показать вам сегодня.
Gizwits имеет 2 micro USB входа:
Gizwits имеет 3 micro кнопки:
По этой программе светодиод будет загораться на 50 мсек. ровно через каждую секунду, программа зациклена и повторяется бесконечно. Надо знать, что вывод на встроеном светодиоде инвертирован и при высоком уровне сигнала светодиод гаснет.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// функция setup() запускается один раз при нажатии reset или включения питания void setup() { // инициализация вывод pin 2 как вывод pinMode(2, OUTPUT); // Светодиод на ESP8266 ESP-12F (вывод инвертирован) } // функция loop() выполняется снова и снова всегда void loop() { digitalWrite(2, HIGH); // выкл. LED (высокий уровень сигнала) delay(1000); // ждать секунду digitalWrite(2, LOW); // вкл. LED (низкий уровень сигнала) delay(50); // ждать 50 мсек } |
Проверим наш 3-х цветный светодиод, если встроенный светодиод инвертирован и при высоком уровне сигнала светодиод гаснет, то выводы на 3-х цветный светодиод работают нормально, т.е. при высоком уровне сигнала светодиод загорается. Используемые выводы для программирования:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
// функция setup() запускается один раз при нажатии reset или включения питания void setup() { // инициализация выводов. pinMode(2, OUTPUT); // Светодиод на ESP8266 ESP-12F (вывод инвертирован) pinMode(12, OUTPUT); // LED 3-х цв. (зеленый) pinMode(13, OUTPUT); // LED 3-х цв. (синий) pinMode(15, OUTPUT); // LED 3-х цв. (красный) } // функция loop() выполняется снова и снова всегда void loop() { digitalWrite(2, LOW); // вкл. LED встроеный (инвертированное включение) delay(1000); // ждать секунду digitalWrite(12, HIGH); // вкл. LED 3-х цв. (зеленый) delay(1000); // ждать секунду digitalWrite(13, HIGH); // вкл. LED 3-х цв. (синий) delay(1000); // ждать секунду digitalWrite(15, HIGH); // вкл. LED 3-х цв. (красный) delay(1000); // ждать секунду digitalWrite(2, HIGH); // выкл. LED встроеный (инвертированное включение) delay(1000); // ждать секунду digitalWrite(12, LOW); // выкл. LED LED 3-х цв. (зеленый) delay(1000); // ждать секунду digitalWrite(13, LOW); // выкл. LED LED 3-х цв. (синий) delay(1000); // ждать секунду digitalWrite(15, LOW); // выкл. LED LED 3-х цв. (красный) delay(1000); // ждать секунду } |
Светодиоды по очереди зажигаются, после чего гаснут и так бесконечно:
Фоторезистор подключен к аналоговому входу A0, при считывании информации с него мы получим число от 0 до 1024. Что бы прочитать значение мы используем функцию: analogRead(A0). Напишем простую программу, где при нажатии или удержании кнопки яркость изменяется в зависимости от окружающей яркости. Для этого мы используем ШИМ (PWM) у которого значение от 0-255, поэтому значение от 0 до 1024 мы делим на 4.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#include <Wire.h> // библиотека работы последовательного порта int button = 4; // кнопка на 4 выводе int ligt; // переменная освещенности // функция setup() запускается один раз при нажатии reset или включения питания void setup() { // инициализация выводов. pinMode(2, OUTPUT); // Светодиод на ESP8266 ESP-12F (вывод инвертирован) pinMode(12, OUTPUT); // LED 3-х цв. (зеленый) pinMode(13, OUTPUT); // LED 3-х цв. (синий) pinMode(15, OUTPUT); // LED 3-х цв. (красный) pinMode(button, INPUT); // кнопка как вход Serial.begin(115200); // включим последовательный порт? скорость 115200 } // функция loop() выполняется снова и снова всегда void loop() { if (digitalRead(button) == 0) // Если кнопка нажата выполнить { ligt = analogRead(A0); Serial.println(ligt); // читаем значение с фоторезистора и выводи его в порт ligt = ligt/4; analogWrite(2, ligt); // вкл. LED встроеный (инвертированное включение) delay(111); // пауза analogWrite(12, ligt); // LED 3-х цв. (зеленый) delay(111); // пауза analogWrite(13, ligt); // LED 3-х цв. (синий) delay(111); // пауза analogWrite(15, ligt); // LED 3-х цв. (красный) delay(111); // пауза } } |
Последовательный порт был включен для удобства разработки, что бы отслеживать реальные значения получаемые от фоторезистора, что бы их наблюдать достаточно в среде программирования Arduino включить Инструменты - Монитор порта. При этом данные будут поступать только при нажатии или постоянном удержании программируемой кнопки на pin 2.
Вот так просто мы научились управлять элементами на нашей плате Gizwits с модулем ESP8266 ESP-12F, это только базовые функции для начинающих изучение простой работы с ESP8266. На самом деле возможности этого модуля очень большие и не ограничиваются миганием светодиодов, так как модель Wi-Fi он с легкостью подключается или подключает к себе другие Wi-Fi устройства, управляет, передает данные, обрабатывает сигналы. Но об этом в следующий раз.
Последние комменты