Malinini bobni

Naslednja naloga pri projektu glasbene skrinjice bo izdelava Malinine različice seta bobnov. To pomeni, da boš na preizkusno ploščico dodal/-a štiri gumbe in jih sprogramiral/-a tako, da se bo ob pritisku na posamezen gumb predvajal zvoke bobnov ali činel.

Strojna oprema

  • 1 Malina
  • 1 preizkusna ploščica (angl. breadboard)
  • 1 zatič oblike T s kablom (angl. T-cobbler with breakout cable)
  • 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)
  • Zvočne datoteke cowbell.ogg, crash.ogg, snare.ogg in tom.ogg
Opomba

Izkaže se, da ima pythonov modul pygame najmanj težav pri predvajanju zvočnih datotek v formatu Ogg Vorbis. Zato bo najbolje, da zvočne datoteke, ki jih želiš uporabiti v tem ali drugih projektih, najprej pretvoriš v format Ogg Vorbis. To lahko narediš na primer s programom Audacity, ali pa uporabiš kakšno spletno storitev za pretvarjanje med različnimi formati zvočnih datotek.

Navodila

  1. Poveži Malinine GPIO nožice in preizkusno ploščico s pomočjo T-zatiča in kabla.
  2. Poveži vse gumbe z nožico GND in nožicami GPIO 4, GPIO 17, GPIO 22 in GPIO 27 (glej zavihek Vezje).
  3. Odpri IDLE in ustvari novo datoteko tako, da klikneš File > New file.
  4. Shrani novo datoteko tako, da klikneš File > Save. Datoteki daj ime bobni.py.
  5. V isto mapo shrani tudi zvočne datoteke cowbell.ogg, crash.ogg, snare.ogg in tom.ogg.
  6. V datoteko bobni.py vnesi kodo z zavihka Koda.
  7. Shrani kodo s Ctrl+S in jo nato zaženi s F5.
  8. Izmenično pritiskaj gumbe in zaslišati bi moral/-a zvoke bobnov in/ali činel.


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

gumb1 = gpiozero.Button(4)
gumb2 = gpiozero.Button(17)
gumb3 = gpiozero.Button(27)
gumb4 = gpiozero.Button(22)

zvok1 = pygame.mixer.Sound('crash.ogg')
zvok2 = pygame.mixer.Sound('snare.ogg')
zvok3 = pygame.mixer.Sound('tom.ogg')
zvok4 = pygame.mixer.Sound('cowbell.ogg')

while True:
    if gumb1.is_pressed:
        zvok1.play()
    if gumb2.is_pressed:
        zvok2.play()
    if gumb3.is_pressed:
        zvok3.play()
    if gumb4.is_pressed:
        zvok4.play()

Izvorna koda