2017年2月25日 星期六

MicroPython I2C OLED

源自於
 http://bbs.eeworld.com.cn/thread-508531-1-1.html


NodeMCU 開發板是基於ESP8266 Soc的可以運行MicroPython的開發板,此次使用開發板的I2C功能來驅動OLED顯示。

1】硬體連接:






ESP8266 I2C對應的引腳為Pin(14)--SCLPin(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()

沒有留言:

張貼留言

2024產專班 作業2 (純模擬)

2024產專班 作業2  (純模擬) 1) LED ON,OFF,TIMER,FLASH 模擬 (switch 控制) 2)RFID卡號模擬 (buttom  模擬RFID UID(不從ESP32) Node-Red 程式 [{"id":"d8886...