From 620b22c172e8841c082e2fe043da8f18e2195379 Mon Sep 17 00:00:00 2001 From: Kattni Rembor Date: Fri, 7 Jun 2019 14:45:09 -0400 Subject: [PATCH 1/2] Adding examples and content. --- examples/circuitplaygrounc_neopixel_0_1.py | 8 +++ ...t.py => circuitplayground_acceleration.py} | 0 ...ircuitplayground_acceleration_neopixels.py | 27 +++++++++ examples/circuitplayground_button_a.py | 7 +++ examples/circuitplayground_button_b.py | 11 ++++ .../circuitplayground_buttons_1_neopixel.py | 17 ++++++ .../circuitplayground_buttons_neopixels.py | 17 ++++++ examples/circuitplayground_ir_receive.py | 36 +++++++++++ examples/circuitplayground_ir_transmit.py | 33 +++++++++++ examples/circuitplayground_light.py | 9 +++ examples/circuitplayground_light_neopixels.py | 26 ++++++++ examples/circuitplayground_light_plotter.py | 10 ++++ examples/circuitplayground_play_file.py | 10 ++++ .../circuitplayground_play_file_buttons.py | 14 +++++ examples/circuitplayground_play_tone.py | 6 ++ .../circuitplayground_play_tone_buttons.py | 8 +++ examples/circuitplayground_red_led.py | 5 ++ examples/circuitplayground_red_led_blinky.py | 10 ++++ .../circuitplayground_red_led_blnky_short.py | 8 +++ ...mpletest.py => circuitplayground_shake.py} | 0 examples/circuitplayground_slide_switch.py | 8 +++ .../circuitplayground_slide_switch_red_led.py | 8 +++ ...itplayground_slide_switch_red_led_short.py | 6 ++ examples/circuitplayground_sound_meter.py | 56 ++++++++++++++++++ examples/circuitplayground_tap_red_led.py | 15 +++++ ...test.py => circuitplayground_tapdetect.py} | 0 ...cuitplayground_tapdetect_single_double.py} | 0 ...circuitplayground_temperature_neopixels.py | 32 ++++++++++ examples/circuitplayground_temperture.py | 10 ++++ .../circuitplayground_temperture_plotter.py | 11 ++++ ...impletest.py => circuitplayground_tone.py} | 0 ...cuitplayground_touch_pixel_fill_rainbow.py | 31 ++++++++++ .../circuitplayground_touch_pixel_rainbow.py | 31 ++++++++++ ...letest.py => circuitplayground_touched.py} | 0 examples/dip.wav | Bin 0 -> 26570 bytes examples/rise.wav | Bin 0 -> 26358 bytes 36 files changed, 470 insertions(+) create mode 100644 examples/circuitplaygrounc_neopixel_0_1.py rename examples/{circuitplayground_acceleration_simpletest.py => circuitplayground_acceleration.py} (100%) create mode 100644 examples/circuitplayground_acceleration_neopixels.py create mode 100644 examples/circuitplayground_button_a.py create mode 100644 examples/circuitplayground_button_b.py create mode 100644 examples/circuitplayground_buttons_1_neopixel.py create mode 100644 examples/circuitplayground_buttons_neopixels.py create mode 100644 examples/circuitplayground_ir_receive.py create mode 100644 examples/circuitplayground_ir_transmit.py create mode 100644 examples/circuitplayground_light.py create mode 100644 examples/circuitplayground_light_neopixels.py create mode 100644 examples/circuitplayground_light_plotter.py create mode 100644 examples/circuitplayground_play_file.py create mode 100644 examples/circuitplayground_play_file_buttons.py create mode 100644 examples/circuitplayground_play_tone.py create mode 100644 examples/circuitplayground_play_tone_buttons.py create mode 100644 examples/circuitplayground_red_led.py create mode 100644 examples/circuitplayground_red_led_blinky.py create mode 100644 examples/circuitplayground_red_led_blnky_short.py rename examples/{circuitplayground_shake_simpletest.py => circuitplayground_shake.py} (100%) create mode 100644 examples/circuitplayground_slide_switch.py create mode 100644 examples/circuitplayground_slide_switch_red_led.py create mode 100644 examples/circuitplayground_slide_switch_red_led_short.py create mode 100644 examples/circuitplayground_sound_meter.py create mode 100644 examples/circuitplayground_tap_red_led.py rename examples/{circuitplayground_tapdetectsimple_simpletest.py => circuitplayground_tapdetect.py} (100%) rename examples/{circuitplayground_tapdetect_simpletest.py => circuitplayground_tapdetect_single_double.py} (100%) create mode 100644 examples/circuitplayground_temperature_neopixels.py create mode 100644 examples/circuitplayground_temperture.py create mode 100644 examples/circuitplayground_temperture_plotter.py rename examples/{circuitplayground_tone_simpletest.py => circuitplayground_tone.py} (100%) create mode 100644 examples/circuitplayground_touch_pixel_fill_rainbow.py create mode 100644 examples/circuitplayground_touch_pixel_rainbow.py rename examples/{circuitplayground_touched_simpletest.py => circuitplayground_touched.py} (100%) create mode 100644 examples/dip.wav create mode 100644 examples/rise.wav diff --git a/examples/circuitplaygrounc_neopixel_0_1.py b/examples/circuitplaygrounc_neopixel_0_1.py new file mode 100644 index 0000000..5f9dac0 --- /dev/null +++ b/examples/circuitplaygrounc_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_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..3459674 --- /dev/null +++ b/examples/circuitplayground_button_b.py @@ -0,0 +1,11 @@ +"""This example turns the little red LED on only while button B is currently being pressed.""" +from adafruit_circuitplayground.express import cpx + +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_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..1b2315f --- /dev/null +++ b/examples/circuitplayground_slide_switch_red_led.py @@ -0,0 +1,8 @@ +"""This example uses the slide switch to control the little red LED.""" +from adafruit_circuitplayground.express import cpx + +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 0000000000000000000000000000000000000000..000d849050d2c295259660b5fb02d4b383f773c9 GIT binary patch literal 26570 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 QPyhY@)3rYx_o?>(0gN&~t^fc4 literal 0 HcmV?d00001 diff --git a/examples/rise.wav b/examples/rise.wav new file mode 100644 index 0000000000000000000000000000000000000000..f20a35103f554e7ed25638f8d7f356c0280a15bc GIT binary patch literal 26358 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 L{on5!{MY{g*x|Gv literal 0 HcmV?d00001 From f47a89b49d9be7e258ec20c5a02b9c6da033e037 Mon Sep 17 00:00:00 2001 From: Kattni Rembor Date: Fri, 7 Jun 2019 15:11:11 -0400 Subject: [PATCH 2/2] Typo and Sphinx. --- docs/examples.rst | 136 ++++++++++++++++-- examples/circuitplayground_button_b.py | 3 + ...1.py => circuitplayground_neopixel_0_1.py} | 0 .../circuitplayground_slide_switch_red_led.py | 3 + 4 files changed, 130 insertions(+), 12 deletions(-) rename examples/{circuitplaygrounc_neopixel_0_1.py => circuitplayground_neopixel_0_1.py} (100%) 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_button_b.py b/examples/circuitplayground_button_b.py index 3459674..a24ea24 100644 --- a/examples/circuitplayground_button_b.py +++ b/examples/circuitplayground_button_b.py @@ -1,6 +1,9 @@ """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 diff --git a/examples/circuitplaygrounc_neopixel_0_1.py b/examples/circuitplayground_neopixel_0_1.py similarity index 100% rename from examples/circuitplaygrounc_neopixel_0_1.py rename to examples/circuitplayground_neopixel_0_1.py diff --git a/examples/circuitplayground_slide_switch_red_led.py b/examples/circuitplayground_slide_switch_red_led.py index 1b2315f..b226802 100644 --- a/examples/circuitplayground_slide_switch_red_led.py +++ b/examples/circuitplayground_slide_switch_red_led.py @@ -1,6 +1,9 @@ """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