070_I2C_1602LCD_๊ฐ๊ฒฐ๋ฐฐ์ ๐โจ
๋ฐฐ์ ์ ๊ธฐ์ ! PCF8574 I2C ์ด๋ํฐ ๋ชจ๋๋ก 1602 LCD๋ฅผ ๋จ 4๊ฐ๋ฅ(VCC, GND, SDA, SCL)์ผ๋ก ์๋ฒฝ ์ ์ดํ๊ธฐ
I2C Scanner ์ฃผ์ ๊ฒ์ ๊ธฐ๋ฒ,LiquidCrystal_I2C๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ๋ฒ, ์ค์๊ฐ ๋์งํธ ์ด์๊ณ ๊ตฌํ์ ์ค์ตํฉ๋๋ค.

- ๐ฅ๏ธ ๊ฐ์ ์ฌ๋ผ์ด๋: slides.md
1. ๐ง ๋๋ก์์ ๊ณ ๋ฏผ: โ๋ท๋ฉด์ ๊ฒ์ ๋ฐฐ๋ญ์ด ์๊ฒผ์ด์!โ
์ ํผ์ 16๊ฐ๋ก ๋ณต์กํ๋ LCD ํ๋ก ๋คํธ์ ์์ ๊ฒ์์ ๋ณด๋๊ฐ ๋ฌ๋ฆฐ ๋ชจ๋์ ๋ฐ๊ฒฌํ ๋๋ก์!
๐ง ๋๋ก์: โ์ง๋์ผ! ์ ๋ฒ 1602 LCD ๋ท๋ฉด์ ์ฌ ์์ ๊ธฐํ์ด ๋ฉ๋๋์ด ๋ถ์ด ์์ด! ํ์ด 16๊ฐ๊ฐ ์๋๋ผ 4๊ฐ๋ฐ์ ์ ํ์ด๋์ ์๋๋ฐ?!โ
๐ฑ ์ง๋: โ๋ง์! ๊ทธ๊ฒ ๋ฐ๋ก I2C ์ปจ๋ฒํฐ(PCF8574 ๋ฐฐ๋ญ ๋ณด๋) ๋๋ค! 16๊ฐ ์ ํธ๋ฅผ ์์์ ๋ฌถ์ด I2C 2์ (SDA, SCL)์ผ๋ก ๋ณํํด ์ฃผ๋ ๋๋ํ ํต์ญ์ฌ์ผ!โ
๐ถ ํ ํ : โ๋ฉ๋ฉ! (์ ์ด 4๊ฐ๋ฐ์ ์์ด์ ๊ฝ๊ธฐ ํจ์ฌ ํธํ๊ฒ ๋ค!)โ

[!NOTE] PCF8574 ์๊ฒฉ 8๋นํธ I/O ํ์ฅ๊ธฐ(Expander)
I2C ์ด๋ํฐ๋ I2C ๋ช ๋ น์ ๋ฐ์ 8๊ฐ์ ๋ณ๋ ฌ ์ถ๋ ฅ ํ์ผ๋ก ๋ณํํด ์ฃผ๋ PCF8574 ์นฉ์ ํ์ฌํ๊ณ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์๋์ด๋ ธ๋ ๋ณต์กํ ๋ณ๋ ฌ ํ์ ์ง์ ์ ์ดํ์ง ์๊ณ ์ค์ง I2C ํจํท๋ง ์ ์กํ๋ฉด ๋ฉ๋๋ค.
2. ๐ I2C ๋ฐฐ๋ญ(์ปจ๋ฒํฐ)์ ํ ๊ตฌ์กฐ ๋ฐ ๋ถํ ๊ตฌ์ฑ
๊ธฐ์กด 16๊ฐ์ ์ ์ ํ์ ์๋ฒฝํ ํก์ํ์ฌ ๋จ 4๊ฐ์ ์ปค๋ฅํฐ ํ์ผ๋ก ๋จ์ํํ์ต๋๋ค.

๐ 4๊ฐ ํ ์ฐ๊ฒฐํ ๋ฐ ๋ณด๋ ๊ธฐ๋ฅ
| ํ ๋ช ์นญ | ์๋์ด๋ ธ ์ฐ๊ฒฐ | ๊ธฐ๋ฅ ๋ฐ ํน์ง |
|---|---|---|
GND |
GND | ์ ์ ์ ์ง |
VCC |
5V | 5V ์์คํ ์ ์ |
SDA |
์๋ ๋ก๊ทธ A4 | ์ง๋ ฌ ๋ฐ์ดํฐ ํต์ ์ (Data) |
SCL |
์๋ ๋ก๊ทธ A5 | ์ง๋ ฌ ํด๋ก ๋๊ธฐํ์ (Clock) |
[!TIP] ๋ชจ๋ ๋ท๋ฉด์ ํ๋์ ๋ค๋ชจ ๊ฐ๋ณ์ ํญ(ํฌํ ์ ๋ฏธํฐ) ์ ๋ช ์ ์กฐ์ ์ฉ์ ๋๋ค. ๊ธ์๊ฐ ์ ๋ณด์ผ ๋๋ ์ผ์ ๋๋ผ์ด๋ฒ๋ก ์ด ์์ก์ด๋ฅผ ๋๋ ค ๋ง์ถฅ๋๋ค. ์ ํผ ํ(Jumper)์ ๋ฐฑ๋ผ์ดํธ ์ ์ ์ฐ๊ฒฐ์ฉ์ด๋ฏ๋ก ํญ์ ๊ฝํ ์์ด์ผ ํฉ๋๋ค.
3. ๐ ๏ธ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์นํ๊ธฐ
I2C LCD ๊ตฌ๋์ ์ํด ํ์ค I2C ํต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์ฉ ๋์คํ๋ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํจ๊ป ํ์ฉํฉ๋๋ค.

๐ ์ค์น ๋จ๊ณ ๊ฐ์ด๋
<Wire.h>: ์๋์ด๋ ธ IDE์ ํ์ค ๋ด์ฅ๋์ด ์์ด ๋ณ๋ ์ค์น๊ฐ ํ์ ์์ต๋๋ค.<LiquidCrystal_I2C.h>:- ์๋์ด๋ ธ IDE ์๋จ ๋ฉ๋ด: [์ค์ผ์น] โก๏ธ [๋ผ์ด๋ธ๋ฌ๋ฆฌ ํฌํจํ๊ธฐ] โก๏ธ [๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ด๋ฆฌโฆ]
- ๊ฒ์์ฐฝ์
LiquidCrystal I2C์ ๋ ฅ - โLiquidCrystal I2C by Frank de Brabanderโ ๋๋ Marco Schwartz ๋ฒ์ ํ์ธ ํ [์ค์น] ํด๋ฆญ!
4. ๐ ์ด๊ฐ๋จ 4์ ํ๋ก ์ฐ๊ฒฐ๋
๋ธ๋ ๋๋ณด๋ ์์ด ์-์(F-M) ์ ํผ์ 4๊ฐ๋ฅ๋ง์ผ๋ก ์๋์ด๋ ธ์ 1์ด ๋ง์ ์ง๊ฒฐํ ์ ์์ต๋๋ค.

- VCC (๋นจ๊ฐ ์ ) โก๏ธ ์๋์ด๋ ธ 5V
- GND (๊ฒ์ ์ ) โก๏ธ ์๋์ด๋ ธ GND
- SDA (์ด๋ก/ํ๋ ์ ) โก๏ธ ์๋์ด๋ ธ A4 ํ
- SCL (๋ ธ๋/์ฃผํฉ ์ ) โก๏ธ ์๋์ด๋ ธ A5 ํ
5. ๐ต๏ธโโ๏ธ I2C ์ฃผ์ ์๋ ๊ฒ์: I2C Scanner
LCD ๋ชจ๋๋ง๋ค ์ ์กฐ์ฌ์ ๋ฐ๋ผ ์ฃผ์๊ฐ 0x27 ๋๋ 0x3F๋ก ๋ค๋ฅผ ์ ์์ต๋๋ค. ์ฃผ์ ์ค์บ๋ ์ฝ๋๋ก ํ์คํ ์ฃผ์๋ฅผ ํ์ธํฉ๋๋ค.

#include <Wire.h>
void setup() {
Serial.begin(115200);
while (!Serial);
Wire.begin();
Serial.println("\n--- I2C ๊ธฐ๊ธฐ ๊ฒ์ ์์ ---");
byte count = 0;
for (byte address = 1; address < 127; address++) {
Wire.beginTransmission(address);
if (Wire.endTransmission() == 0) {
Serial.print("I2C ๊ธฐ๊ธฐ ๋ฐ๊ฒฌ! 16์ง์ ์ฃผ์: 0x");
if (address < 16) Serial.print("0");
Serial.println(address, HEX);
count++;
}
}
if (count == 0) Serial.println("์ฐ๊ฒฐ๋ I2C ๊ธฐ๊ธฐ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ๋ฐฐ์ ์ ํ์ธํ์ธ์!");
else Serial.println("๊ฒ์ ์๋ฃ!");
}
void loop() {}
6. ๐ ์ฒซ ์ธ์ฌ: โHello, Dorothy!โ ๋์ฐ๊ธฐ
๋ฐ๊ฒฌํ ์ฃผ์(์: 0x27)๋ฅผ ์ง์ ํ์ฌ LCD๋ฅผ ์ผ๊ณ ํ๋ฉด์ ์ธ์ฟ๋ง์ ์ถ๋ ฅํฉ๋๋ค.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// I2C ์ฃผ์ 0x27, 16์ด 2ํ LCD ๊ฐ์ฒด ์์ฑ
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init(); // LCD ๋ด๋ถ ์ ์ด๊ธฐ ์ด๊ธฐํ
lcd.backlight(); // ๋ฐฑ๋ผ์ดํธ LED ์ ๋ฑ!
// ์ฒซ ๋ฒ์งธ ์ค (0, 0)
lcd.setCursor(0, 0);
lcd.print("Hello, Dorothy!");
// ๋ ๋ฒ์งธ ์ค (0, 1)
lcd.setCursor(0, 1);
lcd.print("Jiny & Arduino");
}
void loop() {
// ํ๋ฉด ์ ์ง
}
7. โฑ๏ธ ์์ฉ ์ค์ต: 1์ด์ฉ ์ฌ๋ผ๊ฐ๋ ๋์งํธ ์ด์๊ณ
loop() ํจ์์์ 1์ด๋ง๋ค ๊ฒฝ๊ณผ ์๊ฐ์ ๊ฐฑ์ ํ๋ ๋์งํธ ์นด์ดํฐ ๋์คํ๋ ์ด์
๋๋ค.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int seconds = 0;
void setup() {
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Stopwatch Demo");
}
void loop() {
lcd.setCursor(0, 1);
lcd.print("Sec: ");
lcd.print(seconds);
lcd.print(" s "); // ์ด์ ๊ธด ์๋ฆฟ์๋ฅผ ๋ฎ์ด์ฐ๊ธฐ ์ํ ๊ณต๋ฐฑ ๋ฌธ์
delay(1000);
seconds++;
}
๐ ๋๋ก์์ ์ง๋์ ํต์ฌ ๊ฟํ! ๐
์ถํํฉ๋๋ค! ๋ฐฐ์ ๋ณต์ก์ฑ์ 75% ์ค์ด๊ณ I2C ํต์ ๊ธฐ๋ฐ์ ๊น๋ํ ๋์คํ๋ ์ด ์์คํ ์ ์์ฑํ์ต๋๋ค.

๐ ํต์ฌ ์์ฝ ์ฒดํฌ๋ฆฌ์คํธ
- ๋จ 4๊ฐ๋ฅ ์ง๊ฒฐ: VCC, GND, SDA(A4), SCL(A5)๋ก ๋ธ๋ ๋๋ณด๋ ์์ด ๊ฐ๊ฒฐํ๊ฒ ์ฐ๊ฒฐํ์ต๋๋ค.
- I2C ์ค์บ๋ ํ์ฉ:
0x27๋๋0x3F์ฃผ์๋ฅผ ์ฌ์ ์ ๊ฒ์ํ์ฌ ํต์ ์ค๋ฅ๋ฅผ ์๋ฐฉํ์ต๋๋ค. lcd.init()๊ณผlcd.backlight(): ์ด๊ธฐํ์ ๋ฐฑ๋ผ์ดํธ ์ ์ด ๋ฉ์๋๋ฅผ ๋ช ํํ ์์งํ์ต๋๋ค.
๐ง ๋๋ก์: โ์ฐ์! ์ ์ด 4๊ฐ๋ฐ์ ์ ๋๋๊น ํ๋ก๊ฐ ์ ๋ง ๊น๋ํ๊ณ ์๋ป!โ
๐ฑ ์ง๋: โํ๋ฅญํด! ๋ค์ ์๊ฐ์๋ ๊ธ์๊ฐ ์์ผ๋ก ์ค๋ฅด๋ฅต ์ ๊ดํ์ฒ๋ผ ํ๋ฌ๊ฐ๋ โLCD ์คํฌ๋กค ํจ๊ณผโ๋ฅผ ํจ๊ป ๊ตฌํํด ๋ณด์!โ