diff --git a/Adafruit_Crickit/bipolarstepper.fzz b/Adafruit_Crickit/bipolarstepper.fzz new file mode 100644 index 00000000..331771a4 Binary files /dev/null and b/Adafruit_Crickit/bipolarstepper.fzz differ diff --git a/Adafruit_Crickit/dualstepper.fzz b/Adafruit_Crickit/dualstepper.fzz new file mode 100644 index 00000000..34ca1e5a Binary files /dev/null and b/Adafruit_Crickit/dualstepper.fzz differ diff --git a/Adafruit_Crickit/servos.fzz b/Adafruit_Crickit/servos.fzz new file mode 100644 index 00000000..7729d351 Binary files /dev/null and b/Adafruit_Crickit/servos.fzz differ diff --git a/Adafruit_Crickit/unipolardrive.fzz b/Adafruit_Crickit/unipolardrive.fzz new file mode 100644 index 00000000..0388fae4 Binary files /dev/null and b/Adafruit_Crickit/unipolardrive.fzz differ diff --git a/Adafruit_Crickit/unipolarstepper.fzz b/Adafruit_Crickit/unipolarstepper.fzz new file mode 100644 index 00000000..c7e877ca Binary files /dev/null and b/Adafruit_Crickit/unipolarstepper.fzz differ diff --git a/Crickits/bubble_machine/bubbz.fzz b/Crickits/bubble_machine/bubbz.fzz new file mode 100644 index 00000000..463b08a8 Binary files /dev/null and b/Crickits/bubble_machine/bubbz.fzz differ diff --git a/Crickits/dont_fear_the_crickit/code.py b/Crickits/dont_fear_the_crickit/code.py new file mode 100644 index 00000000..cdeb75f7 --- /dev/null +++ b/Crickits/dont_fear_the_crickit/code.py @@ -0,0 +1,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") diff --git a/Crickits/dont_fear_the_crickit/dont_fear_the_crickit.fzz b/Crickits/dont_fear_the_crickit/dont_fear_the_crickit.fzz new file mode 100644 index 00000000..d384e4b8 Binary files /dev/null and b/Crickits/dont_fear_the_crickit/dont_fear_the_crickit.fzz differ diff --git a/Crickits/feynman_bot/bongo.fzz b/Crickits/feynman_bot/bongo.fzz new file mode 100644 index 00000000..48a6502a Binary files /dev/null and b/Crickits/feynman_bot/bongo.fzz differ diff --git a/Crickits/magneat-o/code.py b/Crickits/magneat-o/code.py deleted file mode 100644 index c88aea38..00000000 --- a/Crickits/magneat-o/code.py +++ /dev/null @@ -1,65 +0,0 @@ -import time -from busio import I2C -from adafruit_seesaw.seesaw import Seesaw -from adafruit_seesaw.pwmout import PWMOut -from adafruit_motor import motor -from digitalio import DigitalInOut, Direction, Pull -import board - -print("Mag Neat-o!") - -# Create seesaw object -i2c = I2C(board.SCL, board.SDA) -seesaw = Seesaw(i2c) - -# Create one motor on seesaw PWM pins 22 & 23 -motor_a = motor.DCMotor(PWMOut(seesaw, 22), PWMOut(seesaw, 23)) -# Create another motor on seesaw PWM pins 19 & 18 -motor_b = motor.DCMotor(PWMOut(seesaw, 19), PWMOut(seesaw, 18)) - -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 - -switch = DigitalInOut(board.SLIDE_SWITCH) -switch.direction = Direction.INPUT -switch.pull = Pull.UP - -last_buttona = buttona.value -last_buttonb = buttonb.value -last_switch = switch.value - -while True: - if buttona.value != last_buttona: - if buttona.value: - print("down") - if motor_a.throttle: - print("haulin!") - motor_b.throttle = -0.1 - else: - motor_b.throttle = -0.1 - else: - motor_b.throttle = 0 - last_buttona = buttona.value - - if buttonb.value != last_buttonb: - if buttonb.value: - print("up") - if motor_a.throttle: - print("haulin!") - motor_b.throttle = 0.3 - else: - motor_b.throttle = 0.25 - else: - motor_b.throttle = 0 - last_buttonb = buttonb.value - - if switch.value != last_switch: - motor_a.throttle = switch.value - last_switch = switch.value - - time.sleep(0.01)