Inteligentny dom #3

in #polish6 years ago (edited)

logo.png

Hello world

Jakiś czas temu @fervi pisał o tym w jaki sposób wygląda znane i lubiane hello world w języku PHP. Jako, że python podobnie jak PeHap jest językiem skryptowym, wypisanie takiego prostego komunikatu, będącego pierwszym krokiem w programowaniu jest bajecznie proste i zawiera się w jednej linii

print(”Hello World!”)

Jednak, moje wpisy związane z inteligentnym domem to przede wszystkim programowanie systemów embedded, dlatego też pokażę Wam różnicę w “elektronicznym” hello world, między pythonem a najbardziej popularnym językiem do kodzenia mikroprocesorów jakim jest C.

Migaj tak jak Ci każe!

Jeśli zaczynasz swoją przygodę z programowaniem mikroprocesorów, zazwyczaj pierwsze ćwiczenie dotyczy migania diodą. Jest to typowy hello world dla przyszłego programisty embedded. Całość tego zagadnienia składa się z następujących czynnośći:

  • import odpowiedniej biblioteki
  • ustawienie wybranego pinu jako wyjścia
  • wystawienie na nim potencjału na określony czas
  • wyłączenie napięcia
  • zapętlenia dwóch ostatnich kroków.

Dla języka C, w którym chcemy zaprogramować mikroprocesor, kod ten przybierze mniej więcej taką strukturę:

int main(void){ DDRC |= (1<<PC7); while(1){ PORTC &= ~(1<<PC7); _delay_ms(1000); PORTC |= (1<<PC7); _delay_ms(1000); } #include <avr/io.h> #include <util/delay.h>

Bez wgryzania się w szczegóły, dzieje się mniej więcej tutaj to co opisałem w punktach wyżej.
Dla porównania, równoważny kod napisany w Pythonie to następujące linijki:

Import Adafriut_BBIO.GPIO as GPIO From time import sleep LED=”P9_12” GPIO.setup(LED, GPIO.OUT) For I in range(0,10): GPIO.output(LED, GPIO.HIGH) Sleep(1) GPIO.output(LED, GPIO.LOW) Sleep(1) GPIO.cleanup()

Jak widzicie, kod jest delikatnie krótszy do tego wydaje się mniej skomplikowany. Spróbujmy rozgryźć co się dzieje w poszczególnych liniach.

Import Adafriut_BBIO.GPIO as GPIO

W pierwszej linii importujemy bibliotekę, która pozwala na sterowanie stanami na poszczególnych pinach i skracamy jej dość długą nazwę przypisując do niej skrót GPIO. Biblioteka ta jest bardzo zbliżona do tej używanej w Rasberry dlatego też ewentualna przesiadka z BB powinna być łatwa.

From time import sleep

Z biblioteki time importujemy funkcje sleep, która pozwoli nam wprowadzać opóźnienia.

LED=”P9_12”

Tutaj zmieniamy domyślną numerację pinu na taką nazwę, którą nam będzie łatwiej operować.

GPIO.setup(LED, GPIO.OUT)

Czwarta linijka to zdefiniowanie pinu, który wcześniej wybraliśmy, tak że ma on być wyjściem.

For I in range(0,10):

W tym miejscu programu inicjujemy pętle, która według naszych założeń ma zrobić 10 powtórzeń.

GPIO.output(LED, GPIO.HIGH)

Ta linijka to ustawienie stanu wysokiego na pinie.

Sleep(1)

Z kolei ta komenda służy do wywołania opóźnienia w programie. Wartość wpisana tutaj w liczbach mówi na ile sekund stan wywołany wcześniej pozostanie niezmieniony.

GPIO.output(LED, GPIO.LOW)

Kolejna punkt, zbliżony do tego z linii numer 6 oznacza wyłączenie napięcia na pinie

Sleep(1) Opóźnienie po raz kolejny.

W taki o to sposób napisaliśmy elektroniczny hello world. Teraz musimy go w jakiś sposób zaimplementować do komputera. Możemy zrobić to bezpośrednio z poziomu naszego BB. Logujemy się przez terminal, wchodzimy do folderu, np. desktop:
1.png
i wpisujemy:
nano migacz.py
Tworzymy w ten sposób plik. Wklejamy do niego zawartość, którą przed chwilą napisaliśmy i zapisujemy klikając ctrl+o. Potwierdzamy nazwę i plik został zapisany.

2.png

Po podłączeniu diody tak jak na poniższym zdjęciu:

IMG_20180918_212923.jpg

musimy jeszcze tylko uruchomić nasz plik.
Wchodzimy przez terminal do folderu gdzie jest nasz skrypt, możemy sobie wylistować jego zawartość by być pewnym, że on się tam znajduje.

ls

I wpisujemy polecenie

python migacz.py

Jeśli wszystko przebiegło pomyślnie nasz układ powinien zacząć migać 😊
IMG_20180918_212928.jpg

Podsumowanie

W tym wpisie pokazałem Wam, jak w łatwy sposób można kontrolować za pomocą języka skryptowego, jakim jest Python, wyjścia w komputerze beagle bone. W kolejnym wpisie udoskonalimy trochę nasz skrypt by poznać inne tajniki i w pewien sposób zacząć łączyć sterowanie pinami komputera z danymi, które będą pobierane z zewnątrz. Już teraz serdecznie zapraszam! 😊

Sort:  

Jak zawsze propsuje

Dziękuję :) chociaż przyznam że trochę koślawy mi ten post wyszedł.

Kurde mega ciekawe to jest :) chociaż wciąż dla mnie to czarna magia, choć już mniejsza :)

Ciesze sie, ze zaciekawilem :) Krok po kroku a nauczymy sie tego :) Polecam probowac!