Barack hangszer
A hardver régi bútorlapból, hulladék deszkából és maradék szegőlécből, meg persze kábelekből áll. A titkos rész így néz ki: (igen, szigetelőszalaggal mindent meg lehet oldani)
Az érintés érzékelőnek szüksége van néhány csomagra:
sudo apt install git python3-pip python3-smbus i2c-tools espeak
A zenelejátszáshoz pygame-t használunk:
pip3 install pygame
A pygame-hez kell libsdl2:
sudo apt install libsdl2-mixer-2.0-0 libsdl2-image-2.0-0 libsdl2-2.0-0
Ha esetleg összekeveredtek a dolgok, ezzel tudsz rendet tenni:
sudo pip uninstall pygame==2.5.2 --break-system-packages sudo apt purge libsdl2-image-2.0-0 libsdl2-mixer-2.0-0 libsdl2-ttf-2.0-0 sudo apt purge libopusfile0 libportmidi0 sudo apt install python3-pygame
A forráskód:
import time, board, busio, adafruit_mpr121, pygame, subprocess i2c = busio.I2C(board.SCL, board.SDA) m = adafruit_mpr121.MPR121(i2c) lastTouch=0; prev=[False,False,False,False,False,False,False,False,False,False,False,False] sounds=[] soundKeys=8 lastSound=soundKeys; pygame.mixer.init(buffer=8192) dir="/home/pi/barack/" with open(dir+'all.txt') as f: allSound = f.read().splitlines() for i in range(soundKeys): prev.append(False); sounds.append(pygame.mixer.Sound(dir+"samples/"+allSound[i])) def speak(text): file_name=dir+"temp.txt" subprocess.call(["espeak", "-vhu", text,"-w"+file_name, "2>/dev/null"]) pygame.mixer.music.load(file_name) pygame.mixer.music.play(1) def changeSound(slot): global lastSound sounds[slot].stop() sounds[slot]=pygame.mixer.Sound(dir+"samples/"+allSound[lastSound]) lastSound+=1 if lastSound>=len(allSound): lastSound=0 speak("Indulhat a zene.") try: while True: for i in range(soundKeys): if m[i].value and prev[i]==False: prev[i]=True sounds[i].play(-1) elif m[i].value==False and prev[i]: lastTouch=i prev[i]=False sounds[i].stop() if m[10].value and prev[10]==False: prev[10]=True speak(allSound[lastSound]+" betöltve.") changeSound(lastTouch) elif m[10].value==False and prev[10]: prev[10]=False if m[11].value and prev[11]==False: prev[11]=True speak("Új hangok betöltve.") for i in range(soundKeys): changeSound(i) elif m[11].value==False and prev[11]: prev[11]=False time.sleep(0.15) except KeyboardInterrupt: pygame.mixer.quit() print("vége")
Az automatikus indításhoz az /etc/rc.local file-ba kell beírni:
python3 /home/pi/barack/barack.py &
Comments are closed.