67 lines
1.7 KiB
Python
67 lines
1.7 KiB
Python
import spidev as SPI
|
|
import SSD1306
|
|
import time
|
|
|
|
from PIL import Image,ImageDraw,ImageFont
|
|
|
|
# Raspberry Pi pin configuration:
|
|
RST = 19
|
|
DC = 16
|
|
bus = 0
|
|
device = 0
|
|
|
|
# 128x64 display with hardware SPI:
|
|
disp = SSD1306.SSD1306(RST, DC, SPI.SpiDev(bus, device))
|
|
|
|
# Initialize library.
|
|
disp.begin()
|
|
|
|
# Clear display.
|
|
disp.clear()
|
|
disp.display()
|
|
|
|
# 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
|
|
shape_width = 20
|
|
top = padding
|
|
bottom = height-padding
|
|
# Move left to right keeping track of the current x position for drawing shapes.
|
|
x = padding
|
|
# Draw an ellipse.
|
|
draw.ellipse((x, top , x+shape_width, bottom), outline=255, fill=0)
|
|
x += shape_width+padding
|
|
# Draw a rectangle.
|
|
draw.rectangle((x, top, x+shape_width, bottom), outline=255, fill=0)
|
|
x += shape_width+padding
|
|
# Draw a triangle.
|
|
draw.polygon([(x, bottom), (x+shape_width/2, top), (x+shape_width, bottom)], outline=255, fill=0)
|
|
x += shape_width+padding
|
|
# Draw an X.
|
|
draw.line((x, bottom, x+shape_width, top), fill=255)
|
|
draw.line((x, top, x+shape_width, bottom), fill=255)
|
|
x += shape_width+padding
|
|
|
|
# Load default font.
|
|
font = ImageFont.load_default()
|
|
|
|
# Write two lines of text.
|
|
draw.text((x, top), 'Hello', font=font, fill=255)
|
|
draw.text((x, top+20), 'World!', font=font, fill=255)
|
|
|
|
# Display image.
|
|
disp.image(image)
|
|
disp.display()
|