腿毛利小五郎 发表于 2024-4-30 23:51:50

Esp32 C6 IIC使用u8g2成功点亮ssd1306


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

所需材料一、BeetleESP32 C6开发板二、杜邦线若干
硬件连接

typeC线接电脑ssd1306 IIC引脚与主板相接如下:      VCC->3V3      SDA->19      CLK->20GND->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信息交互的流程。

页: [1]
查看完整版本: Esp32 C6 IIC使用u8g2成功点亮ssd1306