외우지말고 이해하라.

외우는 것 보단 이해해서 내것으로 만들어 활용하기

IT Study/개발 공부

아두이노 사용법 03 - LCD 실습

hyg4196 2021. 5. 10. 10:18
반응형

실제 아두이노 LCD 사용 하기

 

12C LCD 사용

 

1. 연결 

 

- GND : GND

- VCC : 5V

- SDA : A4 

- SCL : A5

 

[툴] 메뉴에서 보드, 포트 설정 확인후 테스트

 

 

2. 코딩

  1. 라이브러리 hd44780 를 사용
  2. #include <hd44780.h>  #include <hd44780ioClass/hd44780_I2Cexp.h>
  3. I2C 통신을 위한 <Wire.h>도 포함
  4. 객체 생성 hd44780_I2Cexp lcd; 
  5. setup() 에 lcd 크기를 설정 : lcd.begin(16,2);
  6. loop()에 문구 시작점 지정 : lcd.setCursor(0,0); 
  7. 출력 : lcd.print("Hello");

 

 

 

초음파 응용 코드

 

#include <Wire.h>

#include <hd44780.h>
#include <hd44780ioClass/hd44780_I2Cexp.h>

int trig = 2;
int echo = 1;

hd44780_I2Cexp lcd;

void setup() {
  lcd.begin(16,2);
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
}

void loop() {
  digitalWrite(trig, HIGH);
  delay(10);
  digitalWrite(trig, LOW);
  float duration = pulseIn(echo, HIGH);
  float dis = ((float)(340*duration) / 10000) / 2;

  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print(duration);
  lcd.setCursor(1,1);
  lcd.print(dis);
  delay(200);
}

trig, HIGH = 초음파 ON

trig, LOW = 초음파 OFF

dis = 초음파가 돌아오는 거리 값 (cm)

 

 

센서 거리에 따라 경고문을 보내는 코드

#include <Wire.h>

#include <hd44780.h>
#include <hd44780ioClass/hd44780_I2Cexp.h>

int trig = 2;
int echo = 1;

hd44780_I2Cexp lcd;

void setup() {
  lcd.begin(16,2);
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
}

void loop() {
  digitalWrite(trig, HIGH);
  delay(10);
  digitalWrite(trig, LOW);
  float duration = pulseIn(echo, HIGH);
  float dis = ((float)(340*duration) / 10000) / 2;

  lcd.clear();
  if(dis<5){
    lcd.setCursor(2,0);
    lcd.print("!! Warning !!");
    lcd.setCursor(0,1);
    lcd.print("!! within 5cm !!");
    delay(200);
  }else if(dis<10){
    lcd.setCursor(0,0);
    lcd.print("There is an item");
    lcd.setCursor(3,1);
    lcd.print("within 10cm.");
    delay(200);
  }else if(dis>10){
    lcd.setCursor(2,0);
    lcd.print("no item");
    lcd.setCursor(5,1);
    lcd.print("within 10cm.");
    delay(200);
  }
}

 

 

센서 거리마다 경고 출력 + 버튼 누르고 있을시 현재 거리를 출력

 

#include <Wire.h>

#include <hd44780.h>
#include <hd44780ioClass/hd44780_I2Cexp.h>

int trig = 2;
int echo = 1;

hd44780_I2Cexp lcd;

void setup() {
  lcd.begin(16,2);
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
}

void loop() {
  digitalWrite(trig, HIGH);
  delay(10);
  digitalWrite(trig, LOW);
  float duration = pulseIn(echo, HIGH);
  float dis = ((float)(340*duration) / 10000) / 2;

  float buttonDis = -1;
  int val = digitalRead(3);
  if(val == LOW){
    buttonDis = dis;
    delay(250);
  }
      lcd.clear();
  if(buttonDis > 0){
    if(buttonDis > 300){
      lcd.setCursor(0,0);
      lcd.print("Distance measurement error");
      lcd.setCursor(0,1);
      lcd.print("please check it");
      delay(200);
    }else{
      lcd.setCursor(0,0);
      lcd.print("Distance : ");
      lcd.setCursor(8,1);
      lcd.print(dis);
      lcd.print("cm");
      delay(200);  
    }
  }else{
    if(dis<5){
      lcd.setCursor(2,0);
      lcd.print("!! Warning !!");
      lcd.setCursor(0,1);
      lcd.print("!! within 5cm !!");
      delay(200);
    }else if(dis<10){
      lcd.setCursor(0,0);
      lcd.print("There is an item");
      lcd.setCursor(3,1);
      lcd.print("within 10cm.");
      delay(200);
    }else if(dis>10){
      lcd.setCursor(2,0);
      lcd.print("no item");
      lcd.setCursor(5,1);
      lcd.print("within 10cm.");
      delay(200);
    }
  }
}

 

반응형