LCD란?
- Liquid Crystal Display(액정 디스플레이)의 줄임말
- 보통은 1602(16칸 2줄)을 사용하지만, 2004(20칸 4줄)을 사용하기도 합니다.
- 아날로그핀을 이용하거나 12C전용 핀을 사용합니다.

+들어가기에 앞서....
LCD를 사용하기 위해서 꼭 필요한 헤더 파일이 있습니다. 바로 <LiquidCrystal_12C.h> 와 <wire.h>를 코드에 각각 추가해 주어야 합니다.
<회로도>

<코드>
#include <wire.h>
#include <LiquidCrystal_12C.h>
LiquidCrystal_12C lcd(0x27, 16,2);
void setup()
{
lcd.begin(); //lcd모듈 초기화
lcd.backlight(); //lcd백라이트 켜기
lcd.clear();//내용 삭제하기
}
void loop()
{
lcd.setCursor(0,0);//lcd커서 표현하기 --> 행(0), 열(0)
lcd.print("Hi, Nefus");//lcd화면 안의()내용을 출력하기
lcd.setCursor(0,1);
lcd.print("Nefus Focus");
}
lcd응용
<회로도>

<코드>
#include <wire.h>
#include <LiquidCrystal_12C.h>
LiquidCrystal_12C lcd(0x27, 16,2);
void setup()
{
lcd.begin(); //lcd모듈 초기화
lcd.backlight(); //lcd백라이트 켜기
lcd.clear();//내용 삭제하기
}
void loop()
{
lcd.setCursor(0,0);//lcd커서 표현하기 --> 행(0), 열(0)
lcd.print("Hi, Nefus");//lcd화면 안의()내용을 출력하기
lcd.setCursor(0,1);
lcd.print("Nefus Focus");
for(int position = 0 ; position < 16 ; position++){//position이 0~15라면 값을 하나씩 증가시킴
lcd.scrollDisplayRight(); //오른쪽으로 한칸씩 이동
delay(1000);
}
}
.
.
.
.
.
.
과제
<회로도>

<코드>
#include <LiquidCrystal_12C.h>
#include <Wire.h>
int bu = 2;
LiquidCrystal_12C lcd(0x27, 16,2);
void setup() {
Serial.begin(9600);//시리얼 통신 선언
lcd.begin(); //lcd모듈 초기화
lcd.backlight(); //lcd백라이트 켜기
lcd.clear();//내용 삭제하기
pinMode(bu,OUTPUT);
}
void loop() { //반복
int poten = analogRead(A0);//A0의 핀 읽기
int mapp = map(poten, 0, 1023, 0, 180); //poten의 값을 0~1023에서 0~180 으로 바꿈
delay(100);
if(poten <= 90){
lcd.setCursor(0,0);//lcd커서 표현하기 --> 행(0), 열(0)
lcd.print("Hi, Nefus");//lcd화면 안의()내용을 출력하기
lcd.setCursor(0,1);
lcd.print("Nefus Focus");
for(int position = 0 ; position < 16 ; position++){//position이 0~15라면 값을 하나씩 증가시킴
lcd.scrollDisplayRight(); //오른쪽으로 한칸씩 이동
delay(1000);
}
tone(bu, 659);
tone(bu, 698);
tone(bu, 784);
}
else{
lcd.setCursor(0,0);//lcd커서 표현하기 --> 행(0), 열(0)
lcd.print("Hi, Nefus");//lcd화면 안의()내용을 출력하기
lcd.setCursor(0,1);
lcd.print("Nefus Focus");
for(int position = 0 ; position < 16 ; position++){//position이 0~15라면 값을 하나씩 증가시킴
lcd.scrollDisplayLeft(); //오른쪽으로 한칸씩 이동
delay(1000);
}
tone(bu, 659);
tone(bu, 698);
tone(bu, 784);
}
}
.
.
.
안되서...ㅠ ( --> 왜 팅커캐드는 #include <LiquidCrystal_12C.h>가 없을까요?)
다른 과제로 할려했는데....

int led1 = 8;
int led2 = 9;
int led3 = 10;
int trig = 2;// 송신핀은 2번으로
int echo = 3;// 수신핀은 3번으로함
void setup()
{
Serial.begin(9600);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
}
void loop()
{
int data = 0;
int poten = analogRead(A0);
int mapp = map(poten, 0, 1023, 0, 180);
data = analogRead(A0);
Serial.println(data);
delay(500);
digitalWrite(trig, HIGH);
delay(10);
digitalWrite(trig, LOW);
float distance = (340*pulseIn(echo, HIGH) / 1000/2);
if(data<500){
digitalWrite(led1, HIGH);
delay(500);
digitalWrite(led1, LOW);
}
if(data<1000&&distance<=100){
digitalWrite(led2, HIGH);
digitalWrite(led1, HIGH);
delay(500);
digitalWrite(led2, LOW);
digitalWrite(led1, LOW);
}
if(data<1000&&distance<=100&&poten<=500){
digitalWrite(led3,HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led1, HIGH);
delay(500);
digitalWrite(led2, LOW);
digitalWrite(led1, LOW);
digitalWrite(led3, LOW);
}
}
진짜 찐막
<회로도>

<코드>
int led1 = 8;
int led2 = 9;
int trig = 2;// 송신핀은 2번으로
int echo = 3;// 수신핀은 3번으로함
void setup()
{
Serial.begin(9600);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
}
void loop()
{
int data = 0;
data = analogRead(A0);
Serial.println(data);
delay(500);
digitalWrite(trig, HIGH);
delay(10);
digitalWrite(trig, LOW);
float distance = (pulseIn(echo, HIGH)*34 / 1000/2);
if(data<50){
digitalWrite(led1, HIGH);
delay(500);
digitalWrite(led1, LOW);
}
if(data<100&&distance<=100){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
delay(500);
digitalWrite(led2, LOW);
digitalWrite(led1, LOW);
}
}