这里用了两个esp8266设备,分别是NodeMCU和Wemos D1 mini两个模块,Arduino设备是Arduino UNO。设备如下图示。
三个设备的引脚说明如图,后面连接屏幕要用到。
显示设备Lcd1602,能显示两行,每行16个字,后面焊接了IIC接口转接模块(PCA8574),如图。
IIC接口有GND、VCC、SDA、SCL三个接口,分别根据上面的引脚图,找到想要的引脚连接(NodeMcu的SCL与SDA对应引脚D1 D2),由于这个屏幕是5v工作电压,VCC要接5V,NodeMCU没有标识5V引脚,要接Vin。
下面是编写代码,都用Arduino IDE进行,要安装LiquidCrystal I2C库,代码如下。
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// I2C地址, 一般为0x3F, 0x20或0x27
LiquidCrystal_I2C lcd(0x27, 16, 2);
int i;
char str[16];
void setup(){
lcd.init();//初始化显示屏
lcd.backlight(); // 打开背光
i = 0;
strcpy (str,"#");
}
void loop(){
lcd.setCursor(0, 0);//设置起始坐标
lcd.print("Hello World!");
lcd.setCursor(0, 1);
if(i<16){
i++;
lcd.print(str);
strcat(str,"#");
}else{
strcpy(str,"#");
i=0;
lcd.clear();//清屏
}
delay(500);
}
I2C地址还可以通过写入arduino一段代码,通过串口监视器查询到。
// I2C Scanner
// Written by Nick Gammon
// Date: 20th April 2011
#include <Wire.h>
void setup() {
Serial.begin (115200); // Leonardo: wait for serial port to connect
while (!Serial) { }
Serial.println ();
Serial.println ("I2C scanner. Scanning ...");
byte count = 0;
Wire.begin();
for (byte i = 8; i < 120; i++) {
Wire.beginTransmission (i);
if (Wire.endTransmission () == 0) {
Serial.print ("Found address: ");
Serial.print (i, DEC);
Serial.print (" (0x");
Serial.print (i, HEX);
Serial.println (")");
count++;
delay (1); // maybe unneeded?
} // end of good response
} // end of for loop
Serial.println ("Done.");
Serial.print ("Found ");
Serial.print (count, DEC);
Serial.println (" device(s).");
} // end of setup
void loop() {}
效果如图。