BLOGCZEJNalpha

Inteligentny dom #4

logo.png

W dzisiejszym wpisie spróbujmy do programu migającego diodą, dodać pewną interakcję z użytkownikiem. Będzie to początek obustronnej komunikacji z minikomputerem.
Zapraszam do wpisu!

Środowisko

Zanim jednak przejdziemy do modyfikowania pierwszego skryptu, zaopatrzmy się w dwa programy. Jeden z nich będzie naszym edytorem. Tutaj jest mnogość różnych rozwiązań, od tych darmowych, przez komercyjne.
Na komputerze domowym z Windowsem zainstalowany mam SublimeText i sprawuje się całkiem dobrze. Postanowilem również zainstalowac go na Linuxie, z którego aktualnie korzystam na delegacji.

sublime.png

Można również korzystać z wszelkich notatników, ale kolorowanie składni zdecydowanie pomaga w pisaniu skryptów i programów.

Drugim programem, który nam się przyda to WINscp dla środowiska windows i program o zbliżonych możliwościach dla niego jakim jest Filezilla, dostępna również dla Linuxa.
Program ten pozwala nam w łatwy sposób, napisany przez nas skrypt, przesłać bezpośrednio do BeagleBone (czy też maliny).

Konfiguracja tych programów jest bardzo prosta, zrzut z moich ustawień poniżej.

ustawienia .png

Porozmawiajmy!

Pierwszą rzeczą jaką możemy wprowadzić w ramach usprawnienia naszego pierwszego skryptu to możliwość definiowania ilość powtórzeń pętli. Zanim zaczniemy ją wykonywać, dodajmy następujące polecenie:



ilosc = input(" Hej! Ile raz chcesz mrugnac? ")


Funkcja ta napisze prośbę do użytkownika o podanie ilości powtórzeń przejść pętli i zapisze tą wartość w zmiennej „ilosc”.

Teraz z kolei musimy z edytować naszą pętle i zamiast wstawiać tam ilość powtórzeń w postaci liczby – wstawimy nowo powstałą zmienną.

Cały kod wygląda tak:

import Adafruit_BBIO.GPIO as GPIO
from time import sleep
LED= "P9_12"
GPIO.setup(LED, GPIO.OUT)
ilosc = input(" Hej! Ile raz chcesz mrugnac? ")

for i in range(0,ilosc):
GPIO.output(LED, GPIO.HIGH)
sleep(1)
GPIO.output(LED, GPIO.LOW)
sleep(1)

GPIO.cleanup()

Sprawdźmy jak to działa:

ile razy.png

Musicie mi uwierzyć, że dioda faktycznie mrugnęła 7 razy 😊

Co się stanie gdy zamiast liczby wstawimy jakiś inny znak?
Program zareaguje tak.

zabezpieczenie.png

W analogiczny sposób, możemy poprosić, żeby użytkownik podał czas opóźnienia. Możemy zdefiniować różne zmienne dla delaya przy świeceniu i przy zgaszeniu.

delay_on = input("Jak dlugo ma sie swiecic? ")
delay_off = input("A jak dlugo ma byc ciemno? ")

Analogicznie jak w przypadku ilosci krokow, sztywna wartosc zamieniamy na nazwe zmiennej.

import Adafruit_BBIO.GPIO as GPIO
from time import sleep
LED= "P9_12"
GPIO.setup(LED, GPIO.OUT)
ilosc = input(" Hej! Ile raz chcesz mrugnac? ")
delay_on = input("Jak dlugo ma sie swiecic? ")
delay_off = input("A jak dlugo ma byc ciemno? ")

for i in range(0,ilosc):
GPIO.output(LED, GPIO.HIGH)
sleep(delay_on)
GPIO.output(LED, GPIO.LOW)
sleep(delay_off)

GPIO.cleanup()

I naszym oczom ukazuje się taki rezultat:

ostatni.png

Podsumowanie

W taki oto sposób zmodyfikowaliśmy nasz program by moc się komunikować bezpośrednio z minikomputerem. Stad już bliska droga by robić to za pomocą np. telefonu. Uruchomiony na BB bardzo prosty serwer, na którym wgrana jest strona WWW, gdzie naciskając wirtualny przycisk jesteśmy w stanie załączać jakiś odbiornik podłączony do naszego BeagleBone.

Nie wybiegajmy jednak w przód za bardzo!
Zostało do omówienia jeszcze kilka funkcji, które są wbudowane w bibliotekę Adafruit, a które przydadzą nam się w sterowaniu inteligentnym domem.

Dziękuje za uwagę i do następnego razu!

KOMENTARZE