diff --git a/docs/examples.rst b/docs/examples.rst index 32dbc62..04143a2 100644 --- a/docs/examples.rst +++ b/docs/examples.rst @@ -3,30 +3,142 @@ Simple test Ensure your device works with this simple test. -.. literalinclude:: ../examples/circuitplayground_acceleration_simpletest.py - :caption: examples/circuitplayground_acceleration_simpletest.py +.. literalinclude:: ../examples/circuitplayground_acceleration.py + :caption: examples/circuitplayground_acceleration.py :linenos: .. literalinclude:: ../examples/circuitplayground_pixels_simpletest.py :caption: examples/circuitplayground_pixels_simpletest.py :linenos: -.. literalinclude:: ../examples/circuitplayground_shake_simpletest.py - :caption: examples/circuitplayground_shake_simpletest.py +.. literalinclude:: ../examples/circuitplayground_shake.py + :caption: examples/circuitplayground_shake.py :linenos: -.. literalinclude:: ../examples/circuitplayground_tapdetect_simpletest.py - :caption: examples/circuitplayground_tapdetect_simpletest.py +.. literalinclude:: ../examples/circuitplayground_tapdetect_single_double.py + :caption: examples/circuitplayground_tapdetect_single_double.py :linenos: -.. literalinclude:: ../examples/circuitplayground_tapdetectsimple_simpletest.py - :caption: examples/circuitplayground_tapdetectsimple_simpletest.py +.. literalinclude:: ../examples/circuitplayground_tapdetect.py + :caption: examples/circuitplayground_tapdetect.py :linenos: -.. literalinclude:: ../examples/circuitplayground_tone_simpletest.py - :caption: examples/circuitplayground_tone_simpletest.py +.. literalinclude:: ../examples/circuitplayground_tone.py + :caption: examples/circuitplayground_tone.py :linenos: -.. literalinclude:: ../examples/circuitplayground_touched_simpletest.py - :caption: examples/circuitplayground_touched_simpletest.py +.. literalinclude:: ../examples/circuitplayground_touched.py + :caption: examples/circuitplayground_touched.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_acceleration_neopixels.py + :caption: examples/circuitplayground_acceleration_neopixels.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_button_a.py + :caption: examples/circuitplayground_button_a.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_button_b.py + :caption: examples/circuitplayground_button_b.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_buttons_1_neopixel.py + :caption: examples/circuitplayground_buttons_1_neopixel.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_buttons_neopixels.py + :caption: examples/circuitplayground_buttons_neopixels.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_ir_receive.py + :caption: examples/circuitplayground_ir_receive.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_ir_transmit.py + :caption: examples/circuitplayground_ir_transmit.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_light_neopixels.py + :caption: examples/circuitplayground_light_neopixels.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_light.py + :caption: examples/circuitplayground_light.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_neopixel_0_1.py + :caption: examples/circuitplayground_neopixel_0_1.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_light_plotter.py + :caption: examples/circuitplayground_light_plotter.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_play_file_buttons.py + :caption: examples/circuitplayground_play_file_buttons.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_play_file.py + :caption: examples/circuitplayground_play_file.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_play_tone_buttons.py + :caption: examples/circuitplayground_play_tone_buttons.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_play_tone.py + :caption: examples/circuitplayground_play_tone.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_red_led_blinky.py + :caption: examples/circuitplayground_red_led_blinky.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_red_led_blnky_short.py + :caption: examples/circuitplayground_red_led_blnky_short.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_red_led.py + :caption: examples/circuitplayground_red_led.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_slide_switch_red_led.py + :caption: examples/circuitplayground_slide_switch_red_led.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_slide_switch_red_led_short.py + :caption: examples/circuitplayground_slide_switch_red_led_short.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_slide_switch.py + :caption: examples/circuitplayground_slide_switch.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_sound_meter.py + :caption: examples/circuitplayground_sound_meter.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_tap_red_led.py + :caption: examples/circuitplayground_tap_red_led.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_temperature_neopixels.py + :caption: examples/circuitplayground_temperature_neopixels.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_temperture_plotter.py + :caption: examples/circuitplayground_temperture_plotter.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_temperture.py + :caption: examples/circuitplayground_temperture.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_touch_pixel_fill_rainbow.py + :caption: examples/circuitplayground_touch_pixel_fill_rainbow.py + :linenos: + +.. literalinclude:: ../examples/circuitplayground_touch_pixel_rainbow.py + :caption: examples/circuitplayground_touch_pixel_rainbow.py :linenos: diff --git a/examples/circuitplayground_acceleration_simpletest.py b/examples/circuitplayground_acceleration.py similarity index 100% rename from examples/circuitplayground_acceleration_simpletest.py rename to examples/circuitplayground_acceleration.py diff --git a/examples/circuitplayground_acceleration_neopixels.py b/examples/circuitplayground_acceleration_neopixels.py new file mode 100644 index 0000000..0961c6b --- /dev/null +++ b/examples/circuitplayground_acceleration_neopixels.py @@ -0,0 +1,27 @@ +"""If the switch is to the right, it will appear that nothing is happening. Move the switch to the +left to see the NeoPixels light up in colors related to the accelerometer! The CPX has an +accelerometer in the center that returns (x, y, z) acceleration values. This program uses those +values to light up the NeoPixels based on those acceleration values.""" +from adafruit_circuitplayground.express import cpx + +# Main loop gets x, y and z axis acceleration, prints the values, and turns on +# red, green and blue, at levels related to the x, y and z values. +while True: + if not cpx.switch: + # If the switch is to the right, it returns False! + print("Slide switch off!") + cpx.pixels.fill((0, 0, 0)) + continue + else: + R = 0 + G = 0 + B = 0 + x, y, z = cpx.acceleration + print((x, y, z)) + if x: + R = R + abs(int(x)) + if y: + G = G + abs(int(y)) + if z: + B = B + abs(int(z)) + cpx.pixels.fill((R, G, B)) diff --git a/examples/circuitplayground_button_a.py b/examples/circuitplayground_button_a.py new file mode 100644 index 0000000..b098a41 --- /dev/null +++ b/examples/circuitplayground_button_a.py @@ -0,0 +1,7 @@ +"""This example turns on the little red LED when button A is pressed.""" +from adafruit_circuitplayground.express import cpx + +while True: + if cpx.button_a: + print("Button A pressed!") + cpx.red_led = True diff --git a/examples/circuitplayground_button_b.py b/examples/circuitplayground_button_b.py new file mode 100644 index 0000000..a24ea24 --- /dev/null +++ b/examples/circuitplayground_button_b.py @@ -0,0 +1,14 @@ +"""This example turns the little red LED on only while button B is currently being pressed.""" +from adafruit_circuitplayground.express import cpx + +# This code is written to be readable versus being Pylint compliant. +# pylint: disable=simplifiable-if-statement + +while True: + if cpx.button_b: + cpx.red_led = True + else: + cpx.red_led = False + +# Can also be written as: +# cpx.red_led = cpx.button_b diff --git a/examples/circuitplayground_buttons_1_neopixel.py b/examples/circuitplayground_buttons_1_neopixel.py new file mode 100644 index 0000000..22ade04 --- /dev/null +++ b/examples/circuitplayground_buttons_1_neopixel.py @@ -0,0 +1,17 @@ +"""This example lights up the third NeoPixel while button A is being pressed, and lights up the +eighth NeoPixel while button B is being pressed.""" +from adafruit_circuitplayground.express import cpx + +cpx.pixels.brightness = 0.3 +cpx.pixels.fill((0, 0, 0)) # Turn off the NeoPixels if they're on! + +while True: + if cpx.button_a: + cpx.pixels[2] = (0, 255, 0) + else: + cpx.pixels[2] = (0, 0, 0) + + if cpx.button_b: + cpx.pixels[7] = (0, 0, 255) + else: + cpx.pixels[7] = (0, 0, 0) diff --git a/examples/circuitplayground_buttons_neopixels.py b/examples/circuitplayground_buttons_neopixels.py new file mode 100644 index 0000000..833ce8e --- /dev/null +++ b/examples/circuitplayground_buttons_neopixels.py @@ -0,0 +1,17 @@ +"""This example lights up half the NeoPixels red while button A is being pressed, and half the +NeoPixels green while button B is being pressed.""" +from adafruit_circuitplayground.express import cpx + +cpx.pixels.brightness = 0.3 +cpx.pixels.fill((0, 0, 0)) # Turn off the NeoPixels if they're on! + +while True: + if cpx.button_a: + cpx.pixels[0:5] = [(255, 0, 0)] * 5 + else: + cpx.pixels[0:5] = [(0, 0, 0)] * 5 + + if cpx.button_b: + cpx.pixels[5:10] = [(0, 255, 0)] * 5 + else: + cpx.pixels[5:10] = [(0, 0, 0)] * 5 diff --git a/examples/circuitplayground_ir_receive.py b/examples/circuitplayground_ir_receive.py new file mode 100644 index 0000000..7bdfefb --- /dev/null +++ b/examples/circuitplayground_ir_receive.py @@ -0,0 +1,36 @@ +"""THIS EXAMPLE REQUIRES A SEPARATE LIBRARY BE LOADED ONTO YOUR CIRCUITPY DRIVE. +This example requires the adafruit_irremote.mpy library. + +This example uses the IR receiver found near the center of the board. Works with another CPX +running the cpx_ir_transmit.py example. The NeoPixels will light up when the buttons on the +TRANSMITTING CPX are pressed!""" +import pulseio +import board +import adafruit_irremote +from adafruit_circuitplayground.express import cpx + +# Create a 'pulseio' input, to listen to infrared signals on the IR receiver +pulsein = pulseio.PulseIn(board.IR_RX, maxlen=120, idle_state=True) +# Create a decoder that will take pulses and turn them into numbers +decoder = adafruit_irremote.GenericDecode() + +while True: + cpx.red_led = True + pulses = decoder.read_pulses(pulsein) + try: + # Attempt to convert received pulses into numbers + received_code = decoder.decode_bits(pulses, debug=False) + except adafruit_irremote.IRNECRepeatException: + # We got an unusual short code, probably a 'repeat' signal + continue + except adafruit_irremote.IRDecodeException: + # Something got distorted + continue + + print("Infrared code received: ", received_code) + if received_code == [66, 84, 78, 65]: + print("Button A signal") + cpx.pixels.fill((100, 0, 155)) + if received_code == [66, 84, 78, 64]: + print("Button B Signal") + cpx.pixels.fill((210, 45, 0)) diff --git a/examples/circuitplayground_ir_transmit.py b/examples/circuitplayground_ir_transmit.py new file mode 100644 index 0000000..3ffaf64 --- /dev/null +++ b/examples/circuitplayground_ir_transmit.py @@ -0,0 +1,33 @@ +"""THIS EXAMPLE REQUIRES A SEPARATE LIBRARY BE LOADED ONTO YOUR CIRCUITPY DRIVE. +This example requires the adafruit_irremote.mpy library. + +This example uses the IR transmitter found near the center of the board. Works with another CPX +running the cpx_ir_receive.py example. Press the buttons to light up the NeoPixels on the RECEIVING +CPX!""" +import time +import pulseio +import board +import adafruit_irremote +from adafruit_circuitplayground.express import cpx + +# Create a 'pulseio' output, to send infrared signals from the IR transmitter +pwm = pulseio.PWMOut(board.IR_TX, frequency=38000, duty_cycle=2 ** 15) +pulseout = pulseio.PulseOut(pwm) +# Create an encoder that will take numbers and turn them into NEC IR pulses +encoder = adafruit_irremote.GenericTransmit(header=[9500, 4500], one=[550, 550], + zero=[550, 1700], trail=0) + +while True: + if cpx.button_a: + print("Button A pressed! \n") + cpx.red_led = True + encoder.transmit(pulseout, [66, 84, 78, 65]) + cpx.red_led = False + # wait so the receiver can get the full message + time.sleep(0.2) + if cpx.button_b: + print("Button B pressed! \n") + cpx.red_led = True + encoder.transmit(pulseout, [66, 84, 78, 64]) + cpx.red_led = False + time.sleep(0.2) diff --git a/examples/circuitplayground_light.py b/examples/circuitplayground_light.py new file mode 100644 index 0000000..a5641e6 --- /dev/null +++ b/examples/circuitplayground_light.py @@ -0,0 +1,9 @@ +"""This example uses the light sensor on your CPX, located next to the picture of the eye. Try +shining a flashlight on your CPX, or covering the light sensor with your finger to see the values +increase and decrease.""" +import time +from adafruit_circuitplayground.express import cpx + +while True: + print("Light:", cpx.light) + time.sleep(1) diff --git a/examples/circuitplayground_light_neopixels.py b/examples/circuitplayground_light_neopixels.py new file mode 100644 index 0000000..8fea1bd --- /dev/null +++ b/examples/circuitplayground_light_neopixels.py @@ -0,0 +1,26 @@ +"""THIS EXAMPLE REQUIRES A SEPARATE LIBRARY BE LOADED ONTO YOUR CIRCUITPY DRIVE. +This example requires the simpleio.mpy library. + +This example uses the light sensor on the CPX, located net to the picture of the eye on the board. +Once you have the library loaded, try shining a flashlight on your CPX to watch the number of +NeoPixels lit up increase, or try covering up the light sensor to watch the number decrease.""" +import time +from adafruit_circuitplayground.express import cpx +import simpleio + +cpx.pixels.auto_write = False +cpx.pixels.brightness = 0.3 + +while True: + # light value remapped to pixel position + peak = simpleio.map_range(cpx.light, 0, 320, 0, 10) + print(cpx.light) + print(int(peak)) + + for i in range(0, 10, 1): + if i <= peak: + cpx.pixels[i] = (0, 255, 255) + else: + cpx.pixels[i] = (0, 0, 0) + cpx.pixels.show() + time.sleep(0.05) diff --git a/examples/circuitplayground_light_plotter.py b/examples/circuitplayground_light_plotter.py new file mode 100644 index 0000000..0d3c8cb --- /dev/null +++ b/examples/circuitplayground_light_plotter.py @@ -0,0 +1,10 @@ +"""If you're using Mu, this example will plot the light levels from the light sensor (located next +to the eye) on your CPX. Try shining a flashlight on your CPX, or covering the light sensor to see +the plot increase and decrease.""" +import time +from adafruit_circuitplayground.express import cpx + +while True: + print("Light:", cpx.light) + print((cpx.light,)) + time.sleep(0.1) diff --git a/examples/circuitplayground_neopixel_0_1.py b/examples/circuitplayground_neopixel_0_1.py new file mode 100644 index 0000000..5f9dac0 --- /dev/null +++ b/examples/circuitplayground_neopixel_0_1.py @@ -0,0 +1,8 @@ +"""This example lights up the first and second NeoPixel, red and blue respectively.""" +from adafruit_circuitplayground.express import cpx + +cpx.pixels.brightness = 0.3 + +while True: + cpx.pixels[0] = (255, 0, 0) + cpx.pixels[1] = (0, 0, 255) diff --git a/examples/circuitplayground_play_file.py b/examples/circuitplayground_play_file.py new file mode 100644 index 0000000..39f1321 --- /dev/null +++ b/examples/circuitplayground_play_file.py @@ -0,0 +1,10 @@ +"""THIS EXAMPLE REQUIRES A WAV FILE FROM THE examples FOLDER IN THE +Adafruit_CircuitPython_CircuitPlayground REPO found at: +https://github.com/adafruit/Adafruit_CircuitPython_CircuitPlayground/tree/master/examples + +Copy the "dip.wav" file to your CIRCUITPY drive. + +Once the file is copied, this example plays a wav file!""" +from adafruit_circuitplayground.express import cpx + +cpx.play_file("dip.wav") diff --git a/examples/circuitplayground_play_file_buttons.py b/examples/circuitplayground_play_file_buttons.py new file mode 100644 index 0000000..13a6e0d --- /dev/null +++ b/examples/circuitplayground_play_file_buttons.py @@ -0,0 +1,14 @@ +"""THIS EXAMPLE REQUIRES A WAV FILE FROM THE examples FOLDER IN THE +Adafruit_CircuitPython_CircuitPlayground REPO found at: +https://github.com/adafruit/Adafruit_CircuitPython_CircuitPlayground/tree/master/examples + +Copy the "dip.wav" and "rise.wav" files to your CIRCUITPY drive. + +Once the files are copied, this example plays a different wav file for each button pressed!""" +from adafruit_circuitplayground.express import cpx + +while True: + if cpx.button_a: + cpx.play_file("dip.wav") + if cpx.button_b: + cpx.play_file("rise.wav") diff --git a/examples/circuitplayground_play_tone.py b/examples/circuitplayground_play_tone.py new file mode 100644 index 0000000..6339607 --- /dev/null +++ b/examples/circuitplayground_play_tone.py @@ -0,0 +1,6 @@ +"""This example plays two tones for 1 second each. Note that the tones are not in a loop - this is +to prevent them from playing indefinitely!""" +from adafruit_circuitplayground.express import cpx + +cpx.play_tone(262, 1) +cpx.play_tone(294, 1) diff --git a/examples/circuitplayground_play_tone_buttons.py b/examples/circuitplayground_play_tone_buttons.py new file mode 100644 index 0000000..620093c --- /dev/null +++ b/examples/circuitplayground_play_tone_buttons.py @@ -0,0 +1,8 @@ +"""This example plays a different tone for a duration of 1 second for each button pressed.""" +from adafruit_circuitplayground.express import cpx + +while True: + if cpx.button_a: + cpx.play_tone(262, 1) + if cpx.button_b: + cpx.play_tone(294, 1) diff --git a/examples/circuitplayground_red_led.py b/examples/circuitplayground_red_led.py new file mode 100644 index 0000000..ad98d98 --- /dev/null +++ b/examples/circuitplayground_red_led.py @@ -0,0 +1,5 @@ +"""This example turns on the little red LED.""" +from adafruit_circuitplayground.express import cpx + +while True: + cpx.red_led = True diff --git a/examples/circuitplayground_red_led_blinky.py b/examples/circuitplayground_red_led_blinky.py new file mode 100644 index 0000000..7dae167 --- /dev/null +++ b/examples/circuitplayground_red_led_blinky.py @@ -0,0 +1,10 @@ +"""This is the "Hello, world!" of CircuitPython: Blinky! This example blinks the little red LED on +and off!""" +import time +from adafruit_circuitplayground.express import cpx + +while True: + cpx.red_led = True + time.sleep(0.5) + cpx.red_led = False + time.sleep(0.5) diff --git a/examples/circuitplayground_red_led_blnky_short.py b/examples/circuitplayground_red_led_blnky_short.py new file mode 100644 index 0000000..3b9bf0d --- /dev/null +++ b/examples/circuitplayground_red_led_blnky_short.py @@ -0,0 +1,8 @@ +"""This is the "Hello, world!" of CircuitPython: Blinky! This example blinks the little red LED on +and off! It's a shorter version of the other Blinky example.""" +import time +from adafruit_circuitplayground.express import cpx + +while True: + cpx.red_led = not cpx.red_led + time.sleep(0.5) diff --git a/examples/circuitplayground_shake_simpletest.py b/examples/circuitplayground_shake.py similarity index 100% rename from examples/circuitplayground_shake_simpletest.py rename to examples/circuitplayground_shake.py diff --git a/examples/circuitplayground_slide_switch.py b/examples/circuitplayground_slide_switch.py new file mode 100644 index 0000000..7c643a2 --- /dev/null +++ b/examples/circuitplayground_slide_switch.py @@ -0,0 +1,8 @@ +"""This example prints the status of the slide switch. Try moving the switch back and forth to see +what's printed to the serial console!""" +import time +from adafruit_circuitplayground.express import cpx + +while True: + print("Slide switch:", cpx.switch) + time.sleep(0.1) diff --git a/examples/circuitplayground_slide_switch_red_led.py b/examples/circuitplayground_slide_switch_red_led.py new file mode 100644 index 0000000..b226802 --- /dev/null +++ b/examples/circuitplayground_slide_switch_red_led.py @@ -0,0 +1,11 @@ +"""This example uses the slide switch to control the little red LED.""" +from adafruit_circuitplayground.express import cpx + +# This code is written to be readable versus being Pylint compliant. +# pylint: disable=simplifiable-if-statement + +while True: + if cpx.switch: + cpx.red_led = True + else: + cpx.red_led = False diff --git a/examples/circuitplayground_slide_switch_red_led_short.py b/examples/circuitplayground_slide_switch_red_led_short.py new file mode 100644 index 0000000..668c99f --- /dev/null +++ b/examples/circuitplayground_slide_switch_red_led_short.py @@ -0,0 +1,6 @@ +"""This example uses the slide switch to control the little red LED. When the switch is to the +right it returns False, and when it's to the left, it returns True.""" +from adafruit_circuitplayground.express import cpx + +while True: + cpx.red_led = cpx.switch diff --git a/examples/circuitplayground_sound_meter.py b/examples/circuitplayground_sound_meter.py new file mode 100644 index 0000000..8f12cd6 --- /dev/null +++ b/examples/circuitplayground_sound_meter.py @@ -0,0 +1,56 @@ +"""This example uses the sound sensor, located next to the picture of the ear on your board, to +light up the NeoPixels as a sound meter. Try talking to your CPX or clapping, etc, to see the +NeoPixels light up!""" +import array +import math +import audiobusio +import board +from adafruit_circuitplayground.express import cpx + + +def constrain(value, floor, ceiling): + return max(floor, min(value, ceiling)) + + +def log_scale(input_value, input_min, input_max, output_min, output_max): + normalized_input_value = (input_value - input_min) / (input_max - input_min) + return output_min + math.pow(normalized_input_value, 0.630957) * (output_max - output_min) + + +def normalized_rms(values): + minbuf = int(sum(values) / len(values)) + return math.sqrt(sum(float(sample - minbuf) * + (sample - minbuf) for sample in values) / len(values)) + + +mic = audiobusio.PDMIn(board.MICROPHONE_CLOCK, board.MICROPHONE_DATA, + sample_rate=16000, bit_depth=16) + +samples = array.array('H', [0] * 160) +mic.record(samples, len(samples)) +input_floor = normalized_rms(samples) + 10 + +# Lower number means more sensitive - more LEDs will light up with less sound. +sensitivity = 500 +input_ceiling = input_floor + sensitivity + +peak = 0 +while True: + mic.record(samples, len(samples)) + magnitude = normalized_rms(samples) + print((magnitude,)) + + c = log_scale(constrain(magnitude, input_floor, input_ceiling), + input_floor, input_ceiling, 0, 10) + + cpx.pixels.fill((0, 0, 0)) + for i in range(10): + if i < c: + cpx.pixels[i] = (i * (255 // 10), 50, 0) + if c >= peak: + peak = min(c, 10 - 1) + elif peak > 0: + peak = peak - 1 + if peak > 0: + cpx.pixels[int(peak)] = (80, 0, 255) + cpx.pixels.show() diff --git a/examples/circuitplayground_tap_red_led.py b/examples/circuitplayground_tap_red_led.py new file mode 100644 index 0000000..9e92060 --- /dev/null +++ b/examples/circuitplayground_tap_red_led.py @@ -0,0 +1,15 @@ +"""This example turns on the little red LED and prints to the serial console when you double-tap +the CPX!""" +import time +from adafruit_circuitplayground.express import cpx + +# Change to 1 for detecting a single-tap! +cpx.detect_taps = 2 + +while True: + if cpx.tapped: + print("Tapped!") + cpx.red_led = True + time.sleep(0.1) + else: + cpx.red_led = False diff --git a/examples/circuitplayground_tapdetectsimple_simpletest.py b/examples/circuitplayground_tapdetect.py similarity index 100% rename from examples/circuitplayground_tapdetectsimple_simpletest.py rename to examples/circuitplayground_tapdetect.py diff --git a/examples/circuitplayground_tapdetect_simpletest.py b/examples/circuitplayground_tapdetect_single_double.py similarity index 100% rename from examples/circuitplayground_tapdetect_simpletest.py rename to examples/circuitplayground_tapdetect_single_double.py diff --git a/examples/circuitplayground_temperature_neopixels.py b/examples/circuitplayground_temperature_neopixels.py new file mode 100644 index 0000000..ab6d007 --- /dev/null +++ b/examples/circuitplayground_temperature_neopixels.py @@ -0,0 +1,32 @@ +"""THIS EXAMPLE REQUIRES A SEPARATE LIBRARY BE LOADED ONTO YOUR CIRCUITPY DRIVE. +This example requires the simpleio.mpy library. + +This example use the temperature sensor on the CPX, located next to the picture of the thermometer +on the board. Try warming up the board to watch the number of NeoPixels lit up increase, or cooling +it down to see the number decrease. You can set the min and max temperatures to make it more or +less sensitive to temperature changes. +""" +import time +from adafruit_circuitplayground.express import cpx +import simpleio + +cpx.pixels.auto_write = False +cpx.pixels.brightness = 0.3 + +# Set these based on your ambient temperature in Celsius for best results! +minimum_temp = 24 +maximum_temp = 30 + +while True: + # temperature value remapped to pixel position + peak = simpleio.map_range(cpx.temperature, minimum_temp, maximum_temp, 0, 10) + print(cpx.temperature) + print(int(peak)) + + for i in range(0, 10, 1): + if i <= peak: + cpx.pixels[i] = (0, 255, 255) + else: + cpx.pixels[i] = (0, 0, 0) + cpx.pixels.show() + time.sleep(0.05) diff --git a/examples/circuitplayground_temperture.py b/examples/circuitplayground_temperture.py new file mode 100644 index 0000000..02dbcb4 --- /dev/null +++ b/examples/circuitplayground_temperture.py @@ -0,0 +1,10 @@ +"""This example uses the temperature sensor on the CPX, located next to the image of a thermometer +on the board. It prints the temperature in both C and F to the serial console. Try putting your +finger over the sensor to see the numbers change!""" +import time +from adafruit_circuitplayground.express import cpx + +while True: + print("Temperature C:", cpx.temperature) + print("Temperature F:", cpx.temperature * 1.8 + 32) + time.sleep(1) diff --git a/examples/circuitplayground_temperture_plotter.py b/examples/circuitplayground_temperture_plotter.py new file mode 100644 index 0000000..f86a9f3 --- /dev/null +++ b/examples/circuitplayground_temperture_plotter.py @@ -0,0 +1,11 @@ +"""If you're using Mu, this example will plot the temperature in C and F on the plotter! Click +"Plotter" to open it, and place your finger over the sensor to see the numbers change. The +sensor is located next to the picture of the thermometer on the CPX.""" +import time +from adafruit_circuitplayground.express import cpx + +while True: + print("Temperature C:", cpx.temperature) + print("Temperature F:", cpx.temperature * 1.8 + 32) + print((cpx.temperature, cpx.temperature * 1.8 + 32)) + time.sleep(0.1) diff --git a/examples/circuitplayground_tone_simpletest.py b/examples/circuitplayground_tone.py similarity index 100% rename from examples/circuitplayground_tone_simpletest.py rename to examples/circuitplayground_tone.py diff --git a/examples/circuitplayground_touch_pixel_fill_rainbow.py b/examples/circuitplayground_touch_pixel_fill_rainbow.py new file mode 100644 index 0000000..7fc1fa5 --- /dev/null +++ b/examples/circuitplayground_touch_pixel_fill_rainbow.py @@ -0,0 +1,31 @@ +"""This example uses the capacitive touch pads on the CPX. They are located around the outer edge +of the board and are labeled A1-A7. (A0 is not a touch pad.) This example lights up all the +NeoPixels a different color of the rainbow for each pad touched!""" +import time +from adafruit_circuitplayground.express import cpx + +cpx.pixels.brightness = 0.3 + +while True: + if cpx.touch_A1: + print("Touched A1!") + cpx.pixels.fill((255, 0, 0)) + if cpx.touch_A2: + print("Touched A2!") + cpx.pixels.fill((210, 45, 0)) + if cpx.touch_A3: + print("Touched A3!") + cpx.pixels.fill((155, 100, 0)) + if cpx.touch_A4: + print("Touched A4!") + cpx.pixels.fill((0, 255, 0)) + if cpx.touch_A5: + print("Touched A5!") + cpx.pixels.fill((0, 135, 125)) + if cpx.touch_A6: + print("Touched A6!") + cpx.pixels.fill((0, 0, 255)) + if cpx.touch_A7: + print("Touched A7!") + cpx.pixels.fill((100, 0, 155)) + time.sleep(0.1) diff --git a/examples/circuitplayground_touch_pixel_rainbow.py b/examples/circuitplayground_touch_pixel_rainbow.py new file mode 100644 index 0000000..d157025 --- /dev/null +++ b/examples/circuitplayground_touch_pixel_rainbow.py @@ -0,0 +1,31 @@ +"""This example uses the capacitive touch pads on the CPX. They are located around the outer edge +of the board and are labeled A1-A7. (A0 is not a touch pad.) This example lights up the nearest +NeoPixel to that pad a different color of the rainbow!""" +import time +from adafruit_circuitplayground.express import cpx + +cpx.pixels.brightness = 0.3 + +while True: + if cpx.touch_A1: + print("Touched A1!") + cpx.pixels[6] = (255, 0, 0) + if cpx.touch_A2: + print("Touched A2!") + cpx.pixels[8] = (210, 45, 0) + if cpx.touch_A3: + print("Touched A3!") + cpx.pixels[9] = (155, 100, 0) + if cpx.touch_A4: + print("Touched A4!") + cpx.pixels[0] = (0, 255, 0) + if cpx.touch_A5: + print("Touched A5!") + cpx.pixels[1] = (0, 135, 125) + if cpx.touch_A6: + print("Touched A6!") + cpx.pixels[3] = (0, 0, 255) + if cpx.touch_A7: + print("Touched A7!") + cpx.pixels[4] = (100, 0, 155) + time.sleep(0.1) diff --git a/examples/circuitplayground_touched_simpletest.py b/examples/circuitplayground_touched.py similarity index 100% rename from examples/circuitplayground_touched_simpletest.py rename to examples/circuitplayground_touched.py diff --git a/examples/dip.wav b/examples/dip.wav new file mode 100644 index 0000000..000d849 Binary files /dev/null and b/examples/dip.wav differ diff --git a/examples/rise.wav b/examples/rise.wav new file mode 100644 index 0000000..f20a351 Binary files /dev/null and b/examples/rise.wav differ