Instructions
4
8
time.s
l
eep(0.1
)
for c in range(100, -1, -2)
:
p
.
Ch
ange
D
uty
C
yc
l
e(c
)
time.s
l
eep(0.1
)
exce
p
t Key
b
oar
dI
nterru
p
t
:
p
.sto
p()
; GPIO.cleanu
p()
6
.1
So
fun
k
tionie
r
t
es
Ein Tei
l
d
ieses Pro
g
ramms wir
d
I
h
nen
b
e
k
annt vor
k
ommen, eini
g
e E
l
emente a
b
er vie
ll
eic
h
t
g
ar nic
h
t,
d
a
wir an dieser Stelle einen Exkurs in die ob
j
ektorientierte Pro
g
rammierun
g
machen. Am An
f
an
g
werden, wie
b
e
k
annt, Bi
bl
iot
h
e
k
en importiert. Diesma
l
wir
d
nur eine einzi
g
e Varia
bl
e,
LED
,
f
ür den GPIO-Port18
f
est
g
e le
g
t,
d
ieser wir
d
a
l
s Aus
g
an
g
initia
l
isiert
.
print
(
"Strg+C beendet das Programm"
)
D
a auc
h
d
ieses Pro
g
ramm mit einem
t
ry...excep
t
-K
o
n
st
r
ukt
läu
f
t und vom Benutzer an
g
ehalten werden muss, wird eine entsprechende In
f
ormation
f
ür den Benutzer an
g
e-
ze
ig
t.
p = GPIO.PWM
(
LED, 50
)
Di
e
F
u
n
kt
i
o
n GPIO.PWM
()
aus
de
r
G
PI
O
-Bi
b
li
ot
h
e
k i
st
e
n
tsc
h
e
i
de
n
d
fü
r
d
i
e
Ausga
b
e von PWM-Signa
l
en. Diese Fun
k
tion
b
enötigt zwei Parameter,
d
en GPIO-Port un
d
d
ie Frequenz
d
es
PWM-Signa
l
s. In unserem Fa
ll
wir
d
d
er GPIO-Port ü
b
er
d
ie Varia
bl
e
LED
f
estgelegt, die Frequenz ist 50 Hertz
(
Schwingungen pro Sekunde
)
.
Warum 50Hertz die ideale Frequenz für PWM is
t
Das menschliche Auge nimmt Lichtwechsel schneller als 20Hertz nicht mehr wahr. Da das Wechsel
-
stromnetz in Europa eine Frequenz von 50Hertz nutzt, blinken viele Beleuchtungskörper mit dieser Fre
-
quenz, die vom Auge nicht wahrgenommen wird. Würde eine LED mit mehr als 20Hertz, aber weniger als
50Hertz blinken, könnte es zu Interferenzen mit anderen Lichtquellen kommen, wodurch der Dimmeffekt
nicht mehr gleichmäßig erschiene
.
GPIO.PWM
()
erzeugt ein sogenanntes O
b
je
k
t,
d
as in
d
er Varia
bl
en
p
gespeic
h
ert wir
d
. So
l
c
h
e O
b
je
k
te sin
d
weit
mehr als nur ein
f
ache Variablen. Objekte können verschiedene Eigenscha
f
ten haben und über soge nannte
Methoden beein
fl
usst werden. Methoden werden, durch einen Punkt getrennt, direkt hinter dem Objektnamen
angege
b
en
.
p.start
(
0
)
D
i
e
M
et
h
ode
s
tart
()
startet die Generierung des PWM-Signals. Dazu muss noch ein Tastver-
h
ä
l
tnis angege
b
en wer
d
en. In unserem Fa
ll
ist
d
as Tastver
h
ä
l
tnis
0
,
d
ie LED ist a
l
so immer ausgesc
h
a
l
tet. Jetzt
startet die Endlosschlei
f
e, in der direkt nacheinander zwei Schlei
f
en eingebettet sind, die abwechselnd die LED
helle
r
u
n
d
du
n
kle
r w
e
r
de
n
lasse
n
.
for c in range
(
0, 101, 2
)
: Di
e
Sc
hl
e
i
fe
z
ä
hl
t
in
Sc
hri
tte
n v
o
n
2
v
o
n
0
b
i
s
100
. A
ls
En
de
e
in
e
r
fo
r
-
Schlei
f
e wird immer der Wert angegeben, der gerade nicht erreicht wird, in unserem Fall
101
.
p.ChangeDutyCycle
(
c
)
I
n jedem Schlei
f
endurchlau
f
setzt die Methode
C
hangeDutyCycle
()
das
T
ast
v
e
r
hält-
nis des PWM-Objekts au
f
den Wert des Schlei
f
enzählers, also jedes Mal um 2% höher, bis es beim letzten
Durchlauf auf 100% steht und die LED in voller Helligkeit leuchtet
.
10145-5 Raspberry Pi verstehen und anwenden_01.indd 4810145-5 Raspberry Pi verstehen und anwenden_01.indd 48 30.06.2017 10:09:3330.06.2017 10:09:33