sobota, 27 lutego 2016

ESPBLYNK #04 Przesyłanie wartości liczbowej na ekran telefonu

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.



1 komentarz:

  1. Super projekt. Właśnie uruchomiłem dwa przyciski.
    Fajna zabawa i zrobię otwieranie garażu na ESP12E.
    Dzięki.
    Pozdrawiam serdecznie.

    OdpowiedzUsuń