Parts List

Top down view of a Adafruit CRICKIT for Circuit Playground Express with a circular board connected.
Sometimes we wonder if robotics engineers ever watch movies. If they did, they'd know that making robots into servants always ends up in a robot rebellion. Why even go down that...
In Stock
A Black woman's manicured hand holds a round microcontroller with lit up LEDs.
Circuit Playground Express is the next step towards a perfect introduction to electronics and programming. We've taken the original Circuit Playground Classic and...
In Stock
Panel Mount Right Angle 10K Linear Potentiometer with On-Off Switch
This Panel Mount Right Angle 10K Linear Potentiometer w/ On-Off Switch is a two-in-one, with both a breadboard-friendly potentiometer and a switch. For the...
In Stock
Solid Machined Metal potentiometer or encoder Knob with rubber grip
This is really the fanciest, best-feeling knob we've ever seen. Using this knob sort of reminded us of driving along the Amalfi coast in a perfectly restored '65 Porsche...
In Stock
Enclosed Speaker with JST cable
Listen up! This 2.8" x 1.2" speaker is a great addition to any audio project where you need 4 ohm impedance and 3W or less of power. We particularly like...
Out of Stock
Adafruit NeoPixel LED Dots Strand - 20 LEDs at 4 inch Pitch
Attaching NeoPixel strips to your costume can be a struggle as the flexible PCBs can crack when bent too much. So how to add little dots of color? Use these stranded NeoPixel dots!...
In Stock
1 x Fog Machine with Remote
1 x Cow Bell
Craft store cowbell

Wiring Diagram

For the remote, we soldered four wires

  • Black ground wire to the battery spring (negative) terminal
  • Red +5V wire to the battery flat (positive) terminal
  • White and Purple go to the 'switched' part of each switch, which, when connected to 5V activates that switch

CircuitPython Code

# SPDX-FileCopyrightText: 2018 Limor Fried for Adafruit Industries
# SPDX-License-Identifier: MIT

import time
import audioio
import audiocore
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

# 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)
# 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 = audiocore.WaveFile(file)
        while a.playing:
            servos[1].angle = MOUTH_START
            servos[1].angle = MOUTH_END

# 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
# a pause between audio clips

while seesaw.digital_read(SWITCH):

print("Ready for playing audio")

f = open("fear11.wav", "rb")
wav = audiocore.WaveFile(f)

while True:
    if seesaw.digital_read(SWITCH):
        break    # time to bail!
    pot = seesaw.analog_read(MORECOW)
    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
        fog_on.duty_cycle = 0

    if buttona.value:
        fog_off.duty_cycle = 65535
        fog_off.duty_cycle = 0

    if pot < 200:  # wait for a bit before we start
    delay = map_range(pot, 200, 1023, 1.0, 0.1)
    servos[0].angle = BELL_END
    servos[0].angle = BELL_START


# Fog machine test
fog_off.duty_cycle = 65535
fog_on.duty_cycle = 0
fog_off.duty_cycle = 0

pixels[8] = (255, 255, 0)
pixels[7] = (255, 255, 0)

This guide was first published on May 16, 2018. It was last updated on Jul 24, 2024.

This page ((Don't Fear) The Crickit) was last updated on Jul 24, 2024.

Text editor powered by tinymce.