|
ESP-mp-01开发板SPI驱动OLED显示
[复制链接]
昨天使用ESP-mp-01开发板的I2C成功驱动OLED显示,今天测试了SPI方式,同样成功点亮OLED。
【1】硬件连接:
ESP8266 SPI对应的引脚为Pin(14)--SCK,Pin(13)--MOSI,Pin(12)--MISO,Pin(16)--CS:
【2】程序源码:- # main.py -- put your code here!
- import machine
- from machine import Pin,I2C,SPI
- import ssd1306
- import math
- import time
- # construct an I2C bus
- #i2c = I2C(scl=Pin(14), sda=Pin(2), freq=100000)
- #display = ssd1306.SSD1306_I2C(128,64, i2c)
- # construct an SPI bus on the given pins
- # polarity is the idle state of SCK
- # phase=0 means sample on the first edge of SCK, phase=1 means the second
- spi = SPI(baudrate=10000000, polarity=1, phase=0, sck=Pin(14,Pin.OUT), mosi=Pin(13,Pin.OUT), miso=Pin(12))
- display = ssd1306.SSD1306_SPI(128, 64, spi, Pin(5),Pin(4), Pin(16))
- led_blue = machine.Pin(2, Pin.OUT) # 设置 GPIO2 为输出
- led_blue.high()
- try:
- display.poweron()
- display.init_display()
- display.text('ESP-mp SPI OLED',1,1)
- display.text('Hi, MicroPython!',1,16)
- display.text('By: hbzjt2012',1,31)
-
- # Write display buffer
- display.show()
- time.sleep(3)
- display.fill(0)
- for x in range(0, 128):
- display.pixel(x, 32+int(math.sin(x/64*math.pi)*7 + 8), 1)
- display.show()
- time.sleep(3)
- display.fill(0)
- x = 0
- y = 0
- direction_x = True
- direction_y = True
- while True:
- # Clear the previous lines
- prev_x = x
- prev_y = y
- # Move bars
- x += (1 if direction_x else -1)
- y += (1 if direction_y else -1)
- # Bounce back, if required
- if x == 128:
- direction_x = False
- x = 126
- elif x == -1:
- direction_x = True
- x = 1
- if y == 64:
- direction_y = False
- y = 63
- elif y == -1:
- direction_y = True
- y = 1
- # Draw new lines
- for i in range(64):
- display.pixel(prev_x, i, False)
- display.pixel(x, i, True)
- for i in range(128):
- display.pixel(i, prev_y, False)
- display.pixel(i, y, True)
- # Make sure the corners are active
- display.pixel(0, 0, True)
- display.pixel(127, 0, True)
- display.pixel(0, 63, True)
- display.pixel(127, 63, True)
-
- # Write display buffer
- display.show()
- except Exception as ex:
- led_blue.low()
- print('Unexpected error: {0}'.format(ex))
- display.poweroff()
复制代码 【3】效果演示:
|
|