BUTTON – widget orkiestra aplikacji BLYNK

By: | Post date: Listopad 16, 2017

Znalezione obrazy dla zapytania one man bandZa sobą mamy już opis  LEDa – mini widgetu ze skromnymi jak na BLYNKa możliwościami. Jednak nawet ten ubogi wirtualny element funkcjonalnością przewyższa ledy z realnej elektroniki. Tak to już jest z wirtualną rzeczywistością, że jedynym jej ograniczeniem jest wyobraźnia  programistów. Co można ciekawego zrobić gdy nie trzymamy się kurczowo materialnych pierwowzorów a pozwalamy sobie na odrobinę fantazji pokazuje nam przykład kolejnego widgeta. BUTTON jest dla mnie absolutnym number one wśród BLYNKowych klocków lego. Dlaczego? O tym już za chwilę.

Przycisk to podstawa automatyki. Również w aplikacji BLYNK. Warto więc poznać dokładnie jego możliwości gdy tworzymy własny panel sterowania. Na początek kilka informacji podstawowych.

 

BUTTON steruje

Widget zaprojektowany został zasadniczo jako element sterujący (wysyłający informację do urządzenia).  Obsługuje zarówno piny rzeczywiste jak i wirtualne. Piny rzeczywiste obsługuje perfekcyjnie i polecam jego wykorzystanie wszędzie tam gdzie błyskawicznie potrzebujemy wysterować portem naszego mikrokontrolera.

Pełnię możliwości BUTTON ujawnia po dołączeniu go do pinu wirtualnego. Staje się wtedy multiwidgetem z pełnymi możliwościami zarówno sterowania jak i odczytu informacji. Co ciekawe element ten wyła zarówno informacje binarne (0/1) jak i analogowe. Przycisk zadający wielkości analogowe? W świecie wirtualnym wszystko jest możliwe.

Do obsłużenia przycisku stosujemy standardową procedurę  BLYNK_WRITE(Vxxx) dzięki której przeniesiemy wartość wirtualnego pina związanego z elementem BUTTON do naszej zmiennej w programie.

Biblioteka BLYNK wywołuje procedurę BLYNK_WRITE()  każdorazowo w momencie naciśnięcia i zwolnienia klawisza. Jej efektem jest nowa wartość funkcji param.asInt() identycznej z wartością jaką przypisaliśmy klawiszowi w stanie on i off. 

BLYNK_WRITE(V1) //Button Widget is writing to pin V1
{
  int mojazmienna = param.asInt(); 
}

Jeśli korzystamy z ustawień standardowych przycisk będzie wysyłał dane 0 i 1. Ale nie musi. Możemy obu stanom przypisać dowolne wartości od -9999 do 99999 i wysyłać je do programu jako dodatkową informację sterującą. Mamy więc już co najmniej trzy informacje wysyłane z przycisku

  • informacja typu zdarzenie – naciśnięcie lub zwolnienie przycisku (informacja dostarczana poprzez fakt wywołania procedury  BLYNK_WRITE()
  • informacja o stanie przycisku załączony/ wyłączony – przez wysyłanie dwu rożnych wartości dla obu stanów. Stan jest do odczytania w każdym momencie działania programu gdyż jest on zapisany na serwerze
  • przesyłanie zmiennej wielkości z widgetu do programu – poprzez nadanie wartości -9999 do 99999 stanom ON i OFF w ustawieniach widgeta

Popatrzmy na poniższy przykład

int danaBUTTON;
BLYNK_WRITE(V1) { //procedura wywoływana przy zmianie stanu przycisku
danaBUTTON = param.asInt();
Serial.println("-------- przycisk zmienia stan");
}
void printB() {   //procedura wywoływana co 1 sek
if (danaBUTTON < 1) Serial.println("przycisk OFF"); else Serial.println("przycisk ON");
Serial.print("wartość wyslana do programu = ");
Serial.println(danaBUTTON);
}

i tak to widać w programie

BUTTON zmienia kształt

BUTTON należy do widgetów o zmiennym kształcie. Jego wielkość (szerokość) można zmieniać w aplikacji w zakresie od 2 do 8 jednostek. Zwiększenie wymiarów nie tylko ułatwia operowanie elementem ale przede wszystkim umożliwia wyświetlanie większej ilości informacji.

BUTTON wyświetla

BUTTON jest także znakomitym elementem do wyświetlania różnego typu informacji. Są to

  • informacja typu „zmiana koloru widgeta” z palety 255x255x255 kolorów (bardzo przydatne)
  • informacja zawarta w etykiecie – ilość wyświetlanych znaków zależy od rozmiaru elementu (funkcja mało przydatna ze względu niewielki rozmiar czcionki
  • informacja zawarta w stanie ON i OFF elementu – odpowiednik LEDa – (bardzo przydatna)
  • informacja zawarta w opisie stanu ON i OFF  – ilość wyświetlanych znaków zależy od rozmiaru elementu, czcionka dopasowuje automatycznie swoją wielkość w zależności od ilości wyświetlanych znaków

I mały pokaz możliwości wyświetlania informacji

i kawałek kodu z funkcjami wyświetlania informacji

void printB() { //procedura wywoływana co 2 sek
klik = !klik;
if (klik) klik2=!klik2;
Blynk.virtualWrite(V1, klik); // ON/OFF - jak w led
if(klik2)Blynk.setProperty(V1, "color", _RED);else Blynk.setProperty(V1, "color", _GREEN);
Blynk.setProperty(V1, "label", String("ETYKIETA "+String(millis())));
Blynk.setProperty(V1, "onLabel", String("I tu tez "+String(millis())));
Blynk.setProperty(V1, "offLabel", String("wyswitlam "+String(millis())));
}

 

onLabel i offLabel  wyświetlają informacje przy naciśniętym lub zwolnionym przycisku.

label wyświetla informacje na etykiecie.

Wysyłanie na pin V1 wartości 0/1 załącza i wyłącza przycisk dzięki czemu BUTTON pełni rolę dużego LEDa.

Możemy również zdalnie ustawiać wartości ON i OFF w widgecie procedurą

Blynk.setProperty(V1, "min", liczba_l);
Blynk.setProperty(V1, "max", liczba_h);

Do czego się to może przydać – o tym przy innej okazji.

Nie ma co ukrywać – lubię ten widget i kosztuje tylko 200 pkt.

22

 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *