From db206731c783312025810d3a44619472108cf6f8 Mon Sep 17 00:00:00 2001 From: caternuson Date: Tue, 10 Jul 2018 16:22:36 -0700 Subject: [PATCH 1/3] add initial working bicolor24 --- adafruit_ht16k33/bargraph.py | 64 ++++++++++++++++++++++++++++++++++++ examples/bicolor24.py | 25 ++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 adafruit_ht16k33/bargraph.py create mode 100644 examples/bicolor24.py diff --git a/adafruit_ht16k33/bargraph.py b/adafruit_ht16k33/bargraph.py new file mode 100644 index 0000000..b3fedd0 --- /dev/null +++ b/adafruit_ht16k33/bargraph.py @@ -0,0 +1,64 @@ +# The MIT License (MIT) +# +# Copyright (c) 2018 Carter Nelson for Adafruit Industries +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +""" +`adafruit_ht16k33.bargraph` +=========================== + +* Authors: Carter Nelson for Adafruit Industries + +""" + +from adafruit_ht16k33.ht16k33 import HT16K33 + +class Bicolor24(HT16K33): + """Bi-color 24-bar bargraph display.""" + + LED_OFF = 0 + LED_RED = 1 + LED_GREEN = 2 + LED_YELLOW = 3 + + def __getitem__(self, key): + # map to HT16K33 row (x) and column (y), see schematic + x = key % 4 + 4 * (key // 12) + y = key // 4 - 3 * (key // 12) + # construct the color value and return it + return self._pixel(x, y) | self._pixel(x+8, y) << 1 + + def __setitem__(self, key, value): + # map to HT16K33 row (x) and column (y), see schematic + x = key % 4 + 4 * (key // 12) + y = key // 4 - 3 * (key // 12) + # conditionally turn on red LED + self._pixel(x, y, value & 0x01) + # conditionally turn on green LED + self._pixel(x+8, y, value >> 1) + + def fill(self, color): + """Fill the whole display with the given color.""" + what_it_was = self.auto_write + self.auto_write = False + for i in range(24): + self[i] = color + self.show() + self.auto_write = what_it_was diff --git a/examples/bicolor24.py b/examples/bicolor24.py new file mode 100644 index 0000000..133ea93 --- /dev/null +++ b/examples/bicolor24.py @@ -0,0 +1,25 @@ +import time +import board +import busio +from adafruit_ht16k33.bargraph import Bicolor24 + +i2c = busio.I2C(board.SCL, board.SDA) + +bar = Bicolor24(i2c) + +bar[0] = bar.LED_RED +bar[1] = bar.LED_GREEN +bar[2] = bar.LED_YELLOW + +time.sleep(2) + +bar.fill(bar.LED_OFF) + +for i in range(24): + bar[i] = bar.LED_RED + time.sleep(0.1) + bar[i] = bar.LED_OFF + +time.sleep(1) + +bar.fill(bar.LED_GREEN) From 895c2dd12df0add2be5a738696efa332b14a9458 Mon Sep 17 00:00:00 2001 From: caternuson Date: Wed, 11 Jul 2018 08:41:48 -0700 Subject: [PATCH 2/3] add comments to example --- examples/bicolor24.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/examples/bicolor24.py b/examples/bicolor24.py index 133ea93..4adb92f 100644 --- a/examples/bicolor24.py +++ b/examples/bicolor24.py @@ -1,20 +1,34 @@ +# Basic example of using the Bi-color 24 segment bargraph display. +# This example and library is meant to work with Adafruit CircuitPython API. +# Author: Carter Nelson +# License: Public Domain + import time + +# Import board related modules import board import busio + +# Import the Bicolor24 driver from the HT16K33 module from adafruit_ht16k33.bargraph import Bicolor24 +# Create the I2C interface i2c = busio.I2C(board.SCL, board.SDA) +# Create the LED bargraph class. bar = Bicolor24(i2c) +# Set individual segments of bargraph bar[0] = bar.LED_RED bar[1] = bar.LED_GREEN bar[2] = bar.LED_YELLOW time.sleep(2) +# Turn them all off bar.fill(bar.LED_OFF) +# Turn them on in a loop for i in range(24): bar[i] = bar.LED_RED time.sleep(0.1) @@ -22,4 +36,5 @@ time.sleep(1) +# Fill the entrire bargraph bar.fill(bar.LED_GREEN) From 64bcf8ed4b2b10d8e36ffc187916e4570601348e Mon Sep 17 00:00:00 2001 From: caternuson Date: Wed, 11 Jul 2018 08:54:56 -0700 Subject: [PATCH 3/3] of course pylint, whatever you say pylint --- examples/bicolor24.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/examples/bicolor24.py b/examples/bicolor24.py index 4adb92f..90b9a52 100644 --- a/examples/bicolor24.py +++ b/examples/bicolor24.py @@ -16,25 +16,25 @@ i2c = busio.I2C(board.SCL, board.SDA) # Create the LED bargraph class. -bar = Bicolor24(i2c) +bc24 = Bicolor24(i2c) # Set individual segments of bargraph -bar[0] = bar.LED_RED -bar[1] = bar.LED_GREEN -bar[2] = bar.LED_YELLOW +bc24[0] = bc24.LED_RED +bc24[1] = bc24.LED_GREEN +bc24[2] = bc24.LED_YELLOW time.sleep(2) # Turn them all off -bar.fill(bar.LED_OFF) +bc24.fill(bc24.LED_OFF) # Turn them on in a loop for i in range(24): - bar[i] = bar.LED_RED + bc24[i] = bc24.LED_RED time.sleep(0.1) - bar[i] = bar.LED_OFF + bc24[i] = bc24.LED_OFF time.sleep(1) # Fill the entrire bargraph -bar.fill(bar.LED_GREEN) +bc24.fill(bc24.LED_GREEN)