[原创] PYB Nano I2C驱动 OLED显示

hanyeguxingwo   2016-12-12 18:47 楼主
        在之前的帖子中PYB Nano开发板使用了SPI方式驱动OLED进行显示,今天发现手里的小e开发板使用的OLED为I2C方式,于是PYB Nano开发板用I2C驱动OLED进行了验证。
【1】硬件连接:
使用PYB Nano开发板的I2C(1),对应的引脚为Y0(SDA)、Y1(SCL):
360截图20161212182704439.jpg
527845320559596440.jpg
【2】程序源码:
库文件参看:PYB Nano驱动OLED显示
  1. import pyb
  2. from ssd1306 import SSD1306

  3. # SPI
  4. #display = SSD1306(pinout={'dc': 'Y9',
  5. # 'res': 'Y10'},
  6. # height=64,
  7. # external_vcc=False)

  8. # I2C connected to Y0, Y1 (I2C bus 1)
  9. display = SSD1306(pinout={'sda': 'Y0',
  10. 'scl': 'Y1'},
  11. height=64,
  12. external_vcc=False)

  13. led_red = pyb.LED(1)
  14. led_red.off()

  15. try:
  16. display.poweron()
  17. display.init_display()

  18. display.draw_text(1,1,'PYB Nano OLED Test',size=1,space=1)
  19. display.draw_text(1,10,'Hello MicroPython!',size=1,space=1)

  20. # Write display buffer
  21. display.display()
  22. pyb.delay(10000)

  23. x = 0
  24. y = 0
  25. direction_x = True
  26. direction_y = True

  27. while True:
  28. # Clear the previous lines
  29. prev_x = x
  30. prev_y = y

  31. # Move bars
  32. x += (1 if direction_x else -1)
  33. y += (1 if direction_y else -1)

  34. # Bounce back, if required
  35. if x == 128:
  36. direction_x = False
  37. x = 126
  38. elif x == -1:
  39. direction_x = True
  40. x = 1
  41. if y == 64:
  42. direction_y = False
  43. y = 63
  44. elif y == -1:
  45. direction_y = True
  46. y = 1

  47. # Draw new lines
  48. for i in range(64):
  49. display.set_pixel(prev_x, i, False)
  50. display.set_pixel(x, i, True)
  51. for i in range(128):
  52. display.set_pixel(i, prev_y, False)
  53. display.set_pixel(i, y, True)

  54. # Make sure the corners are active
  55. display.set_pixel(0, 0, True)
  56. display.set_pixel(127, 0, True)
  57. display.set_pixel(0, 63, True)
  58. display.set_pixel(127, 63, True)

  59. # Write display buffer
  60. display.display()

  61. except Exception as ex:
  62. led_red.on()
  63. print('Unexpected error: {0}'.format(ex))
  64. display.poweroff()
【3】显示效果:

694064197503123305.jpg 230283279304708882.jpg
273668542333332527.jpg
474506343539351778.jpg




回复评论 (4)

机智云板子?
点赞  2016-12-12 19:41
引用: dql2016 发表于 2016-12-12 19:41
机智云板子?

不是,借用了小e开发板的OLED屏
点赞  2016-12-12 19:43
这个板子上有一个ESP8266,可以用ESP8266的micropython在写一个OLED驱动。
点赞  2016-12-12 21:06
引用: dcexpert 发表于 2016-12-12 21:06
这个板子上有一个ESP8266,可以用ESP8266的micropython在写一个OLED驱动。

好的,貌似ESP8266要简单
点赞  2016-12-12 21:36
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复