Don’t fear the CRICKIT, more cowbell (video). This was a potentiometer test, along with 2 servos, multiple sound files, buttons, NeoPixels… and a fog machine trigger. McDonalds chicken nugget or salad dressing cup for the button, made with trash.
All our times have come
Here but now they’re gone
Seasons don’t fear the reaper
Nor do the wind, the sun or the rain, we can be like they are
More Cowbell:
https://en.wikipedia.org/wiki/More_Cowbell
Blue Oyster Cult – (Don’t Fear) The Reaper 1976:
https://www.youtube.com/watch?v=ClQcUyhoxTg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | import time import audioio from digitalio import DigitalInOut, Pull, Direction from adafruit_seesaw.seesaw import Seesaw from adafruit_seesaw.pwmout import PWMOut from adafruit_motor import servo from busio import I2C import neopixel import board # Create seesaw object i2c = I2C(board.SCL, board.SDA) seesaw = Seesaw(i2c) led = DigitalInOut(board.D13) led.direction = Direction.OUTPUT # Two onboard CPX buttons for FOG buttona = DigitalInOut(board.BUTTON_A) buttona.direction = Direction.INPUT buttona.pull = Pull.DOWN buttonb = DigitalInOut(board.BUTTON_B) buttonb.direction = Direction.INPUT buttonb.pull = Pull.DOWN # Use the signal port for potentiometer w/switch MORECOW = 2 # A switch on Signal #1 SWITCH = 3 # A potentiometer on Signal #2 # Add a pullup on the switch seesaw.pin_mode(SWITCH, seesaw.INPUT_PULLUP) # Servo angles BELL_START = 60 BELL_END = 75 MOUTH_START = 95 MOUTH_END = 105 # Create servos list servos = [] for ss_pin in (17, 16): #17 is labeled 1 on CRICKIT, 16 is labeled 2 pwm = PWMOut(seesaw, ss_pin) pwm.frequency = 50 #must be 50 cannot change _servo = servo.Servo(pwm, min_pulse=400, max_pulse=2500) servos.append(_servo) # Starting servo locations servos[0].angle = BELL_START servos[1].angle = MOUTH_START # For the fog machine we actually use the PWM on the motor port cause it really needs 5V! fog_off = PWMOut(seesaw, 22) fog_off.duty_cycle = 0 fog_on = PWMOut(seesaw, 23) fog_on.duty_cycle = 0 # Audio playback object and helper to play a full file a = audioio.AudioOut(board.A0) def play_file(wavfile): with open(wavfile, "rb") as file: wavf = audioio.WaveFile(file) a.play(wavf) while a.playing: servos[1].angle = MOUTH_START time.sleep(.2) servos[1].angle = MOUTH_END time.sleep(.2) # NeoPixels for EYES pixels = neopixel.NeoPixel(board.A1, 9, brightness=0.5) pixels[8] = (255, 255, 0) pixels[7] = (255, 255, 0) # Maps a number from one range to another. def map_range(x, in_min, in_max, out_min, out_max): mapped = (x-in_min) * (out_max - out_min) / (in_max-in_min) + out_min if out_min <= out_max: return max(min(mapped, out_max), out_min) return min(max(mapped, out_max), out_min) # Wait before starting up time.sleep(3) play_file("i-gotta-have-more-cowbell.wav") # a pause between audio clips time.sleep(1) play_file("only-prescription-more-cowbell.wav") while seesaw.digital_read(SWITCH): pass print("Ready for playing audio") time.sleep(1) f = open("fear11.wav", "rb") wav = audioio.WaveFile(f) a.play(wav) while True: if seesaw.digital_read(SWITCH): break # time to bail! pot = seesaw.analog_read(MORECOW) print(pot) eyecolor = (int(map_range(pot, 0, 1023, 255, 0)), int(map_range(pot, 0, 1023, 0, 255)), 0) pixels[8] = eyecolor pixels[7] = eyecolor if buttonb.value: fog_on.duty_cycle = 65535 else: fog_on.duty_cycle = 0 if buttona.value: fog_off.duty_cycle = 65535 else: fog_off.duty_cycle = 0 if pot < 200: # wait for a bit before we start continue delay = map_range(pot, 200, 1023, 1.0, 0.1) servos[0].angle = BELL_END time.sleep(0.1) servos[0].angle = BELL_START time.sleep(delay) a.stop() f.close() # Fog machine test fog_off.duty_cycle = 65535 fog_on.duty_cycle = 0 time.sleep(0.1) fog_off.duty_cycle = 0 pixels[8] = (255, 255, 0) pixels[7] = (255, 255, 0) time.sleep(1.5) play_file("i-coulda-used-more-cow-bell.wav") |