合宙esp32c3+合宙air101LCD屏幕跑通microPython

先感谢这篇文章
esp32c3+air101Lcd用micropython点亮
这个屏幕虽然可以配合esp32c3使用,但是很显然这个lcd不是原生搭配的,因为看针脚的定义,esp32c3的IO10是硬件spi的MISO引脚,在屏幕中,这个引脚定义为RES,看起来还是略显尴尬。
根据官方介绍屏幕驱动使用的是st7735s,在使用的时候,先引用st7735.py,然后定义软SPI,不理res针脚这件事情,还是把IO10定义为MISO。

测试代码如下:

from machine import Pin, SoftSPI,SPI
from ST7735 import TFT
import time
# 由于ftf屏的颜色有问题,因此需要重写一个函数修复一下
def TFTColor(r,g,b) :
  return ((b & 0xF8) << 8) | ((g & 0xFC) << 3) | (r >> 3)
#使用SoftSPI,SPI不行
spi = SoftSPI(baudrate=800000, polarity=1, phase=0, sck=Pin(2), mosi=Pin(3), miso=Pin(10))
tft=TFT(spi,6,10,7) #DC, Reset, CS
tft.initr()
tft.rgb(True)
tft.rotation(1) #方向调整

# 绘制背景色
tft.fill(TFTColor(255,200,0))
cen = Pin(4, Pin.OUT,Pin.PULL_UP)#上拉io4,中心按钮按下是低电平,不按的时候电平悬浮
#cen.on()
# 绘制方块
#tft.fillrect((0,24),(20,20),TFTColor(0,0,255))
centerBtnPress=1#准备循环显示颜色
temp=time.ticks_ms()#准备测试按钮按下前后的电平变化
while time.ticks_ms()-temp<5000:
    print(Pin(4).value())
    time.sleep_ms(100)
while centerBtnPress:
    tft.fill(TFTColor(255,0,0))
    time.sleep_ms(400)
    tft.fill(TFTColor(255,255,0))
    time.sleep_ms(400)
    tft.fill(TFTColor(255,0,255))
    time.sleep_ms(400)    
    centerBtnPress= cen.value()#按下cent结束,要按的久一些,因为前面延迟显示颜色

你可能感兴趣的:(micorPython,单片机,嵌入式硬件)