piątek, 8 marca 2019

LED widget - aplikacja BLYNK cosik do nas mryga


Otaczająca nas rzeczywistość jest dla naszych zmysłów  światem analogowym. Jesteśmy wciąż atakowani nieskończnoną ilością barw, odcieni szarości, nieogarniętą gamą smaków czy zapachów. Ale w wielu sytuacjach zwłaszcza nagłych, kryzysowych czy awaryjnych potrzebujemy jedynie najważniejszych informacji. Tych niezbędnych do podjęcia natychmiastowej decyzji. Dwustanowych. BÓL. I ręka sama cofa siś od gorącego żelazka.
TAK/NIE, prawda/fałsz, 0/1, białe/czarne .... Listę taką można ciągnąć bez końca. I o ile stany te są zdefiniowane jednoznacznie to rodzaj sygnału - co będzie naszym TAK a co NIE - jest już sprawą umowną i mocno zależną od potrzeb,możliwości i historycznych doświadczeń. Lampki sygnalizacyjne należą do tej kategorii prostych wskaźników.  I tu zaczniemy opis widgetów BLYNKa.


LED jest najmniejszym w zbiorze elementów aplikacji BLYNKa. I to prawdę powiedziawszy jedyna jego zaleta. Gdyby go zabrakło funkcjonalność programu w niczym by nie ucierpiała, Ale o tym za chwilę.
LED pozwala dowiązać się jedynie do pinu wirtualnego. To nieliczny wyjątek w elementach wej/wyj. I nie bardzo wiadomo czemu, bo akurat do sygnalizacji stanów poru urządzenia nadaje się znakomicie. Z ustawień w aplikacji poza numerem pinu dostępne jest jedynie przypisanie nazwy i wybór 1 z 6 kolorów. I to wszystko.





Więcej możemy podziałać z mikroprocesora. Ale uwaga - wirtualny LED wymaga innego sterowania niż większość elementów wej/wyj. W każdym razie tak napisane jest w informacji o widgecie. Musimy więc wstępnie zadeklarować nazwę (led1) i nr pinu (V1) wirtualnego LEDa
WidgetLED led1(V1);
by móc go załączać i wyłączać wywołaniem funkcji
led1.off();
led1.on();
możemy również zmienić jasność świecenia w zakresie od 0 do 255
led1.setValue(127);

Dodatkowo - jak dla większości widgetów - możemy zdalnie sterować kolorem oraz opisem (etykietą) LEDa. Zmiany kolorów są bardzo użyteczne natomiast przydatność zmiany etykiet jest problematyczna ze względu na jej niewielki rozmiar na ekranie telefonu. No ale jest i możemy z prostego LEDa zrobić sobie nawet mini wyświetlacz Mini określa i ilość wyświetlanych znaków i ich niewielki rozmiar.
led1.setColor("#FF0000"); //FF0000  to nr koloru z palety barw
led1.setLabel("MojaLED");
Opisane powyżej procedury sterowania LEDa nie są jedynymi. Z nie znanych bliżej powodów LEDy mają zaimplementowany drugi równoległy sposób sterowania. A może jest odwrotnie - LEDem można sterować jak każdym innym widgetem a dodatkowo wprowadzono (???? po co ????) sterowanie powyższymi funkcjami.
Sterować jasnością LEDa można standardową procedurą Blynk.virtualWrite(Vx, dana).  Zmieniając wartość dana w zakresie 0-255 mamy pełną kontrolę nad LEDem.
Blynk.virtualWrite(V1, 255); // LED on
Blynk.virtualWrite(V1, 0); // LED off
Blynk.virtualWrite(V1, 127); // zmniejszenie jasności
Analogicznie zmiana koloru i etykiety dokonywana jest wywołaniem funkcji
Blynk.setProperty(V0, "color", "#D3435C");
Blynk.setProperty(V0, "label", "MojaLED");
Dla mnie drugi sposób jest dużo wygodniejszy - nie muszę pamiętać o wstępnej deklaracji LEDa i mogę w każdej chwili zamienić widget LED na inny bez konieczności zmian kodu mikroprocesora.
Co ważne - możemy odczytać aktualny stan LEDa procedurą BLYNK_WRITE(V1) - jak każdego innego widgetu wej/wy. Oznacza to, że tak naprawdę LED też jest elementem dwukierunkowym!
lub
byte k = led1.getValue();
I krótki filmik z przykładami zastosowań LEDów  w aplikacji (kod programu tutaj >>>>)
V10 - sterowanie funkcją led.on()/led.off
V11 - sterowanie funkcją Blynk.virtualWrite(V1, 255) /0
V12 - przykład regulacji jasności i jednoczesne użycie etykiety jako wyświetlacza wartości sterującej jasnością
V13 - sterowanie kolorami
V0  - tradycyjny u mnie wskaźnik połączenia z modułem



Interesujący jest LED V14. Nie jest on sterowany z mikroprocesora a z aplikacji w telefonie za pomocą widgetu EVENTOR i umieszczonego w nim prostego kodu. W mikroprocesorze pin V14 jest odczytywany (info wysyłane na serial) co potwierdza możliwość odnioru i wysyłania informacji przez element typu LED (a w zasadzie przez dowiązany do niego pin wirtualny).




Nie da się ukryć, że od początku tego wpisu kręcę nosem na BLYNKowego LEDa. Jaki jest sens kupowania go za 100 pkt do naszej aplikacji?  W zamian dostajemy mały element prezentujący w prosty sposób informację 0/1. Zgoda.  Ale jeśli tylko umówimy się z sobą i z innymi użytkownikami naszego projektu, iż sygnał 0 będzie reprezentowany np. kolorem czerwonym a 1 - zielonym wtedy  taką samą informację możemy sobie wyświetlić praktycznie każdym innym widgetem wej/wyj i niejako przy okazji i za free.
Wiem oczywiście, iż przyzwyczajenie do migających lampek czy ledów jest ogromne i nie jest łatwo to zmienić. Tytułowy obrazek mechanicznego kierunkowskazu jest tego najlepszym dowodem. Motoryzacja potrzebowała aż 30 lat by w latach 50-tych zamienić to zawodne i trudne technologicznie rozwiązanie na banalnie prosty kierunkowskaz migającej żarówki. Sugestia wyciągniętej ręki wskazującej skręt była tak ogromna, że większość konstruktorów nie dostrzegała prostego rozwiązania będącego tuż przed ich oczami.
Wirtualny LED w BLYNKu to taka historia elektroniki przeniesiona do telefonu.  Ale można  inaczej.




Jak widać na załączonym obrazku każden jeden element można zmusić do pracy z funkcjami dostępnymi w widgecie LED. Po to właśnie został stworzony BLYNK!!! By eksperymentować i odkrywać nowe możliwości telefonicznej aplikacji. W końcu są to klocki LEGO dla elektroników.

 16

Brak komentarzy:

Prześlij komentarz