Witam w tym temacie chce pokazać jak można zrobić sterowanie oswietlenia ze zmianą efektów świetlnych za pomocą telefonu wykorzystując mały moduł ESP8266 zamknięty z przekaźnikiem sterującym przez program Supla.
Najpierw musimy zaprogramować ESP8266 z Supla
Pobieramy potrzebne programy
flash download tools do programowania ESP8266 - Supla
blank do formatowania modułu ESP gdy mamy coś zaprogramowane
formatujemy wpisując w programie 00000
Link do bibliotek
https://github.com/SUPLA/ESP8266/tree/c ... SP-01/v2.0
Dalej postępujemy z opisem pliku tekstowego danej biblioteki
wczytując pliki po kolei jak w instrukcji.
Z modułami ESP8266 01S trzeba zmienić w programie SPI MODE na DOUT
Na schemacie jest przedstawiona opcja z włącznikiem monostabilnym przełączaniem zmiany trybu efektu świetlnego, lub przełączaniem efektu zdalnie z telefonu za pomocą aplikacji Supla(tryb monostabilny).
W układzie Kondensator ma zapobiec skokom napięcia zasilacza i wygładzić je, zazwyczaj mogą się pojawić w momencie odpalania zasilacza i zwłaszcza dla gorszych zasilaczy.
Ja użyłem 1000uF 16V, może być również 10V, kondensator naładuje się i tak do 5v tyle ile
podaje źródło zasilania. W przypadku kondensatorów ważne jest, aby minimalna wartość zasilania została zachowana.
Z kolei zadaniem rezystora podłączonego między pinem mikrokontrolera, a linią danych listwy jest ograniczenie przepływającego prądu przyda się w przypadku spięć lub przepięć. Rezystor nie ogranicza napięcia, a jedynie prąd. Za duży prąd mógłby także spalić pierwszą diodę.
#include <Adafruit_NeoPixel.h> // Biblioteka do sterowania diodami
#define PIN 6 // Pin do sterowania diodami ws2812
#define NUMPIXELS 30 // Ilość diod ws2812
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int licznik = 1;
void przycisk()
{
delay(200);
if (digitalRead(2)== LOW)
{
licznik++;
if (licznik > 5)
{
licznik=1;
}
}
}
void efekt_1() // Zmiana 3 kolory
{
Serial.println("Efekt 1");
for(int i=0;i <NUMPIXELS ;i++) // Zapalenie całego paska na czerwono
{
strip.setPixelColor(i, 150, 0, 0);
}
strip.show();
delay(1000);
for(int i=0;i <NUMPIXELS ;i++) // Zapalenie całego paska na niebiesko
{
strip.setPixelColor(i, 0, 0, 150);
}
strip.show();
delay(1000);
for(int i=0;i <NUMPIXELS ;i++) // Zapalenie całego paska na zielono
{
strip.setPixelColor(i, 0, 150, 0);
}
strip.show();
delay(1000);
}
void efekt_2() // Zapalanie rosnąco
{
Serial.println("Efekt 2");
for(int i=0;i <NUMPIXELS ;i++)
{
strip.setPixelColor(i, 0, 150, 0);
strip.show();
delay(20);
strip.setPixelColor(i-1, 0, 0, 0);
strip.show();
delay(20);
}
for(int i=NUMPIXELS;i >0 ;i--)
{
strip.setPixelColor(i, 150, 0, 0);
strip.show();
delay(20);
strip.setPixelColor(i+1, 0, 0, 0);
strip.show();
delay(20);
}
}
void efekt_3() // stroboskop
{
Serial.println("Efekt 3");
for(int i=0;i <NUMPIXELS ;i++) // Zapalenie całego paska na biało
{
strip.setPixelColor(i, 100, 100, 100);
}
strip.show();
delay(500);
for(int i=0;i <NUMPIXELS ;i++) // Zapalenie całego paska na biało
{
strip.setPixelColor(i, 0, 0, 0);
}
strip.show();
delay(500);
}
void efekt_4() // Zapalanie rosnąco
{
Serial.println("Efekt 4");
for(int i=0;i <NUMPIXELS ;i++) // Zapalenie stopniowo całego paska na zielono
{
strip.setPixelColor(i, 0, 150, 0);
strip.show();
delay(20);
}
for(int i=NUMPIXELS;i >0 ;i--) // Gaszenie stopniowo całego paska na zielono
{
strip.setPixelColor(i, 0, 0, 0);
strip.show();
delay(20);
}
}
void efekt_5() // Zapalanie rosnąco
{
Serial.println("Efekt 4");
for(int i=0;i <NUMPIXELS ;i++)
{
strip.setPixelColor(i, 150, 0, 0);
strip.show();
delay(20);
}
for(int i=0;i <NUMPIXELS ;i++)
{
strip.setPixelColor(i, 0, 0, 150);
strip.show();
delay(20);
}
for(int i=0;i <NUMPIXELS ;i++)
{
strip.setPixelColor(i, 0, 150, 0);
strip.show();
delay(20);
}
}
void setup()
{
Serial.begin(9600);
strip.begin(); // Uruchomienie działania biblioteki Adafruit_NeoPixel
pinMode(2, INPUT);
attachInterrupt(0, przycisk, FALLING);
}
void loop()
{
switch (licznik)
{
case 1:
efekt_1();
break;
case 2:
efekt_2();
break;
case 3:
efekt_3();
break;
case 4:
efekt_4();
break;
case 5:
efekt_5();
break;
}
}
Programowanie ESP8266 z Supla, Sterowanie Led WS2812B za pomocą Supli
Programowanie ESP8266 z Supla, Sterowanie Led WS2812B za pomocą Supli
- Załączniki
-
- schemat WS2812Bj.jpg (250.8 KiB) Przejrzano 18449 razy