스마트 디바이스 실습 5.2주차
ESP32 LCD 주소 찾기
한세대학교 컴퓨터공학과 22학번 김선영
한세대학교 컴퓨터공학과 22학번 김선영
준비물 : LCD, ESP32, 브래드보드, 점퍼 4개
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
// set the LCD number of columns and rows
int lcdColumns = 16;
int lcdRows = 2;
// LCD 주소, 열 및 행 수 설정
// 표시 주소를 모를 경우 I2C 스캐너 스케치를 실행합니다
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);
void setup()
{
Wire.begin();
Serial.begin(9600);
while (!Serial);
Serial.println("\nI2C Scanner");
// initialize LCD
lcd.init();
// turn on LCD backlight
lcd.backlight();
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
lcd.print("Scanning...");
delay(1000);
lcd.clear();
// lcd setCursor
// set cursor to first column, first row
lcd.setCursor(0, 0);
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
for(address = 1; address < 127; address++ )
{
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("I2C device found at address 0x");
lcd.setCursor(0,1);
lcd.print("0x");
if (address<16){
Serial.print("0");
lcd.print("0");
}
Serial.print(address,HEX);
Serial.println(" !");
lcd.print(address,HEX);
delay(2000);
lcd.clear();
nDevices++;
}
else if (error==4)
{
Serial.print("Unknow error at address 0x");
lcd.setCursor(0,1);
lcd.print("0x");
if (address<16) {
Serial.print("0");
lcd.print("0");
}
Serial.println(address,HEX);
lcd.print(address,HEX);
delay(2000);
lcd.clear();
}
}
}
- I2C 통신을 이용하여 연결된 모든 장치들의 주소를 스캔할 수 있음 -> 프로젝트를 구성하거나 문제 해결
- LiquidCrystal_I2C 라이브러리를 사용하여 I2C 통신을 이용하여 LCD 화면에 출력하는 방법을 배움 (I2C 통신과 LCD 화면 출력에 대한 이해)