Skip to content

Progressbar accelerometer #31

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
May 25, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions docs/examples.rst
Original file line number Diff line number Diff line change
Expand Up @@ -66,3 +66,14 @@ Example showing both a Vertical and an Horizontal ProgressBar
.. literalinclude:: ../examples/progressbar_combined.py
:caption: examples/progressbar_combined.py
:linenos:


Accelerometer Example
---------------------

With this example you would be able to use the progress bar to display accelerometer data
in the X and Y directions

.. literalinclude:: ../examples/progressbar_accelerometer.py
:caption: examples/progressbar_accelerometer.py
:linenos:
225 changes: 225 additions & 0 deletions examples/progressbar_accelerometer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,225 @@
# SPDX-FileCopyrightText: 2021 Jose David M.
# SPDX-License-Identifier: MIT
"""
With this example you would be able to use the progress bar to display accelerometer data
in the X and Y directions
"""
import time
import displayio
import board
from adafruit_progressbar.horizontalprogressbar import (
HorizontalProgressBar,
HorizontalFillDirection,
)
from adafruit_progressbar.verticalprogressbar import (
VerticalProgressBar,
VerticalFillDirection,
)

# This data is used to show library capability. You could use an actual accelerometer
# This data was extracted from an Adafruit MSA301 Triple Axis Accelerometer
fake__accel_data = [
(-0.071821, 1.450790, 9.533077),
(-0.105338, 1.939175, 9.111725),
(-0.306437, 2.906367, 9.178761),
(-0.062245, 3.504878, 8.776562),
(-0.143643, 4.792873, 8.091862),
(-0.172371, 5.520662, 7.838097),
(0.014364, 6.176630, 7.426321),
(-0.205888, 7.526871, 6.200571),
(-0.090974, 7.905128, 5.491934),
(-0.445292, 8.216354, 5.118464),
(-0.110126, 8.872322, 4.017202),
(-0.344742, 9.542652, 1.498671),
(-0.076609, 9.580959, -0.033517),
(-0.158007, 9.518715, -1.273631),
(0.282497, 9.446892, -2.877639),
(-0.004788, 9.063847, -3.409117),
(-0.153219, 8.599400, -4.630077),
(-0.071821, 8.020042, -6.382517),
(0.655968, 6.722471, -6.937935),
(0.464444, 5.740913, -7.771063),
(1.034226, 4.189575, -8.905838),
(1.369392, 1.675830, -8.340843),
(2.149850, -1.426849, -9.178761),
(2.384466, -3.662886, -8.834019),
(2.417983, -5.223801, -7.957798),
(2.336586, -7.900341, -5.482357),
(2.106757, -9.231426, -4.194363),
(1.948751, -3.945382, -9.288883),
(0.588934, 0.062245, -9.643204),
(0.430928, 2.250400, -9.360706),
(-0.402199, 7.249161, -6.176630),
(-0.871432, 8.197201, -5.003550),
(0.373471, 8.829227, -3.696402),
(0.584146, 9.662357, -1.287995),
(0.114914, 9.940063, 0.536266),
(-0.201100, 9.207489, 2.848910),
(-0.181947, 8.589825, 5.314775),
(-0.517113, 5.573332, 7.598692),
(-0.497961, 3.160136, 9.092575),
(-0.114914, -1.541763, 9.940063),
(-0.555418, -5.099310, 7.727970),
(-0.387835, -7.091154, 7.095942),
(0.162795, -8.652069, 4.768932),
(0.531477, -8.934566, 0.751729),
(0.775670, -9.542652, -4.141693),
(1.809896, -7.177340, -7.282679),
(0.957617, -2.868063, -9.308037),
(1.450790, -0.866643, -9.571381),
(1.039014, -0.660756, -9.758118),
(0.914524, -4.907787, -8.379150),
(1.302359, -8.120594, -5.870192),
(1.043803, -9.916122, 2.365314),
(1.086895, -8.412666, 5.223801),
(2.034936, -5.942015, 7.488565),
(2.010996, -2.767513, 9.140453),
(0.397411, -2.322221, 9.130878),
(-2.025360, -2.398830, 9.116512),
(-2.824970, -2.264764, 8.896263),
(-4.395462, -2.001419, 8.259445),
(-5.640364, -1.220962, 7.569963),
(-7.000181, -0.746941, 6.679379),
(-8.077499, -0.004788, 5.338715),
(-9.001598, 0.421352, 2.585566),
(-9.408588, 1.106048, 1.053379),
(-9.097363, 2.283916, -1.589644),
(-8.522793, 2.714845, -3.021282),
(-7.991314, 3.083527, -4.505589),
(-6.416035, 3.720343, -6.732048),
(-6.186207, 3.562336, -5.788795),
(-3.289414, 3.428269, -8.254658),
(-1.110836, 3.787375, -8.944141),
(1.082107, 3.270263, -9.059055),
(1.565704, 3.820892, -8.446182),
(2.212095, 3.763435, -8.221142),
(3.030858, 4.175211, -8.029617),
(-2.365314, 2.633447, -8.221142),
(-5.372232, 2.188155, -7.445473),
(-8.465336, 2.116334, -4.577410),
(-9.432529, 1.388545, 0.541054),
(-6.957088, 1.623161, 6.085657),
(-4.735416, 0.751729, 8.992023),
(-1.800320, 2.063664, 9.762905),
(-0.153219, -1.795532, 9.657566),
(5.764854, -3.801740, 6.775141),
(9.470833, -2.240824, 2.777089),
(9.925701, -1.000710, -1.915234),
(8.685585, 0.277709, -4.347582),
(9.676720, -0.459656, -0.521901),
(9.719814, -0.689484, 1.584856),
(8.541943, -1.503459, 4.160847),
(7.608267, -1.824261, 5.865404),
(5.817524, -1.446002, 6.770353),
(3.887925, -1.991844, 8.671223),
(1.805108, -2.039724, 9.303249),
(0.593723, -1.690194, 9.518715),
(0.852279, -2.087605, 9.427738),
(1.206597, -1.857777, 9.226639),
(0.392623, -2.255188, 9.193123),
(-2.475440, -2.154638, 9.173969),
(-3.677250, -8.288174, 3.198441),
(-0.981558, -2.944673, 8.977661),
(1.517823, 3.409117, 8.977661),
(2.796242, 5.989895, 5.807947),
(4.151270, -2.552050, 9.418163),
(4.242243, -9.844303, 1.694982),
(5.946802, -3.543183, 6.890055),
(7.028910, -4.462496, 4.199150),
(-1.694982, -6.655439, 6.430399),
(0.703849, -3.112255, 8.685585),
(1.340664, 4.342793, 8.053558),
(1.627949, 9.920914, -0.608087),
(6.985817, 0.517113, 7.517294),
(5.434477, -5.372232, 5.994682),
(4.165634, -6.224510, 8.082287),
(0.847491, -4.677959, 9.509136),
(3.476150, -4.812025, 7.421532),
]
display = board.DISPLAY
main_group = displayio.Group(max_size=10)
display.show(main_group)

color_bitmap = displayio.Bitmap(display.width, display.height, 1)
color_palette = displayio.Palette(1)
color_palette[0] = 0x990099

background = displayio.TileGrid(color_bitmap, pixel_shader=color_palette, x=0, y=0)
main_group.append(background)

# Accelerometer Properties. Normally accelerometer well calibrated
# Will give a maximum output of 10 mts / s**2
VALUES_X = (-10, 10)
VALUES_Y = (-10, 10)

# Horizontal Bar Properties
HORIZONTAL_BAR_X_ORIGIN = 10
HORIZONTAL_BAR_Y_ORIGIN = 30
HORIZONTAL_BAR_WIDTH = display.width // 4
HORIZONTAL_BAR_HEIGHT = 30

# Vertical Bar Properties
VERTICAL_BAR_HEIGHT = display.height // 4
VERTICAL_BAR_WIDTH = 30

# We create our bar displays
left_horizontal_bar = HorizontalProgressBar(
(HORIZONTAL_BAR_X_ORIGIN, HORIZONTAL_BAR_Y_ORIGIN),
(HORIZONTAL_BAR_WIDTH, HORIZONTAL_BAR_HEIGHT),
min_value=0,
max_value=-VALUES_X[0],
direction=HorizontalFillDirection.RIGHT_TO_LEFT,
)
main_group.append(left_horizontal_bar)

right_horizontal_bar = HorizontalProgressBar(
(HORIZONTAL_BAR_X_ORIGIN + HORIZONTAL_BAR_WIDTH, HORIZONTAL_BAR_Y_ORIGIN),
(HORIZONTAL_BAR_WIDTH, HORIZONTAL_BAR_HEIGHT),
min_value=0,
max_value=VALUES_X[1],
direction=HorizontalFillDirection.LEFT_TO_RIGHT,
)
main_group.append(right_horizontal_bar)


top_vertical_bar = VerticalProgressBar(
(HORIZONTAL_BAR_X_ORIGIN + 2 * HORIZONTAL_BAR_WIDTH + 20, HORIZONTAL_BAR_Y_ORIGIN),
(VERTICAL_BAR_WIDTH, VERTICAL_BAR_HEIGHT),
min_value=0,
max_value=VALUES_Y[1],
direction=VerticalFillDirection.BOTTOM_TO_TOP,
)
main_group.append(top_vertical_bar)

bottom_vertical_bar = VerticalProgressBar(
(
HORIZONTAL_BAR_X_ORIGIN + 2 * HORIZONTAL_BAR_WIDTH + 20,
HORIZONTAL_BAR_Y_ORIGIN + VERTICAL_BAR_HEIGHT,
),
(VERTICAL_BAR_WIDTH, VERTICAL_BAR_HEIGHT),
min_value=0,
max_value=-VALUES_Y[0],
direction=VerticalFillDirection.TOP_TO_BOTTOM,
)
main_group.append(bottom_vertical_bar)

delay = 0.5

while True:
for val in fake__accel_data:
if val[0] >= 0:
left_horizontal_bar.value = 0
right_horizontal_bar.value = val[0]
if val[0] < 0:
left_horizontal_bar.value = -val[0]
right_horizontal_bar.value = 0

if val[1] >= 0:
top_vertical_bar.value = val[1]
bottom_vertical_bar.value = 0
if val[1] < 0:
bottom_vertical_bar.value = -val[1]
top_vertical_bar.value = 0

display.refresh()
time.sleep(delay)