Something works... not sure if it's useful
[pi-music.git] / glove.py
1 import pygame
2 import RPi.GPIO as gpio
3 import time
4 import logging
5
6 logger = logging.getLogger(__name__)
7 loggerFileHandler = logging.FileHandler('glove.log')
8 loggerFileHandlerFormatter = logging.Formatter('%(asctime)s %(levelname)-8s %(message)s')
9 loggerFileHandler.setFormatter(loggerFileHandlerFormatter)
10 logger.addHandler(loggerFileHandler)
11 logger.setLevel(logging.WARNING)
12 logger.setLevel(logging.INFO)
13
14
15 guitars = ['sounds/guitar1.wav',
16 'sounds/guitar2.wav',
17 'sounds/guitar3.wav',
18 'sounds/guitar4.wav',
19 'sounds/guitar5.wav']
20
21 pins = [25, 24, 18, 22]
22 pins = [25]
23
24 pygame.mixer.init()
25 sounds = [pygame.mixer.Sound(g) for g in guitars]
26
27 gpio.setmode(gpio.BCM)
28 for pin in pins:
29 gpio.setup(pin, gpio.IN)
30
31 last_states = [gpio.input(p) for p in pins]
32 these_states = list(last_states)
33
34
35 def handle_sound(pin):
36 if gpio.input(pin):
37 sounds[pins.index(pin)].play()
38 logger.info("Started playing {0}".format(pins.index(pin)))
39 else:
40 sounds[pins.index(pin)].stop()
41 logger.info("Stopped playing {0}".format(pins.index(pin)))
42
43
44 for pin in pins:
45 gpio.add_event_detect(pin, gpio.BOTH, callback=handle_sound, bouncetime=200)
46 # gpio.add_event_detect(pin, gpio.FALLING, callback=stop_sound, bouncetime=100)
47
48 while True:
49 pass
50
51 #while True:
52 # these_states = [gpio.input(p) for p in pins]
53 # logger.debug("These: {0}, Last: {1}".format(these_states, last_states))
54 # for i in range(len(pins)):
55 # if these_states[i] and not last_states[i]:
56 # sounds[i].play()
57 # last_states[i] = these_states[i]
58 # logger.info("Started playing {0}".format(i))
59 # if not these_states[i] and last_states[i]:
60 # sounds[i].stop()
61 # last_states[i] = these_states[i]
62 # logger.info("Stopped playing {0}".format(i))