Zvočni učinki, LED diode in gumbi

Druga naloga pri projektu igre Simon bo povezovanje LED diod, gumbov in zvokov. To pomeni, da boš na preizkusno ploščico dodal/-a 4 LED diode (rdečo, modro, oranžno in zeleno) in 4 gumbe ter jih sprogramiral/-a tako, da bo ob pritisku na gumb zasvetila ustrezna dioda in se predvajal ustrezen zvok.

Strojna oprema

  • 1 Malina
  • 1 preizkusna ploščica (angl. breadboard)
  • 1 zatič oblike T s kablom (angl. T-cobbler with breakout cable)
  • 4 LED diode (rdeče, modre, oranžne in zelene barve)
  • 4 upori 330 Ω
  • 4 pritisni gumbi (angl. tactile switch)
  • 4 upori 10 kΩ
  • 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 pygame (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 rdečo LED diodo z nožico GND in nožico GPIO 18 (glej zavihek Vezje).
  3. Poveži modro LED diodo z nožico GND in nožico GPIO 4 (glej zavihek Vezje).
  4. Poveži oranžno LED diodo z nožico GND in nožico GPIO 22 (glej zavihek Vezje).
  5. Poveži zeleno LED diodo z nožico GND in nožico GPIO 23 (glej zavihek Vezje).
  6. Poveži vse gumbe z nožico GND in nožicami GPIO 13, GPIO 16, GPIO 19 in GPIO 20 (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 simon2.py.
  9. V datoteko simon2.py vnesi kodo z zavihka Koda.
  10. Shrani kodo s Ctrl+S in jo nato zaženi s F5.
  11. Ob pritisku na gumb bo zasvetila ustrezna dioda in se predvajal ustrezen zvok.


# encoding: utf-8
import gpiozero
import pygame
import time
pygame.init()

def predvajaj(i):
    led[i].on()
    zvok[i].play()
    time.sleep(1)
    led[i].off()

led = [
    gpiozero.LED(4),  # modra
    gpiozero.LED(18), # rdeča
    gpiozero.LED(22), # oranžna
    gpiozero.LED(23)  # zelena
]

gumb = [
    gpiozero.Button(13), # modra
    gpiozero.Button(16), # rdeča
    gpiozero.Button(19), # oranžna
    gpiozero.Button(20)  # zelena
]

zvok = [
    pygame.mixer.Sound('blue.ogg'),   # modra
    pygame.mixer.Sound('red.ogg'),    # rdeča
    pygame.mixer.Sound('orange.ogg'), # oranžna
    pygame.mixer.Sound('green.ogg')   # zelena
]


while True:
    if gumb[0].is_pressed:
        predvajaj(0)
    if gumb[1].is_pressed:
        predvajaj(1)
    if gumb[2].is_pressed:
        predvajaj(2)
    if gumb[3].is_pressed:
        predvajaj(3)

Izvorna koda