Program Te­plo­ta a LED

Program určený pro Raspberry s využitím GPIO, měření teploty, použitím dvou LED diod a Python

Stáhnout

O programu

Program Teplota a LED je napsaný v programovacím jazyce Python, čte údaje o teplotě a vyhodnocuje jejich hodnotu, v případě teploty vyšší než 55 °C se rozbliká červená LED, v případě teploty nižší jak 55 °C bliká zelená LED(zelenou LED můžeme vynechat).

Nastavení hranice teploty provedeme editací údaje maximalniteplota = 55.

Program je vhodný pro kontrolu teploty proti přehřátí.

Požadavky

Předpokladem pro spuštění programu Teplota a LED je libovolné zařízení Raspberry PI s funkčním operačním systémem Raspbian, Pythonem vyšším verze 2 a v něm knihovny OS a time.

Připojení GPIO

Červenou LED D1 pro vysokou teplotu zapojíme kladným pólem do GPIO16 (č.36).

Zelenou LED D2 pro nízkou teplotu zapojíme kladným pólem do GPIO20(č.38).

Obě LED uzemníme do GND.

Spuštění

Spuštění programu provedeme pomocí příkazu python, bez kterého se neobejdeme a zadáním názvu souboru teplotaled.py.

python teplotaled.py

Kód

import RPi.GPIO as GPIO
import time
import os
Ledvysoka = 16 # Cislo LED pri vysoke teplote
Lednizka = 20 # Cislo LED pri nizke teplote
def measure_temp():    # funkce mereni teploty
        temp = os.popen("vcgencmd measure_temp").readline()
        return (temp.replace("temp=", ""))
maximalniteplota = 55
def vyhodnoceni(teplota, hodnota):
    return teplota > hodnota

def setup(): # Podprogramu setup, provede se na zacatku
  GPIO.setmode(GPIO.BCM)         # Cislovani pinu - BCM nebo BOARD
  GPIO.setup(Ledvysoka, GPIO.OUT)   # Nastaveni pinu jako vystupu
  GPIO.setup(Lednizka, GPIO.OUT)
def blink(): # Podprogram blink, ktery se bude vykonavat
    while True:  # Nekonecna smycka
        udaje = int(measure_temp()[:2])   # vysledek je dvoumistne cislo teploty
        if udaje > maximalniteplota:
            GPIO.output(Ledvysoka, GPIO.HIGH) # Zapnuti LED diody pomoci prikazu GPIO.HIGH
            time.sleep(1)                  # Pauza po dobu 1 sekundy (delay)
            GPIO.output(Ledvysoka, GPIO.LOW)  # Vypnuti LED diody pomoci prikazu GPIO.LOW
            time.sleep(1)                  # Pauza po dobu 1 sekundy (delay)
        else:
            GPIO.output(Lednizka, GPIO.HIGH) # Zapnuti LED diody pomoci prikazu GPIO.HIGH
            time.sleep(1)                  # Pauza po dobu 1 sekundy (delay)
            GPIO.output(Lednizka, GPIO.LOW)  # Vypnuti LED diody pomoci prikazu GPIO.LOW
            time.sleep(1)                  # Pauza po dobu 1 sekundy (delay)

def ukonci(): # Podprogram, ktery bude zavolan pri ukonceni programu
  GPIO.output(Ledvysoka, GPIO.LOW)    # Vypnuti LED diody
  GPIO.output(Lednizka, GPIO.LOW)    # Vypnuti LED diody 
  GPIO.cleanup()                   # Uvolneni vsech GPIO portu pro dalsi pouziti

if __name__ == '__main__': # Program zacina ZDE
  setup()  # Zavolani podprogramu setup
  try:     # Zavolani podrogramu blink s osetrenim vyjimky nize
    blink()    
  except KeyboardInterrupt:  # Pri stisku zkratky 'Ctrl+C' se vykona podprogram ukonci
    ukonci()