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_09 作業3 以Node-Red 為主

 2024_09 作業3  (以Node-Red 為主  Arduino 可能需要配合修改 ) Arduino 可能需要修改的部分 1)mqtt broker  2) 主題Topic (發行 接收) 3) WIFI ssid , password const char br...