import digitalio
import simpleio
import board
import busio
import time
from adafruit_adxl34x import ADXL345
i2c = busio.I2C(board.SCL, board.SDA)
accelerometer = ADXL345(i2c)
clock = digitalio.DigitalInOut(board.D1)
dataPin = digitalio.DigitalInOut(board.D4)
latchPin = digitalio.DigitalInOut(board.D3)
clock.direction = digitalio.Direction.OUTPUT
dataPin.direction = digitalio.Direction.OUTPUT
latchPin.direction = digitalio.Direction.OUTPUT
cols = [
0b00000001,
0b00000010,
0b00000100,
0b00001000,
0b00010000
]
rows = [ # column 1, 2, through 5
0b11111110,
0b11111101,
0b11111011,
0b11110111,
0b11101111
]
leftArrowAnim = [
[
[rows[2], cols[0]],
[rows[4], cols[3]],
[rows[0], cols[3]],
[rows[3], cols[4]],
[rows[1], cols[4]]
],
[
[rows[3], cols[0]],
[rows[1], cols[0]],
[rows[2], cols[1]],
[rows[4], cols[4]],
[rows[0], cols[4]]
],
[
[rows[4], cols[0]],
[rows[0], cols[0]],
[rows[3], cols[1]],
[rows[1], cols[1]],
[rows[2], cols[2]]
],
[
[rows[4], cols[1]],
[rows[0], cols[1]],
[rows[3], cols[2]],
[rows[1], cols[2]],
[rows[2], cols[3]]
],
[
[rows[4], cols[2]],
[rows[0], cols[2]],
[rows[3], cols[3]],
[rows[2], cols[4]],
[rows[1], cols[3]]
]
]
rightArrowAnim = [
[
[rows[2], cols[4]]
],
[
[rows[2], cols[3]],
[rows[3], cols[4]],
[rows[1], cols[4]]
],
[
[rows[2], cols[2]],
[rows[3], cols[3]],
[rows[1], cols[3]],
[rows[4], cols[4]],
[rows[0], cols[4]]
],
[
[rows[2], cols[1]],
[rows[3], cols[2]],
[rows[1], cols[2]],
[rows[4], cols[3]],
[rows[0], cols[3]]
],
[
[rows[2], cols[0]],
[rows[3], cols[1]],
[rows[1], cols[1]],
[rows[4], cols[2]],
[rows[0], cols[2]]
],
[
[rows[3], cols[0]],
[rows[1], cols[0]],
[rows[4], cols[1]],
[rows[0], cols[1]]
],
[
[rows[4], cols[0]],
[rows[0], cols[0]]
]
]
rightArrowAnimTwo = [
[
[rows[2], cols[4]],
[rows[3], cols[0]],
[rows[1], cols[0]],
[rows[4], cols[1]],
[rows[0], cols[1]]
],
[
[rows[2], cols[3]],
[rows[3], cols[4]],
[rows[1], cols[4]],
[rows[4], cols[0]],
[rows[0], cols[0]]
],
[
[rows[2], cols[2]],
[rows[3], cols[3]],
[rows[1], cols[3]],
[rows[4], cols[4]],
[rows[0], cols[4]]
],
[
[rows[2], cols[1]],
[rows[3], cols[2]],
[rows[1], cols[2]],
[rows[4], cols[3]],
[rows[0], cols[3]]
],
[
[rows[2], cols[0]],
[rows[3], cols[1]],
[rows[1], cols[1]],
[rows[4], cols[2]],
[rows[0], cols[2]]
]
]
growingCircleAnim = [
[
[rows[2], cols[2]]
],
[
[rows[3], cols[1]],
[rows[2], cols[1]],
[rows[1], cols[1]],
[rows[3], cols[2]],
[rows[1], cols[2]],
[rows[3], cols[3]],
[rows[2], cols[3]],
[rows[1], cols[3]],
],
[
[rows[0], cols[0]],
[rows[0], cols[1]],
[rows[0], cols[2]],
[rows[0], cols[3]],
[rows[0], cols[4]],
[rows[1], cols[0]],
[rows[1], cols[4]],
[rows[2], cols[0]],
[rows[2], cols[4]],
[rows[3], cols[0]],
[rows[3], cols[4]],
[rows[4], cols[0]],
[rows[4], cols[1]],
[rows[4], cols[2]],
[rows[4], cols[3]],
[rows[4], cols[4]]
]
]
progressUpAnim = [
[ # 1
[rows[1], cols[0]]
],
[ # 1
[rows[1], cols[0]],
[rows[1], cols[1]]
],
[ # 1
[rows[1], cols[0]],
[rows[1], cols[1]],
[rows[1], cols[2]]
],
[ # 1
[rows[1], cols[0]],
[rows[1], cols[1]],
[rows[1], cols[2]],
[rows[1], cols[3]]
],
[ # 1
[rows[1], cols[0]],
[rows[1], cols[1]],
[rows[1], cols[2]],
[rows[1], cols[3]],
[rows[1], cols[4]]
],
]
def animate(animation):
for frame in animation:
startTime = time.monotonic()
while time.monotonic() < startTime + 0.1:
for bytepack in frame:
latchPin.value = False
for byte in bytepack:
simpleio.shift_out(dataPin, clock, byte, msb_first = True)
latchPin.value = True
def rightArrow():
animate(rightArrowAnimTwo)
def leftArrow():
animate(leftArrowAnim)
def growingCircle():
animate(growingCircleAnim)
def X():
animate(Xanim)
def stop():
latchPin.value = False
simpleio.shift_out(dataPin, clock, 0b00000000, msb_first = True)
simpleio.shift_out(dataPin, clock, 0b00000000, msb_first = True)
latchPin.value = True
while True:
rightArrow()