[修改] 增加LEd线程

This commit is contained in:
2023-07-02 00:07:40 +08:00
parent 3919b9a91a
commit 20dcf41bf4
3 changed files with 24 additions and 30 deletions

View File

@ -13,23 +13,3 @@ class LED(object):
GPIO.setwarnings(False) GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM) GPIO.setmode(GPIO.BCM)
GPIO.setup(LED,GPIO.OUT) GPIO.setup(LED,GPIO.OUT)
try:
while True:
GPIO.output(LED,GPIO.HIGH)
time.sleep(1)
GPIO.output(LED,GPIO.LOW)
time.sleep(1)
except:
print("except")
GPIO.output(LED,GPIO.HIGH)
GPIO.cleanup()
LED_GPIO_RED = 26
def main():
# 128x64 display with hardware SPI:
led = LED.LED(LED_GPIO_RED)
if __name__=='__main__':
main()

View File

@ -1,4 +1,4 @@
import spidev import spidev
import RPi.GPIO as GPIO import RPi.GPIO as GPIO
import time import time
@ -40,7 +40,7 @@ SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL = 0x2A
class SSD1306(object): class SSD1306(object):
"""class for SSD1306 128*64 0.96inch OLED displays.""" """class for SSD1306 128*64 0.96inch OLED displays."""
def __init__(self,rst,dc,spi): def __init__(self,rst,dc,spi):
self.width = 128 self.width = 128
self.height = 64 self.height = 64
@ -70,7 +70,7 @@ class SSD1306(object):
self.command(SSD1306_DISPLAYOFF) # 0xAE self.command(SSD1306_DISPLAYOFF) # 0xAE
self.command(SSD1306_SETDISPLAYCLOCKDIV) # 0xD5 self.command(SSD1306_SETDISPLAYCLOCKDIV) # 0xD5
self.command(0x80) # the suggested ra tio 0x80 self.command(0x80) # the suggested ra tio 0x80
self.command(SSD1306_SETMULTIPLEX) # 0xA8 self.command(SSD1306_SETMULTIPLEX) # 0xA8
self.command(0x3F) self.command(0x3F)
self.command(SSD1306_SETDISPLAYOFFSET) # 0xD3 self.command(SSD1306_SETDISPLAYOFFSET) # 0xD3
@ -82,7 +82,7 @@ class SSD1306(object):
else: else:
self.command(0x14) self.command(0x14)
self.command(SSD1306_MEMORYMODE) # 0x20 self.command(SSD1306_MEMORYMODE) # 0x20
self.command(0x00) # 0x0 act like ks0108 self.command(0x00) # 0x0 act like ks0108
self.command(SSD1306_SEGREMAP | 0x1) self.command(SSD1306_SEGREMAP | 0x1)
self.command(SSD1306_COMSCANDEC) self.command(SSD1306_COMSCANDEC)
self.command(SSD1306_SETCOMPINS) # 0xDA self.command(SSD1306_SETCOMPINS) # 0xDA
@ -156,7 +156,7 @@ class SSD1306(object):
self.command(contrast) self.command(contrast)
def dim(self, dim): def dim(self, dim):
"""Adjusts contrast to dim the display if dim is True, """Adjusts contrast to dim the display if dim is True,
otherwise sets the contrast to normal brightness if dim is False.""" otherwise sets the contrast to normal brightness if dim is False."""
# Assume dim display. # Assume dim display.
contrast = 0 contrast = 0
@ -166,7 +166,3 @@ class SSD1306(object):
contrast = 0x9F contrast = 0x9F
else: else:
contrast = 0xCF contrast = 0xCF

20
main.py
View File

@ -9,6 +9,7 @@ import spidev as SPI
import Pioneer600.Led.LED as LED import Pioneer600.Led.LED as LED
import Pioneer600.Oled.SSD1306 as SSD1306 import Pioneer600.Oled.SSD1306 as SSD1306
from PIL import Image,ImageDraw,ImageFont from PIL import Image,ImageDraw,ImageFont
import threading
# Raspberry Pi pin configuration: # Raspberry Pi pin configuration:
LED_GPIO_RED = 26 LED_GPIO_RED = 26
@ -18,16 +19,33 @@ OLED_GPIO_DC = 16
OLED_SPI_BUS = 0 OLED_SPI_BUS = 0
OLED_SPI_CS = 0 OLED_SPI_CS = 0
# 新线程执行的代码:
def blink_loop(*args, **kwargs):
try:
while True:
GPIO.output(args, GPIO.HIGH)
time.sleep(1)
GPIO.output(args, GPIO.LOW)
time.sleep(1)
except:
print("except")
GPIO.output(args, GPIO.HIGH)
GPIO.cleanup()
def main(): def main():
# 128x64 display with hardware SPI: # 128x64 display with hardware SPI:
led = LED.LED(LED_GPIO_RED) led = LED.LED(LED_GPIO_RED)
try: try:
led_blink = threading.Thread(target=blink_loop, name='led_blink', args=(LED_GPIO_RED,))
led_blink.start()
while True: while True:
time.sleep(1) time.sleep(1)
except: except:
print("except") print("Except")
led_blink.join()
if __name__=='__main__': if __name__=='__main__':
main() main()