http://bbs.eeworld.com.cn/thread-508531-1-1.html
NodeMCU 開發板是基於ESP8266 Soc的可以運行MicroPython的開發板,此次使用開發板的I2C功能來驅動OLED顯示。
【1】硬體連接:
ESP8266
I2C對應的引腳為Pin(14)--SCL,Pin(2)--SDA:
【2】程式源碼:
# main.py -- put your code here!
import machine
from machine import Pin,I2C
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)
led_blue = machine.Pin(2, Pin.OUT) # 設置 GPIO2 為輸出
led_blue.high()
try:
display.poweron()
display.init_display()
display.text('PYBNano I2C OLED',1,1)
display.text('Hi, MicroPython!',1,16)
display.text('By: hbzjt2012',1,31)
#
Write display buffer
display.show()
time.sleep(10)
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(10)
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()
沒有留言:
張貼留言