From 5ddd2da106dc79cba63d7bc554605265824793a6 Mon Sep 17 00:00:00 2001 From: hscot <59375768+hscot@users.noreply.github.com> Date: Fri, 24 Apr 2020 01:53:44 -0500 Subject: [PATCH] Created new Python script for use with Adafruit PiOLED 128x32 Display (#13) * Added display_oled.py Reworked the original LCD code to work with the Adafruit PiOLED 128x32 display. * Update display_oled.py --- display_oled.py | 102 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 display_oled.py diff --git a/display_oled.py b/display_oled.py new file mode 100644 index 0000000..67a2969 --- /dev/null +++ b/display_oled.py @@ -0,0 +1,102 @@ +import time +from board import SCL, SDA +import busio +from PIL import Image, ImageDraw, ImageFont +import adafruit_ssd1306 +from bs4 import BeautifulSoup +import requests +import sys +import math + + +#This is the following code from the Adafruit Learn Page for the ssd1306 display. I will leave the original code and comments here! + +# Create the I2C interface. + +i2c = busio.I2C(SCL, SDA) + +# Create the SSD1306 OLED class. +# The first two parameters are the pixel width and pixel height. Change these +# to the right size for your display! + +disp = adafruit_ssd1306.SSD1306_I2C(128, 32, i2c) + +# Clear display. + +disp.fill(0) +disp.show() + +# Create blank image for drawing. +# Make sure to create image with mode '1' for 1-bit color. + +width = disp.width +height = disp.height +image = Image.new("1", (width, height)) + +# 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) + +# Draw some shapes. +# First define some constants to allow easy resizing of shapes. + +padding = -2 +top = padding +bottom = height - padding + +# Move left to right keeping track of the current x position for drawing shapes. + +x = 0 + +# Load default font. + +font = ImageFont.load_default() + +#Here is the updated code from the original LCD display, updated for use with the OLED display +while True: + from module.corona import * + # Draw a black filled box to clear the image. + draw.rectangle((0, 0, width, height), outline=0, fill=0) + #These will take the data from the original file and place them as text on the display. + draw.text((x, top + 0), "COVID-19 INFECTIONS", font=font, fill=255) + draw.text((x, top + 8), (cc) + (" infected ") + (infections_c), font=font, fill=255) + draw.text((x, top + 16), "WW Infected " + (infections_w), font=font, fill=255) + # Display image. This command pushes the image to the display, and will wait 10 seconds + disp.image(image) + disp.show() + time.sleep(10) + + + #The same code as before, but this one is displaying death information + draw.rectangle((0, 0, width, height), outline=0, fill=0) + draw.text((x, top + 0), "COVID-19 DEATHS", font=font, fill=255) + draw.text((x, top + 8), (cc) + (" Deaths ") + (deaths_c), font=font, fill=255) + draw.text((x, top + 16), "WW Deaths " + (deaths_w), font=font, fill=255) + disp.image(image) + disp.show() + time.sleep(10) + + #Displays Recoveries + draw.rectangle((0, 0, width, height), outline=0, fill=0) + draw.text((x, top + 0), "COVID-19 Recoveries", font=font, fill=255) + draw.text((x, top + 8), (cc) + (" Recoveries ") + (survived_c), font=font, fill=255) + draw.text((x, top + 16), "WW Recoveries " + (survived_w), font=font, fill=255) + disp.image(image) + disp.show() + time.sleep(10) + + draw.rectangle((0, 0, width, height), outline=0, fill=0) + draw.text((x, top + 0), "COVID-19 Tracker", font=font, fill=255) + draw.text((x, top + 8), "Created by:", font=font, fill=255) + draw.text((x, top + 16), "Julian Bruegger", font=font, fill=255) + draw.text((x, top + 24), "Adapted for OLED by:", font=font, fill=255) + draw.text((x, top + 32), "Harrison Thow", font=font, fill=255) + disp.image(image) + disp.show() + time.sleep(10) + +