chockladhjul/hjul.py
2024-10-28 20:07:01 +01:00

240 lines
5.3 KiB
Python

import board
import neopixel
import pygame
import time
import os
import RPi.GPIO as GPIO
# Initiera Pygame
pygame.init()
# https://electropeak.com/learn/tutorial-raspberry-pi-gpio-programming-using-python-full-guide/
#initiera LED-strip med 300 led
num_of_pixels = 300
pixels = neopixel.NeoPixel(board.D21, num_of_pixels)
#resetta alla IO
GPIO.setmode(GPIO.BCM)
GPIO.setup(21, GPIO.OUT)
GPIO.output(21, 0)
GPIO.setmode(GPIO.BCM)
GPIO.setup(40, GPIO.OUT)
GPIO.output(40, 0)
#slå på nr 0,1,299 led
pixels.fill((0,0,0)) # stäng av alla LED
pixels.show() # stäng av alla LED
def setpixel(r,g,b,nr):
pixels[nr] = (r,g,b)
pixels.show()
def spela_ljud(filnamn):
pygame.mixer.init()
pygame.mixer.music.load(filnamn)
pygame.mixer.music.set_volume(1.0)
pygame.mixer.music.play()
pygame.mixer.init()
pygame.mixer.music.load("ljud.mp3")
pygame.mixer.music.set_volume(1.0)
pygame.mixer.music.play()
# Initiera joystickar
pygame.joystick.init()
# Kontrollera antalet anslutna joystickar
joystick_count = pygame.joystick.get_count()
if joystick_count < 2:
print("Mindre än två joystickar anslutna. Kontrollera anslutningarna.")
pygame.quit()
exit()
# Anslut till de första två joystickarna
joystickB = pygame.joystick.Joystick(0)
joystickC = pygame.joystick.Joystick(1)
joystickA = pygame.joystick.Joystick(2)
joystickA.init()
joystickB.init()
joystickC.init()
spela_ljud("ljud.mp3")
pixels.fill((0,0,0)) # stäng av alla LED
pixels.show() # stäng av alla LED
#definiera en funktion per knapp
def JB_knapp_0():
print ("Joystick B, Knapp 1")
setpixel(255,255,255,10)
setpixel(255,255,255,11)
def JB_knapp_1():
print ("Joystick B, Knapp 2")
setpixel(255,255,255,14)
setpixel(255,255,255,15)
def JB_knapp_2():
print ("Joystick B, Knapp 3")
setpixel(255,255,255,18)
setpixel(255,255,255,19)
def JB_knapp_3():
print ("Joystick B, Knapp 4")
def JB_knapp_4():
print ("Joystick B, Knapp 5")
def JB_knapp_5():
print ("Joystick B, Knapp 6")
def JB_knapp_6():
print ("Joystick B, Knapp 7")
def JB_knapp_7():
print ("Joystick B, Knapp 8")
pixels.fill((0,0,0)) # stäng av alla LED
pixels.show() # stäng av alla LED
def JB_knapp_8():
print ("Joystick B, Knapp 9")
def JB_knapp_9():
print ("Joystick B, Knapp 10")
def JB_knapp_10():
print ("Joystick B, Knapp 11")
def JB_knapp_11():
print ("Joystick B, Knapp 12")
def JA_knapp_0():
print ("Joystick A, Knapp 1")
def JA_knapp_1():
print ("Joystick A, Knapp 2")
def JA_knapp_2():
print ("Joystick A, Knapp 3")
def JA_knapp_3():
print ("Joystick A, Knapp 4")
def JA_knapp_4():
print ("Joystick A, Knapp 5")
def JA_knapp_5():
print ("Joystick A, Knapp 6")
def JA_knapp_6():
print ("Joystick A, Knapp 7")
def JA_knapp_7():
print ("Joystick A, Knapp 8")
def JA_knapp_8():
print ("Joystick A, Knapp 9")
def JA_knapp_9():
print ("Joystick A, Knapp 10")
def JA_knapp_10():
print ("Joystick A, Knapp 11")
def JA_knapp_11():
print ("Joystick A, Knapp 12")
def JC_knapp_0():
print ("Joystick C, Knapp 1")
def JC_knapp_1():
print ("Joystick C, Knapp 2")
def JC_knapp_2():
print ("Joystick C, Knapp 3")
def JC_knapp_3():
print ("Joystick C, Knapp 4")
def JC_knapp_4():
print ("Joystick C, Knapp 5")
def JC_knapp_5():
print ("Joystick C, Knapp 6")
def JC_knapp_6():
print ("Joystick C, Knapp 7")
def JC_knapp_7():
print ("Joystick C, Knapp 8")
def JC_knapp_8():
print ("Joystick C, Knapp 9")
def JC_knapp_9():
print ("Joystick C, Knapp 10")
def JC_knapp_10():
print ("Joystick C, Knapp 11")
def JC_knapp_11():
print ("Joystick C, Knapp 12")
#knappfunktioner
knappfunktioner_JA = [JA_knapp_0,JA_knapp_1,JA_knapp_2,JA_knapp_3,JA_knapp_4,JA_knapp_5,JA_knapp_6,JA_knapp_7,JA_knapp_8,JA_knapp_9,JA_knapp_10,JA_knapp_11]
knappfunktioner_JB = [JB_knapp_0,JB_knapp_1,JB_knapp_2,JB_knapp_3,JB_knapp_4,JB_knapp_5,JB_knapp_6,JB_knapp_7,JB_knapp_8,JB_knapp_9,JB_knapp_10,JB_knapp_11]
knappfunktioner_JC = [JC_knapp_0,JC_knapp_1,JC_knapp_2,JC_knapp_3,JC_knapp_4,JC_knapp_5,JC_knapp_6,JC_knapp_7,JC_knapp_8,JC_knapp_9,JC_knapp_10,JC_knapp_11]
try:
while True:
# Hämta alla händelser
for event in pygame.event.get():
if event.type == pygame.JOYBUTTONDOWN:
if event.joy == 0:
knapp = event.button
print(f"Joystick B ,- Knapp {event.button} trycks ned.")
knappfunktioner_JB[knapp]()
if event.type == pygame.JOYBUTTONDOWN:
if event.joy == 1:
knapp = event.button
print(f"Joystick C - Knapp {event.button} trycks ned.")
knappfunktioner_JC[knapp]()
if event.type == pygame.JOYBUTTONDOWN:
if event.joy == 2:
knapp = event.button
print(f"Joystick A - Knapp {event.button} trycks ned.")
knappfunktioner_JA[knapp]()
# Pausa lite för att inte överbelasta processorn
time.sleep(0.01)
except KeyboardInterrupt:
print("Avslutar programmet.")
finally:
#Terminering
pixels.fill((0,0,0)) # stäng av alla LED
pixels.show() # stäng av alla LED
pygame.quit()