860浏览
查看: 860|回复: 0

[ESP8266/ESP32] Esp32 C6 IIC使用u8g2成功点亮ssd1306

[复制链接]

前言

Beetle ESP32 C6体积小,资源丰富。本文将探索实现Beetle ESP32 C6的IIC功能。驱动点亮1306

所需材料

一、BeetleESP32 C6开发板

二、杜邦线若干


硬件连接

typeC线接电脑
ssd1306 IIC引脚与主板相接如下:
      VCC->3V3
      SDA->19
      CLK->20
GND->GND                     


代码

  1. #include <Arduino.h>
  2. #include <U8g2lib.h>
  3. #include "font.h"
  4. #ifdef U8X8_HAVE_HW_I2C
  5. #include <Wire.h>
  6. #endif
  7. U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);   // All Boards without Reset of the Display
  8. //128*64
  9. void setup(void) {
  10.   u8g2.begin();
  11.   u8g2.enableUTF8Print();        // enable UTF8 support for the Arduino print() function
  12. }
  13. void loop(void) {
  14.   u8g2.setFont(u8g2_font_unifont_t_chinese2);  // use chinese2 for all the glyphs of "你好世界"
  15.   u8g2.setFontDirection(0);
  16.   u8g2.clearBuffer();
  17.   u8g2.setCursor(0, 15);
  18.   u8g2.print("Hello World!");
  19.   u8g2.setCursor(0, 40);
  20.   u8g2.print("你好世界");        // Chinese "Hello World"
  21.   u8g2.sendBuffer();
  22.   delay(1000);
  23. }
复制代码



显示

Esp32 C6 IIC使用u8g2成功点亮ssd1306图1
总结
    我个人理解的I2C就是根据数据线和时钟线的搭配来产生信息。起始位,然后1-7位是数据位。第八位是读写地址,然后一位就是ACK,接着就是数据,ACK停止位,如果是多个设备仍然是每个设备都会发送,只是从机根据主机如果发送的地址不对就会保持SDA为高电平不接受数据(不知道理解的是否有误,欢迎批评指正)

I2C中,想让SDA数据线发生变化,必须让scl=0,否则就是开关机信号。
      根据地址不同进行交互,很方便,所以I2C设备常常并联使用,比如一些大佬用它做手表获取温度又获取姿态还控制屏幕,等等。
在以上代码中u8g2库中帮助我们实现了I2C信息交互的流程。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail