Semafor z gumbom za slepe

Naslednja naloga pri projektu prometne signalizacije bo nadgradnja prejšnje naloge: izdelava semaforja z gumbom za slepe. Semaforizirano križišče ima semafor za avtomobile, semafor za pešce, gumb s katerim pešec sproži prehod (oziroma zeleno luč za pešce) in brenčač, ki oddaja zvok, ki je v pomoč slepim pešcem. To pomeni, da boš na preizkusno ploščico dodal/-a pet LED diod (dve rdeči, oranžno in dve zeleni), gumb in aktivni piezo brenčač ter jih sprogramiral/-a tako, da bodo oponašale delovanje semaforja z gumbom za slepe.

Strojna oprema

  • 1 Malina
  • 1 preizkusna ploščica (angl. breadboard)
  • 1 zatič oblike T s kablom (angl. T-cobbler with breakout cable)
  • 5 LED diod (2 rdeče, 1 oranžne in 2 zelene barve)
  • 5 uporov 330 Ω
  • 1 pritisni gumb (angl. tactile switch)
  • 1 upor 10 kΩ
  • 1 aktivni piezo brenčač (angl. active piezo buzzer)
  • vtične žičke moški-moški (angl. jumper wire male-to-male)

Programska oprema

  • Python 3 (prednameščen na Raspbianu)
  • Pythonov modul gpiozero (prednameščen na Raspbianu)
  • Pythonov modul time (prednameščen na Raspbianu)

Navodila

  1. Poveži Malinine GPIO nožice in preizkusno ploščico s pomočjo T-zatiča in kabla.
  2. Poveži zeleni LED diodi z nožico GND in nožicama GPIO 17, GPIO 19 (glej zavihek Vezje).
  3. Poveži rdeči LED diodi z nožico GND in nožicama GPIO 22, GPIO 26 (glej zavihek Vezje).
  4. Poveži oranžno LED diodo z nožico GND in nožico GPIO 27 (glej zavihek Vezje).
  5. Poveži gumb z nožico GND in nožico GPIO 24 (glej zavihek Vezje).
  6. Poveži aktivni piezo brenčač z nožico GND in nožico GPIO 18 (glej zavihek Vezje).
  7. Odpri IDLE in ustvari novo datoteko tako, da klikneš File > New file.
  8. Shrani novo datoteko tako, da klikneš File > Save. Datoteki daj ime signalizacija7.py.
  9. V datoteko signalizacija7.py vnesi kodo z zavihka Koda.
  10. Shrani kodo s Ctrl+S in jo nato zaženi s F5.
  11. Ob pritisku na gumb bi morala začeti delovati simulacija semaforja z gumbom za slepe.


# encoding: utf-8
import gpiozero
import time

def prehod():
    time.sleep(2)
    # oranžna
    zelena.off()
    oranzna.on()
    time.sleep(1)
    # rdeča
    oranzna.off()
    rdeca.on()
    time.sleep(0.5)
    # zelena za pešce
    rdeca2.off()
    zelena2.on()
    zvok.on()
    time.sleep(2)
    # rdeča za pešce
    zvok.off()
    zelena2.off()
    time.sleep(0.5)
    # rdeča in oranžna
    rdeca2.on()
    oranzna.on()
    time.sleep(1)
    # zelena
    rdeca.off()
    oranzna.off()
    zelena.on()

# semafor za avtomobile
zelena = gpiozero.LED(17)
rdeca = gpiozero.LED(22)
oranzna = gpiozero.LED(27)

# semafor za pešce
zelena2 = gpiozero.LED(19)
rdeca2 = gpiozero.LED(26)

# gumb za pešce
gumb = gpiozero.Button(24)

# piezo aktivni brenčač
zvok = gpiozero.Buzzer(18)

# zelena za avtomobile, rdeča za pešce
rdeca.off()
oranzna.off()
zelena.on()
rdeca2.on()
zelena2.off()

# vsakokrat ko pešec pritisne gumb
while True:
    if gumb.is_pressed:
        prehod()

Izvorna koda