ESP8266驱动oled输出字符

本文介绍如何使用ESP8266配合0.96英寸OLED显示屏,通过I2C连接进行数据交互,并利用Blinker库实现自动配网和用户输入功能。教程包括库安装、代码示例和配置步骤,适合初学者入门物联网项目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先上图

连线
我的oled是0.96四针的
vcc -vcc
gnd -gnd
(下面的D1、D2根据自己的esp8266设置就行,只要是GPIO口就行)
sda-D1
scl-D2

安装库u8g2

代码

#include <Arduino.h>
#include <U8g2lib.h>
#define BLINKER_PRINT Serial
#define BLINKER_WIFI

#include <Blinker.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
#include<string.h>

//可能要修改
#define SDA 5 //我的SDA连的是D1,通过上面的图可知我的D1对应GPI05,D2对应GPI04
#define SCL 4

char auth[] = ""; //设备密钥
char ssid[] = ""; //WIFI名称(只能接收2.4G信号)
char pswd[] = ""; //WIFI密码

char str[21] = "None, please input";

//如果是和我一样的oled屏幕此处就不用改,否则请修改(非常重要)
//具体请参考
//https://blog.youkuaiyun.com/dpjcn1990/article/details/92831760
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);

BlinkerButton Button1("btn-abc"); //不用管

void button1_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}

void dataRead(const String & data)
{
    Serial.print(data);

    Serial.print("\n");
    int len=0;
    memset(str,'\0',strlen(str));
    while(data[len]!='\0'){
      len++;
    }
    if(len<=21){
      for(int i=0;i<len;i++){
        str[i]=data[i];
      }
    }else{
      strcpy(str, "Too Long");
    }
    Serial.print(len);
}
void setup() {
  // put your setup code here, to run once:
    u8g2.begin();
    Serial.begin(115200);

    #if defined(BLINKER_PRINT)
        BLINKER_DEBUG.stream(BLINKER_PRINT);
    #endif
    
    // 初始化有LED的IO
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, HIGH);
    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);
    Button1.attach(button1_callback);
}

void loop() {
  u8g2.clearBuffer();          // clear the internal memory
  u8g2.setFont(u8g2_font_ncenB08_tr); // choose a suitable font
  u8g2.drawStr(0,15,str);  // write something to the internal memory
  u8g2.sendBuffer();          // transfer internal memory to the display
  delay(1000);  
  // put your main code here, to run repeatedly:
  Blinker.run();

}

最后
在blinker APP添加输入框,也可与自动配网结合起来详见我的另一篇文章
1、esp8266实现自动配网+小爱语音点灯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值