From ae00b32864e8aced714a254fea226c9444f966b3 Mon Sep 17 00:00:00 2001 From: Melissa LeBlanc-Williams Date: Wed, 24 Jun 2020 14:26:58 -0700 Subject: [PATCH 1/2] Added Bonnet Buttons example --- examples/rgb_display_pillow_bonnet_buttons.py | 161 ++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 examples/rgb_display_pillow_bonnet_buttons.py diff --git a/examples/rgb_display_pillow_bonnet_buttons.py b/examples/rgb_display_pillow_bonnet_buttons.py new file mode 100644 index 0000000..078a273 --- /dev/null +++ b/examples/rgb_display_pillow_bonnet_buttons.py @@ -0,0 +1,161 @@ +# Copyright (c) 2017 Adafruit Industries +# Author: James DeVito +# Ported to RGB Display by Melissa LeBlanc-Williams +# +# 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. + +# This example is for use on (Linux) computers that are using CPython with +# Adafruit Blinka to support CircuitPython libraries. CircuitPython does +# not support PIL/pillow (python imaging library)! + +import time +import random +from colorsys import hsv_to_rgb +from PIL import Image, ImageDraw, ImageFont +import board +from digitalio import DigitalInOut, Direction +import adafruit_rgb_display.st7789 as st7789 + +# Create the display +cs_pin = DigitalInOut(board.CE0) +dc_pin = DigitalInOut(board.D25) +reset_pin = DigitalInOut(board.D24) +BAUDRATE = 24000000 + +spi = board.SPI() +disp = st7789.ST7789( + spi, + height=240, + y_offset=80, + rotation=180, + cs=cs_pin, + dc=dc_pin, + rst=reset_pin, + baudrate=BAUDRATE, +) + +# Input pins: +button_A = DigitalInOut(board.D5) +button_A.direction = Direction.INPUT + +button_B = DigitalInOut(board.D6) +button_B.direction = Direction.INPUT + +button_L = DigitalInOut(board.D27) +button_L.direction = Direction.INPUT + +button_R = DigitalInOut(board.D23) +button_R.direction = Direction.INPUT + +button_U = DigitalInOut(board.D17) +button_U.direction = Direction.INPUT + +button_D = DigitalInOut(board.D22) +button_D.direction = Direction.INPUT + +button_C = DigitalInOut(board.D4) +button_C.direction = Direction.INPUT + +# Turn on the Backlight +backlight = DigitalInOut(board.D26) +backlight.switch_to_output() +backlight.value = True + +# Create blank image for drawing. +# Make sure to create image with mode 'RGB' for color. +width = disp.width +height = disp.height +image = Image.new("RGB", (width, height)) + +# Get drawing object to draw on image. +draw = ImageDraw.Draw(image) + +# Clear display. +draw.rectangle((0, 0, width, height), outline=0, fill=(255, 0, 0)) +disp.image(image) + +# Get drawing object to draw on image. +draw = ImageDraw.Draw(image) + +# Draw a black filled box to clear the image. +draw.rectangle((0, 0, width, height), outline=0, fill=0) + +udlr_fill = "#00FF00" +udlr_outline = "#00FFFF" +button_fill = "#FF00FF" +button_outline = "#FFFFFF" + +fnt = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", 30) + +while True: + up_fill = 0 + if not button_U.value: # up pressed + up_fill = udlr_fill + draw.polygon( + [(40, 40), (60, 4), (80, 40)], outline=udlr_outline, fill=up_fill + ) # Up + + down_fill = 0 + if not button_D.value: # down pressed + down_fill = udlr_fill + draw.polygon( + [(60, 120), (80, 84), (40, 84)], outline=udlr_outline, fill=down_fill + ) # down + + left_fill = 0 + if not button_L.value: # left pressed + left_fill = udlr_fill + draw.polygon( + [(0, 60), (36, 42), (36, 81)], outline=udlr_outline, fill=left_fill + ) # left + + right_fill = 0 + if not button_R.value: # right pressed + right_fill = udlr_fill + draw.polygon( + [(120, 60), (84, 42), (84, 82)], outline=udlr_outline, fill=right_fill + ) # right + + center_fill = 0 + if not button_C.value: # center pressed + center_fill = button_fill + draw.rectangle((40, 44, 80, 80), outline=button_outline, fill=center_fill) # center + + A_fill = 0 + if not button_A.value: # left pressed + A_fill = button_fill + draw.ellipse((140, 80, 180, 120), outline=button_outline, fill=A_fill) # A button + + B_fill = 0 + if not button_B.value: # left pressed + B_fill = button_fill + draw.ellipse((190, 40, 230, 80), outline=button_outline, fill=B_fill) # B button + + # make a random color and print text + rcolor = tuple([int(x * 255) for x in hsv_to_rgb(random.random(), 1, 1)]) + draw.text((20, 150), "Hello World", font=fnt, fill=rcolor) + rcolor = tuple([int(x * 255) for x in hsv_to_rgb(random.random(), 1, 1)]) + draw.text((20, 180), "Hello World", font=fnt, fill=rcolor) + rcolor = tuple([int(x * 255) for x in hsv_to_rgb(random.random(), 1, 1)]) + draw.text((20, 210), "Hello World", font=fnt, fill=rcolor) + + # Display the Image + disp.image(image) + + time.sleep(0.01) From 85a445d17d2fcc3502a4860db4e9faaf39f8fee3 Mon Sep 17 00:00:00 2001 From: Melissa LeBlanc-Williams Date: Wed, 24 Jun 2020 14:28:50 -0700 Subject: [PATCH 2/2] Updated import order --- examples/rgb_display_pillow_bonnet_buttons.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/rgb_display_pillow_bonnet_buttons.py b/examples/rgb_display_pillow_bonnet_buttons.py index 078a273..e250629 100644 --- a/examples/rgb_display_pillow_bonnet_buttons.py +++ b/examples/rgb_display_pillow_bonnet_buttons.py @@ -27,9 +27,9 @@ import time import random from colorsys import hsv_to_rgb -from PIL import Image, ImageDraw, ImageFont import board from digitalio import DigitalInOut, Direction +from PIL import Image, ImageDraw, ImageFont import adafruit_rgb_display.st7789 as st7789 # Create the display