User manual

64
GPIO.setmode(GPIO.BCM)
LED = [4,18,23]
for i in range(3):
GPIO.setup(LED[i], GPIO.OUT, initial=False)
Een lijst definieert de GPIO-nummer van de drie LED's. Vervolgens initialiseert een lus de drie GPIO-poorten
als uitgangen en zet alle LED's op uitgeschakeld.
Ook in dit experiment gebruiken wij een
try...except-constructie en een gesloten lus, om het programma
steeds weer automatisch te laten lopen, tot de gebruiker het met
[Strg]+[C] afbreekt. Hierna volgen de
eigenlijke interessante functies, die toegang hebben op het besturingssysteem en de vrije geheugenruimte
oproepen.
s = os.statvfs('/') De statistische module os.statvfs() uit de os-bibliotheek levert diverse statische
informatie voor het bestandssysteem, die hier binnen de gesloten lus bij elke lusdoorloop opnieuw als object
in de variabele
s worden geschreven.
f = s.f_bsize * s.f_bavail / 1048576 Nu levert de methode s.f_bsize de grootte van een geheugenblok
in byte.
s.f_bavail geeft het aantal vrije blokken weer. Het product uit beide waarden geeft derhalve het
aantal vrije bytes weer, die hier door 1.048.576 wordt gedeeld, om het aantal vrije megabytes verkrijgen. Het
resultaat wordt in de variabele
f opgeslagen.
if f < g1:
x = "100"
Indien de vrije geheugenruimte kleiner is dan de eerste grenswaarde (1 MB), wordt de tekenvolgorde x, die
het patroon van de ingeschakelde LED aangeeft, op
"100" gezet. De eerste, rode LED moet branden. Het
patroon is een eenvoudige tekenketting uit de cijfers 0 en 1.
elif f < g2:
x = "110"
elif f < g3:
x = "010"
elif f < g4:
x = "011"
Met behulp van elif-vragen, worden de andere grenswaarden opgeroepen en het LED-patroon
overeenkomstig ingesteld, wanneer de eerste vraag niet overeenkomt, dus meer dan 1 MB vrije
geheugenruimte beschikbaar is.
else:
x = "001"
Indien geen van de vragen overeenkomt, dus meer vrije geheugenruimte beschikbaar is, dan de hoogste
grenswaarde aangeeft, wordt het LED-patroon op
"001"gezet. De laatste, groene LED moet branden.
for i in range(3):
GPIO.output(LED[i], int(x[i]))