2 # Tony Goodhew 19 November 2015
3 # Uses SnowPi and switch with 10K Ohm pull up on GPIO #16
4 # PWM brightness control of nose
6 # Import required libraries
7 import RPi
.GPIO
as GPIO
12 # Tell GPIO library to use GPIO references
13 GPIO
.setmode(GPIO
.BCM
)
15 GPIO
.setup(sw
,GPIO
.IN
)
17 LEDs
= [7,8,9,22,18,17,23,24] # Not nose
18 # Setup LED pins as outputs
20 GPIO
.setup(LEDs
[x
], GPIO
.OUT
)
21 GPIO
.output(LEDs
[x
], False)
22 # Light white and blue LEDs
24 GPIO
.output(LEDs
[x
], True)
26 # Set up PWM on nose to control brightness
28 freq
= 200 # PWM frequency - 200 times /sec
29 dutyCycle
= 0 # percentage of time on - range 0 to 100
30 GPIO
.setup(LED
,GPIO
.OUT
)
31 pwmLED
= GPIO
.PWM(LED
,freq
)
34 def spin(): #Clockwise
36 GPIO
.output(LEDs
[i
],0) # White Off
39 GPIO
.output(LEDs
[i
],1)
41 GPIO
.output(LEDs
[i
],0)
43 GPIO
.output(LEDs
[i
],1) #White ON
46 def spin2(): # Counter Clockwise
48 GPIO
.output(LEDs
[i
],0) # White OFF
50 for i
in range(5,-1,-1):
51 GPIO
.output(LEDs
[i
],1)
53 GPIO
.output(LEDs
[i
],0)
55 GPIO
.output(LEDs
[i
],1) # White ON
59 GPIO
.output(LEDs
[7],0)
61 GPIO
.output(LEDs
[7],1)
65 GPIO
.output(LEDs
[6],0)
67 GPIO
.output(LEDs
[6],1)
70 def upDown(): # Up and Down
72 GPIO
.output(LEDs
[i
],0) # White OFF
75 GPIO
.output(LEDs
[n
],1)
76 GPIO
.output(LEDs
[5-n
],1)
78 GPIO
.output(LEDs
[n
],0)
79 GPIO
.output(LEDs
[5-n
],0)
83 GPIO
.output(LEDs
[n
],1)
84 GPIO
.output(LEDs
[5-n
],1)
86 GPIO
.output(LEDs
[n
],0)
87 GPIO
.output(LEDs
[5-n
],0)
90 GPIO
.output(LEDs
[i
],1) # White ON
93 def wobble(): # Side to side
95 GPIO
.output(LEDs
[i
],0) # White OFF
114 GPIO
.output(LEDs
[i
],1) # White ON
117 # ==== Main begins ====
118 pwmLED
.ChangeDutyCycle(100) # Nose full brightness
126 print("Hold button down to stop")
129 swVal
= GPIO
.input(sw
)
131 for brite
in range(0,90,5):
132 pwmLED
.ChangeDutyCycle(brite
) # Brighter nose
134 n
= random
.randint(0,5)
147 for brite
in range(90,0,-5):
148 pwmLED
.ChangeDutyCycle(brite
) # Dimmer nose
150 swVal
= GPIO
.input(sw
) # Check switch for stopping
153 print("Halted by button")
154 # Reset GPIO settings