User manual
6.1.1
Ez így működik:
A program egy része ismerősnek tűnhet, néhány eleme azonban nem, mert ezen a helyen
kiruccanunk az objektum orientált programozáshoz. A kezdésnél, mint ismert, könyvtárakat
importálunk. Ezúttal csak egyetlen
LEDváltozót határozunk meg a kimenetként inicializált 18.
GPIO-port számára.
print ("Strg+C beendet das program") ("A Ctrl + C befejezi a programot")Mivel ez a program is atry...except-
szerkezettel fut, és a felhasználónak kell leállítania, erről megfelelő tájékoztatást kap a
felhasználó.
p = GPIO.PWM(LED, 50) A GPIO-könyvtárból vett GPIO.PWM() funkció döntő fontosságú a PWM-
jelek kiadása szempontjából. Ennek a funkciónak két paraméterre van szüksége, a GPIO-portra
és a PWM-jel frekvenciájára. Esetünkben a GPIO-portot a
LED változó határozza meg, a
frekvencia (másodpercekénti rezgésszám) 50 Hz .
A GPIO.PWM() egy úgynevezett objektumot hoz létre, amely a p változóban lesz tárolva. Az ilyen
objektum sokkal több, mint csak egy egyszerű változó. Az objektumoknak különféle
tulajdonságaik lehetnek, és úgynevezett metódusokkal lehet befolyásolni őket. A metódusok,
egy ponttal elválasztva, közvetlenül az objektumnév mögött vannak megadva.
p.start(0) A start() metódus elindítja a PWM-jel generálását. Ehhez még meg kell adni egy
impulzuskitöltési tényezőt. Esetünkben a kitöltési tényező
0, a LED tehát mindig ki van
kapcsolva. Most elindul a végtelen hurok, amelybe közvetlenül be van ágyazva két egymás
utáni hurok, amelyek váltakozva fényesebbé és sötétebbé teszik a LED-et.
for c in range(0, 101, 2): A hurok 2-es lépésekben számol 0-tól 100-ig. Egy for-hurok végéül mindig
azt az értéket kell megadni, amelyet éppen nem érünk el, esetünkben a
101-et.
p.
ChangeDutyCycle(c) Mindegyik hurokmenetben a ChangeDutyCycle() metódus a PWM-
objektum kitöltési tényezőjét a hurokszámláló értékére állítja, tehát minden alkalommal 2%-
kal magasabbra, amíg csak az utolsó menetnél nem áll 100%-on , és a LED a teljes
fényerővel világít.
time.sleep(0.1) Mindegyik hurokmenetben 0,1 másodperc várakozási idő után nő meg 2%-kal a
kitöltési tényező a következő menetre.
Miért az 50 Hz az ideális frekvencia a PWM számára?
Az emberi szem a 20 Hz-nél gyorsabb fényváltozásokat már nem észleli. Mivel Európában
a váltóáramú hálózat frekvenciája 50 Hz, sok fénycső ezzel a frekvenciával villog, amelyet
a szemünk nem vesz észre. Ha egy LED 20 Hz-nél nagyobb, de 50 Hz-nél kisebb
frekvenciával villogna, interferencia jöhetne létre más fényforrásokkal, ami miatt a
fényszabályozás hatása nem érvényesülne egyenletesen.
for c in range(100, -1, -2):
p.ChangeDutyCycle(c); time.sleep(0.1)
56