Dziś zajmiemy się podstawowym przesłaniem zmiennej z ESP na nasz telefon.
Umiemy już zapalać wirtualne diody, teraz czas na przesłanie jakiejś użyteczniejszej informacji niż zapal/zgaś. Do wyświetlania wartości z zmiennej w postaci cyfrowej służy Widget o nazwie Value Display. Dodajmy więc go na ekran naszej aplikacji i wejdźmy w jego opcje.
Standardowo możemy mu nadać nazwę i kolor, następnie możemy ustalić zakres jego wartości oraz co ma wyświetlać - tu mamy do dyspozycji stan pinu cyfrowego, wartość z przetwornika ADC z wybranego pinu ( nie lubię tego stosować, znacznie ładniej jest przeliczyć ją na to co ona reprezentuje w ESP i przesłać końcowy wynik) oraz oczywiście jakąś zmienną wirtualną. Przypiszmy więc V3.
Ustawiamy też czas odświeżania na ekranie telefonu, pozostawmy tu 1 sekundę.
Jako program testowy zróbmy pseudo timer w naszym ESP odmierzający czas od uruchomienia i jego wartość zapisujmy w zmiennej V3. Gotowy kod prezentuje się tak:
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> // You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon). char auth[] = "e7f4e49f7df64e96bd856a55f738d50e"; bool ledState = 0; unsigned long previousMillis = 0; const long interval = 1000; unsigned long czas_dzialania = 0; void setup() { pinMode(12, INPUT); Serial.begin(9600); Blynk.begin(auth, "costam", "czteryslowawszystkoduzymiliterami"); } void loop() { unsigned long currentMillis = millis(); if(currentMillis - previousMillis >= interval) { czas_dzialania++; previousMillis = currentMillis; if (ledState == LOW) { ledState = HIGH; Blynk.virtualWrite( 1, 1023 ); } else { ledState = LOW; Blynk.virtualWrite( 1, 0 ); } if( digitalRead( 12 ) == LOW ) { Blynk.virtualWrite( 2, 1023 ); } else { Blynk.virtualWrite( 2, 0 ); } Blynk.virtualWrite( 3, czas_dzialania ); } Blynk.run(); }
Standardowo efekt działania przedstawia filmik, wszystkie dotychczasowe funkcje nadal działają. Chciałem sprawdzić ile możemy tu dołożyć, aby były opóźnienia w komunikacji, ale niedługo chyba z tego zrezygnuję.
Inną metodą wyświetlania jest użycie widgetu Gauge. Tworzy on "wskaźnik analogowy" jak w prędkościomierzu. Dodajmy go też do naszej aplikacji. Nadajmy mu nazwę, przypiszmy zmienną V4, ustalmy zakresy od 0 do 10 i odświeżanie co sekundę.
W programie co sekundę będziemy inkrementować dla niego zmienną, ale ograniczymy ją do przedziału 0-10.
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> // You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon). char auth[] = "e7f4e49f7df64e96bd856a55f738d50e"; bool ledState = 0; unsigned long previousMillis = 0; const long interval = 1000; unsigned long czas_dzialania = 0; unsigned int zmienna_V4 = 0; void setup() { pinMode(12, INPUT); Serial.begin(9600); Blynk.begin(auth, "costam", "czteryslowawszystkoduzymiliterami"); } void loop() { unsigned long currentMillis = millis(); if(currentMillis - previousMillis >= interval) { czas_dzialania++; zmienna_V4++; previousMillis = currentMillis; if (ledState == LOW) { ledState = HIGH; Blynk.virtualWrite( 1, 1023 ); } else { ledState = LOW; Blynk.virtualWrite( 1, 0 ); } if( digitalRead( 12 ) == LOW ) { Blynk.virtualWrite( 2, 1023 ); } else { Blynk.virtualWrite( 2, 0 ); } Blynk.virtualWrite( 3, czas_dzialania ); Blynk.virtualWrite( 4, zmienna_V4%11 ); } Blynk.run(); }
Działanie na filmiku:
To wszystko w tej części kursu. Do tej pory robiliśmy tylko rzeczy teoretyczne. W następnej części przygotujemy coś użyteczniejszego - będziemy badać temperaturę w pokoju.
Super projekt. Właśnie uruchomiłem dwa przyciski.
OdpowiedzUsuńFajna zabawa i zrobię otwieranie garażu na ESP12E.
Dzięki.
Pozdrawiam serdecznie.