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ę:

#include <avr/io.h> #include <util/delay.h>

int main(void){

DDRC |= (1<<PC7); 
while(1){
    PORTC &= ~(1<<PC7);
    _delay_ms(1000);
    PORTC |= (1<<PC7);
    _delay_ms(1000);

}

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!

Coin Marketplace

STEEM 0.30
TRX 0.11
JST 0.034
BTC 66499.54
ETH 3203.31
USDT 1.00
SBD 4.14