问题:在使用arduino环境下 u8g2 库时,我们会遇到 显示变量 报错
开发环境:Arduino (1.8.10) 或 VScode 环境下 PlatformIO 插件
硬件:ESP8266 或 Arduino UNO
接线:
1.ESP8266
ESP8266 | NODEMCU | |
gpio5 | D1 | SCL |
gpio4 | D2 | SDA |
2.Arduino UNO
SDA,SCL是模拟口 A4 和 A5
所用开发库:<U8g2> 2.25.10
错误用法:
#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
uint8_t a = 1;
void setup(void)
{
u8g2.begin();
}
void loop(void)
{
//*************************************第一种***********************************
u8g2.firstPage();
do
{
u8g2.setFont(u8g2_font_wqy16_t_gb2312a);
u8g2.drawStr(109,11,a);//<--这里错误
}
while (u8g2.nextPage());
//******************************************************************************
delay(2000);
//*************************************第二种***********************************
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_wqy16_t_gb2312a);
u8g2.drawStr(109,11,a);//<--这里错误
u8g2.sendBuffer();
//*******************************************************************************
}
结果便是编译不通过:
//*******************************************************************
正确方式:
#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
uint8_t a = 123;
uint16_t b = 456;
void setup(void)
{
u8g2.begin();
}
void loop(void)
{
//*************************************第一种***********************************
u8g2.firstPage();
do
{
u8g2.setFont(u8g2_font_wqy16_t_gb2312a);
u8g2.setCursor(0,16);
u8g2.print(a);
}
while (u8g2.nextPage());
//******************************************************************************
delay(2000);
//*************************************第二种***********************************
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_wqy16_t_gb2312a);
u8g2.setCursor(0,32);
u8g2.print(b);
u8g2.sendBuffer();
//*******************************************************************************
delay(2000);
}
上传成功!!!
测试效果较为简单,自行实验查看~