前言 Beetle ESP32 C6体积小,资源丰富。本文将探索实现Beetle ESP32 C6的IIC功能。驱动点亮1306
所需材料 一、BeetleESP32 C6开发板 二、杜邦线若干
硬件连接
typeC线接电脑 ssd1306 IIC引脚与主板相接如下: VCC->3V3 SDA->19 CLK->20 GND->GND
代码
- #include <Arduino.h>
- #include <U8g2lib.h>
- #include "font.h"
-
- #ifdef U8X8_HAVE_HW_I2C
- #include <Wire.h>
- #endif
-
- 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
-
-
- //128*64
- void setup(void) {
- u8g2.begin();
- u8g2.enableUTF8Print(); // enable UTF8 support for the Arduino print() function
-
- }
-
- void loop(void) {
- u8g2.setFont(u8g2_font_unifont_t_chinese2); // use chinese2 for all the glyphs of "你好世界"
-
- u8g2.setFontDirection(0);
- u8g2.clearBuffer();
- u8g2.setCursor(0, 15);
- u8g2.print("Hello World!");
- u8g2.setCursor(0, 40);
- u8g2.print("你好世界"); // Chinese "Hello World"
- u8g2.sendBuffer();
- delay(1000);
- }
复制代码
显示

总结
我个人理解的I2C就是根据数据线和时钟线的搭配来产生信息。起始位,然后1-7位是数据位。第八位是读写地址,然后一位就是ACK,接着就是数据,ACK停止位,如果是多个设备仍然是每个设备都会发送,只是从机根据主机如果发送的地址不对就会保持SDA为高电平不接受数据(不知道理解的是否有误,欢迎批评指正) I2C中,想让SDA数据线发生变化,必须让scl=0,否则就是开关机信号。
根据地址不同进行交互,很方便,所以I2C设备常常并联使用,比如一些大佬用它做手表获取温度又获取姿态还控制屏幕,等等。
在以上代码中u8g2库中帮助我们实现了I2C信息交互的流程。
|