-
Notifications
You must be signed in to change notification settings - Fork 0
/
OLED.py
83 lines (73 loc) · 2.28 KB
/
OLED.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/bin/env/python3
# File name : server.py
# Description : for OLED functions
# Website : www.gewbot.com
# Author : William(Based on Adrian Rosebrock's OpenCV code on pyimagesearch.com)
# Date : 2019/08/28
from luma.core.interface.serial import i2c
from luma.core.render import canvas
from luma.oled.device import ssd1306, ssd1325, ssd1331, sh1106
import time
import threading
try:
serial = i2c(port=1, address=0x3C)
device = ssd1306(serial, rotate=0)
except:
print('OLED disconnected\nOLED没有连接')
text_1 = 'GEWBOT.COM'
text_2 = 'IP:CONNECTING'
text_3 = '<ARM> OR <PT> MODE'
text_4 = 'MPU6050 DETECTING'
text_5 = 'FUNCTION OFF'
text_6 = 'Message:None'
class OLED_ctrl(threading.Thread):
def __init__(self, *args, **kwargs):
super(OLED_ctrl, self).__init__(*args, **kwargs)
self.__flag = threading.Event() # 用于暂停线程的标识
self.__flag.set() # 设置为True
self.__running = threading.Event() # 用于停止线程的标识
self.__running.set() # 将running设置为True
def run(self):
while self.__running.isSet():
self.__flag.wait() # 为True时立即返回, 为False时阻塞直到内部的标识位为True后返回
try:
with canvas(device) as draw:
draw.text((0, 0), text_1, fill="white")
draw.text((0, 10), text_2, fill="white")
draw.text((0, 20), text_3, fill="white")
draw.text((0, 30), text_4, fill="white")
draw.text((0, 40), text_5, fill="white")
draw.text((0, 50), text_6, fill="white")
except:
pass
print('loop')
self.pause()
def pause(self):
self.__flag.clear() # 设置为False, 让线程阻塞
def resume(self):
self.__flag.set() # 设置为True, 让线程停止阻塞
def stop(self):
self.__flag.set() # 将线程从暂停状态恢复, 如何已经暂停的话
self.__running.clear() # 设置为False
def screen_show(self, position, text):
global text_1, text_2, text_3, text_4, text_5, text_6
if position == 1:
text_1 = text
elif position == 2:
text_2 = text
elif position == 3:
text_3 = text
elif position == 4:
text_4 = text
elif position == 5:
text_5 = text
elif position == 6:
text_6 = text
self.resume()
if __name__ == '__main__':
screen = OLED_ctrl()
screen.start()
screen.screen_show(1, 'GEWBOT.COM')
while 1:
time.sleep(10)
pass