我用esp32-c3想弄个电流表,电流电压芯片用的ina3221,屏幕用的0.96寸的oled屏幕。
屏幕提示驱动用SSD1306,我选择了Adafruit_SSD1306,怎么也点不亮,后来试了用u8g2,很轻松点亮。但接上ina3221后面临i2c多从设备问题,反正症状就是反复重启。
后来查了资料,可以是因为esp32只有有一个i2c控制器,但u8g2没法复用wire,因此又回到了Adafruit_SSD1306。
看看官方样例文件
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
// The pins for I2C are defined by the Wire-library.
// On an arduino UNO: A4(SDA), A5(SCL)
// On an arduino MEGA 2560: 20(SDA), 21(SCL)
// On an arduino LEONARDO: 2(SDA), 3(SCL), ...
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3D ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
样例提醒 0x3d是12864,我的是12864,结果利用i2cdetect扫描了一下,地址应该是0x3c,严重误导了我。