User manual
Egy lista definiálja a három LED GPIO-portjainak a számát. Majd egy hurok a három GPIO-
portot kimenetként inicializálja, és az összes LED-et kikapcsolt állapotba állítja.
Ebben a kísérletben is egy try...except-szerkezetet és egy végtelenhurkot alkalmazunk azért,
hogy a program automatikusan újra és újra fusson mindaddig, amíg a felhasználó meg nem
szakítja a
[Strg]+[C] gombkombinációval. Ezután következnek az igazán érdekes funkciók,
amelyek hozzányúlnak az operációs rendszerhez, és lekérdezik a szabad tárolóhelyet.
s = os.statvfs('/') Az os-könyvtárból való os.statvfs() statisztikai modul különféle statisztikai
információkat szállít a fájlrendszer számára, amelyeket a végtelenhurkon belül minden egyes
hurokmenetben újólag objektumként be kell írni az
s változóba.
f = s.f_bsize * s.f_bavail / 1048576 Most az s.f_bsize metódus egy memóriablokk méretét szolgáltatja
bájtban. Az
s.f_bavail a szabad blokkok számát adja meg. A két érték szorzata adja ki
ennélfogva a szabad bájtok számát, amelyet itt 1.048.576-tal elosztva kapjuk meg a szabad
megabájtok számát. Az eredmény az
f változóban lesz tárolva.
Ha a szabad tárolóhely kisebb, mint az első határérték (1 MB), akkor a bekapcsolt LED-ek
fénymintáját megadó
xkaraktersor "100" -ra állítódik. Az első, a piros LED-nek világítania kell. A
minta egy egyszerű karaktersorozat, amely a 0 és az 1 számból áll.
Az elif-lekérdezések segítségével a további határértékek lekérdezése is végbemegy, és annak
megfelelően a LED-minta beállítása is, ha az első lekérdezés nem igaz, azaz több mint 1 MB
szabad tárolóhely áll rendelkezésre.
Ha egyik lekérdezés se volna igaz, azaz a felső határérték által megadottnál több szabad
tárolóhely áll rendelkezésre, a LED-minta
"001"-re állítódik. Az utolsó, zöld LED-nek kell
világítania.
GPIO.setmode(GPIO.BCM)
LED = [4,18,23]
for
i
in range(3):
GPIO.setup(LED[i],
GPIO.OUT,
initial=False)
if f
< g1:
x = "100"
elif f
< g2:
x = "110"
elif f
< g3:
x = "010"
elif f
< g4:
x = "011"
else:
x = "001"
for
i
in range(3):
GPIO.output(LED[i], int(x[i]))
64