#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <U8g2lib.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
// 创建显示器对象
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); // -1 表示没有重置引脚
// 创建 U8g2 对象
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0);
const int a = 2;
const int b = 4;
const int c = 16;
const int d = 17;
const int e = 21;
const int f = 5; // 使用GPIO 5
const int g = 18; // 使用GPIO 18
const int dp = 19; // 小数点
void setup() {
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(dp, OUTPUT);
Wire.begin(13, 14); // 设置新的 SDA 和 SCL 引脚
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;); // 无限循环
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("你好,我是中国人!");
display.display();
}
void loop() {
for(int i = 0;i<5;i++){
displayNumber(i); // 显示数字3
delay(1000);
}
}
void displayNumber(int num) {
// 先将所有段熄灭
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
// 根据数字点亮相应的段
switch(num) {
case 0:
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
break;
case 1:
digitalWrite(b, LOW);
digitalWrite(c, LOW);
break;
case 2:
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(g, LOW);
break;
case 3:
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(g, LOW);
break;
case 4:
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
break;
// 其他数字...
}
}