반응형
실제 아두이노 LCD 사용 하기
12C LCD 사용
1. 연결
- GND : GND
- VCC : 5V
- SDA : A4
- SCL : A5
[툴] 메뉴에서 보드, 포트 설정 확인후 테스트
2. 코딩
- 라이브러리 hd44780 를 사용
- #include <hd44780.h> #include <hd44780ioClass/hd44780_I2Cexp.h>
- I2C 통신을 위한 <Wire.h>도 포함
- 객체 생성 hd44780_I2Cexp lcd;
- setup() 에 lcd 크기를 설정 : lcd.begin(16,2);
- loop()에 문구 시작점 지정 : lcd.setCursor(0,0);
- 출력 : 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);
}
}
}
반응형
'IT Study > 개발 공부' 카테고리의 다른 글
빌드(Build)와 제킨스(Jenkins) 요약 - 출처 : 뷰티풀 프로그래밍 (0) | 2021.09.08 |
---|---|
GIT 참고자료 (0) | 2021.09.08 |
아두이노 사용법 02 - LCD (0) | 2021.05.07 |
아두이노 사용법 01 - 기본 사용법 (0) | 2021.05.07 |
Git 사용법 02 - config (0) | 2021.04.28 |