71 lines
1.6 KiB
Python
71 lines
1.6 KiB
Python
#!/usr/bin/python
|
|
# -*- coding:utf-8 -*-
|
|
|
|
import spidev as SPI
|
|
from PIL import Image,ImageDraw,ImageFont
|
|
from . import SSD1306
|
|
|
|
# Raspberry Pi pin configuration:
|
|
OLED_GPIO_RST = 19
|
|
OLED_GPIO_DC = 16
|
|
OLED_SPI_BUS = 0
|
|
OLED_SPI_CS = 0
|
|
|
|
OLED_WIDTH = 128
|
|
OLED_HEIGHT = 64
|
|
|
|
class OLED(object):
|
|
"""class for OLED."""
|
|
|
|
def __init__(self, gpio_rst=OLED_GPIO_RST, gpio_dc=OLED_GPIO_DC, spi_bus=OLED_SPI_BUS, spi_cs=OLED_SPI_CS):
|
|
self.rst = gpio_rst
|
|
self.dc = gpio_dc
|
|
self.spi = SPI.SpiDev(spi_bus, spi_cs)
|
|
self.disp = SSD1306.SSD1306(gpio_rst, gpio_dc, self.spi)
|
|
self.disp.width = OLED_WIDTH
|
|
self.disp.height = OLED_HEIGHT
|
|
|
|
disp = self.disp
|
|
# 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.
|
|
self.image = Image.new('1', (disp.width, disp.height))
|
|
|
|
# Get drawing object to draw on image.
|
|
self.draw = ImageDraw.Draw(self.image)
|
|
|
|
def draw_rectangle(self, x, y, width, height):
|
|
disp = self.disp
|
|
draw = self.draw
|
|
image = self.image
|
|
|
|
# Draw a black filled box to clear the image.
|
|
draw.rectangle((x, y, width, height), outline=0, fill=0)
|
|
|
|
# Display image.
|
|
disp.image(image)
|
|
disp.display()
|
|
|
|
def draw_text(self, x, y, size, text):
|
|
disp = self.disp
|
|
draw = self.draw
|
|
image = self.image
|
|
|
|
# Load default font.
|
|
# font = ImageFont.load_default()
|
|
font_path = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"
|
|
font = ImageFont.truetype(font_path, size)
|
|
|
|
# Write two lines of text.
|
|
draw.text((x, y), text, font=font, fill=255)
|
|
|
|
# Display image.
|
|
disp.image(image)
|
|
disp.display()
|