Here is the CircuitPython version of the D6 dice code. With this code loaded and running on the Circuit Playground Express you can pick it up and shake it to make a roll. You can also just double tap it.

```# Circuit Playground Express D6 Dice
#
# Roll them bones.
#
# Author: Carter Nelson
# MIT License (https://opensource.org/licenses/MIT)
import time
import random
from adafruit_circuitplayground.express import cpx

ROLL_THRESHOLD  = 30        # Total acceleration
DICE_COLOR      = 0xEA6292  # Dice digits color

dice_pixels = {
1 : (2,),
2 : (4, 9),
3 : (0, 4, 7),
4 : (1, 3, 6, 8),
5 : (0, 2, 4, 5, 9),
6 : (0, 2, 4, 5, 7, 9)
}

# Configure double tap detection
cpx.detect_taps = 2

# Seed the random function with light sensor value
# (try commenting this out and see if it matters)
random.seed(cpx.light)

# Initialize the global states
new_roll = False
rolling = False

# Loop forever
while True:
# Check for rolling
if cpx.shake() or cpx.tapped:
roll_start_time = time.monotonic()
new_roll = True
rolling = True

# Rolling momentum
# Keep rolling for a period of time even after shaking stops
if new_roll:
if time.monotonic() - roll_start_time > 1:
rolling = False

# Compute a random number from 1 to 6
roll_number = random.randrange(1,7)

# Display status on NeoPixels
if rolling:
# Make some noise and show the dice roll number
cpx.start_tone(random.randrange(400,2000))
cpx.pixels.fill(0)
for p in dice_pixels[roll_number]:
cpx.pixels[p] = DICE_COLOR
time.sleep(0.02)
cpx.stop_tone()
elif new_roll:
# Show the dice roll number
new_roll = False
cpx.pixels.fill(0)
for p in dice_pixels[roll_number]:
cpx.pixels[p] = DICE_COLOR```

This guide was first published on Dec 16, 2016. It was last updated on Dec 16, 2016.

This page (D6 Dice Code) was last updated on Oct 13, 2021.

Text editor powered by tinymce.