본문 바로가기

메이커 이야기/아두이노

[아두이노 LCD 타이머] 아두이노 LCD 화면 제어 _ EP5

반응형

◎ 아두이노 LCD 제어하기

아두이노를 사용하다보면 LCD를 자주 사용하게 되는데, LCD 관련 예제입니다~!

 

 

1. LCD 사용하기

 

 사용 부품

1) 아두이노 UNO 

2) LCD I2C(모듈)

 

 

○ 회로 연결

 

 

 

○ 적용 코드

 


#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup()
{
	lcd.begin();
	lcd.backlight();
	lcd.print("Hello, world!");
}

void loop()
{
  
}

 

 

○ 작동 사진

 

 

LCD 함수 정리

 

lcd.begin(); LCD를 사용을 시작
lcd.display(); LCD에 내용을 표시
lcd.noDisplay(); LCD에 내용을 숨김
lcd.setCursor(col,row); row, col의 좌표로 커서를 위치
lcd.cursor(); LCD에 커서를 표시
lcd.noCursor(); LCD에 커서를 숨김
lcd.home(); 커서의 위치를 0,0으로 이동
lcd.blink(); 커서를 깜빡임
lcd.noBlink(); 커서를 깜빡이지 않음
lcd.backlight(); LCD backlight을 킴
lcd.noBacklight(); LCD backlight를 끔
lcd.write(val); LCD 화면에 val 출력(아스키 코드 입력 시에는 아스키 코드에 해당하는 문자 출력)
lcd.print(val); LCD 화면에 val 출력
lcd.clear(); LCD 화면의 모든 내용 지움
lcd.scrollDisplayRight(); 내용을 우측으로 1칸 이동
lcd.scrollDisplayLeft(); 내용을 좌측으로 1칸 이동
lcd.autoscroll(); 내용을 자동으로 우에서 좌로 스크롤

<출처 : 코코아팹>

 

 

2. LCD 함수를 잘 사용하시면 편리합니다.

 

 사용 부품

1) 아두이노 UNO 

2) LCD I2C(모듈)

3) Button x 2

4) 가변저항

 

○ 회로 연결

 

○ 적용 코드

 

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup()
{
  lcd.begin();
  lcd.backlight();
  pinMode(2, INPUT_PULLUP);
  pinMode(4, INPUT_PULLUP);
  pinMode(3, OUTPUT);
  Serial.begin(9600);
}

unsigned long settime = 0;
unsigned long timenow = 0;
bool button_state = 1;  
bool button_hold = false;
bool pre_button_state = 1;
unsigned int long button_delay = 0;
bool Led_state = LOW;
unsigned long pretime = 0;

void loop() {
  button();
  int select = map(analogRead(A0),0,1024,0,60);
  lcd.setCursor(0,0);
  lcd.print("Time set : ");
  lcd.print(select);
  lcd.print("min");
  lcd.print("          ");

  while(Led_state == 1){
    digitalWrite(3,LOW);
    settime = select * 60000;
    timenow = millis();
    if(digitalRead(4) ==LOW){
      Led_state =0;
      pretime = timenow;
      break;
    }
    if(timenow - pretime > settime){
       digitalWrite(3,HIGH);
       pretime = timenow;
       Led_state =0;
       pretime = timenow;
       Serial.println("break");
       break;
    }
  }
  
  button_state = digitalRead(2);
  if (button_hold == false) {
    if (button_state != pre_button_state) {
      button_hold = true;
      button_delay = millis();
      if (button_state == 0) {
        Led_state = !Led_state;
      }
    pre_button_state = button_state;
    }
  }
}

void button() {
  if (button_hold == true) {
    if (millis() - button_delay >= 100) {
      button_hold = false;
    }
  }
}

- 코드를 정리해야되는데...

귀찮아서...그만.. ㅠㅠ 

 

 

○ 작동 영상

 

 

 

재미있는 프로젝트를 한번 만들어 보세요 ^^

 

 

반응형