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.