LCD16X2 아두이노 실드를 이용해 실시간으로 PMS7003 미세먼지 센서의 측정값을 화면에 표시할 수 있다. [모두의 아두이노 환경 센서] 책에서 설명하지 않았지만, LCD16X2 키패드 실드를 이용해 실시간으로 측정이 가능하고 센서 응용 동작을 구성할 수 있다.
목차
PMS7003 아두이노 센서와 LCD16X2 쉴드 활용
LCD16X2 아두이노 쉴드란?
Arduino 호환 보드 용 LCD 키패드 실드이다. 아두이노 호환 보드 용 LCD 키패드 실드이다.
HD44780 병렬 인터페이스 칩셋과 4 비트 Arduino LCD 라이브러리를 사용한 16 행 2 열의 흰색 문자와 파란색 백라이트의 LCD 디스플레이이다. 키패드 구성은 select, up, right, down, left로 되어 있다.
아두이노 LCD16X2 키패드 실드 샘플
키패드의 입력을 받을 수 있는 샘플 코드는 다음과 같다.
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
#define BTN_RIGHT 0
#define BTN_UP 1
#define BTN_DOWN 2
#define BTN_LEFT 3
#define BTN_SELECT 4
#define BTN_NONE 5
int adc_key_in = 0;
void setup()
{
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("LCD key Shield");
}
void loop()
{
int lcd_key = read_LCD_buttons();
display_LCD(lcd_key);
delay(200);
}
int read_LCD_buttons()
{
adc_key_in = analogRead(0);
if (adc_key_in > 1000) return BTN_NONE;
if (adc_key_in < 50) return BTN_RIGHT; // 0
if (adc_key_in < 195) return BTN_UP; // 99
if (adc_key_in < 380) return BTN_DOWN; // 256
if (adc_key_in < 555) return BTN_LEFT; // 409
if (adc_key_in < 790) return BTN_SELECT; // 639
return BTN_NONE;
}
void display_LCD(int lcd_key) {
lcd.setCursor(0, 1);
if (lcd_key == BTN_RIGHT) lcd.print("RIGHT ");
else if (lcd_key == BTN_LEFT) lcd.print("LEFT ");
else if (lcd_key == BTN_UP) lcd.print("UP ");
else if (lcd_key == BTN_DOWN) lcd.print("DOWN ");
else if (lcd_key == BTN_SELECT) lcd.print("SELECT");
else if (lcd_key == BTN_NONE) lcd.print("NONE ");
lcd.setCursor(10, 1);
clearLCD();
lcd.print(adc_key_in);
}
void clearLCD() {
int i = 0;
int digit = 0;
if (adc_key_in > 999) digit = 4;
else if (adc_key_in > 99) digit = 3;
else if (adc_key_in > 9) digit = 2;
else digit = 1;
for (i = 4; i > digit; i--) lcd.print(" ");
}
[Hello World] 출력 코드
lcd 키패드에 "Hello World"를 출력하는 코드는 다음과 같다.
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
void setup()
{
lcd.begin(16, 2);
}
void loop()
{
lcd.setCursor(0, 0);
lcd.print("LCDkeyShield");
lcd.setCursor(0, 1);
lcd.print("Hello,World!");
}
아두이노 LCD 16X2 쉴드 구입하기
다음과 같이 아두이노 LCD16X2 키패드 실드는 알리익스프레스, 네이버 쇼핑몰, 아마존 등에서 센서를 구입할 수 있다.
[알리익스프레스]
[네이버 쇼핑]
PMS7003 LCD 키패드 쉴드 연결하기(UART)
PMS7003 센서는 라이브러리를 사용하여 간편하게 동작 확인을 할 수 있다.
PMS7003 LCD 키패드 쉴드 소프트웨어 코딩
PMS7003 센서는 코드는 다음과 같다.
/*
PMS7003 Sensor
@ 2018.07.10
@ author STEAMEDU123 <steamedu123@gmail.com>
*/
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
SoftwareSerial pmsSerial(2, 1);
void setup() {
lcd.begin(16, 2);
pmsSerial.begin(9600);
lcd.setCursor(0, 0);
lcd.print("PMS7003");
}
void loop() {
pms7003_read();
}
//------------------------------------------------------------------
void pms7003_read() {
int chksum = 0;
int data = 32;
unsigned char pms[data] = {0,};
if (pmsSerial.available() >= data) {
for (int i = 0; i < data ; i++) {
pms[i] = pmsSerial.read();
if (i < 30) {
chksum = chksum + pms[i];
}
}
if (!checkData(pms, chksum)) {
return;
}
displayLCD(pms);
}
}
boolean checkData(unsigned char pms[], int chksum) {
if (pms[30] != (unsigned char)(chksum >> 8)
|| pms[31] != (unsigned char)(chksum) ) {
return false;
}
if (pms[0] != 0x42 || pms[1] != 0x4d ) {
return false;
}
return true;
}
void displayLCD(unsigned char pms[]) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("1.0:");
lcd.print(pms[10]);
lcd.print(pms[11]);
// lcd.print(" ug/m3:");
lcd.print(" 2.5:");
lcd.print(pms[12]);
lcd.print(pms[13]);
// lcd.print(" ug/m3:");
lcd.setCursor(0, 1);
lcd.print("10:");
lcd.print(pms[14]);
lcd.print(pms[15]);
//lcd.print(" ug/m3");
}
PMS7003 LCD 키패드 동작 확인
PMS7003 센서는 라이브러리를 사용하여 간편하게 동작 확인을 할 수 있다.
------------------------------------------------------
개발환경 : WINDOWS 10
아두이노 IDE : 1.8.13
------------------------------------------------------
01 라이브러리 복사
libraries\Steamedu123_Sensor-master 폴더는 아래 폴더에 복사
* 아두이노 설치 후 자동으로 생기는 폴더
C:\Users\s\Documents\Arduino\libraries
02 *. ino 파일 실행
- 아두이노와 PC 연결
- 아두이노 IDE 실행
- 메뉴 → 툴 → 보드:아두이노 UNO 확인
- 메뉴 → 스케치 → 확인/컴파일
03 컴파일 확인
스케치>확인/컴파일(CTRL+R) 를 선택해서 컴파일을 진행한다.
04 아두이노 우노 업로드
컴파일이 이상없이 완료되면 스케치>업로드(CTRL+U) 를 선택해서 컴파일 파일을 업로드 한다.
05 동작 확인
PMS7003 미세먼지 + LCD 동작 확인 동영상
LCD16X2 아두이노 실드를 이용해 실시간으로 PMS7003 미세먼지 센서의 측정값을 화면에 표시할 수 있다.
+ 이 글도 읽어보세요.
모두의 아두이노 환경 센서 책
[모두의 아두이노 환경 센서] 책은 예스24, 인터넷 교보문고, 알라딘, 영풍문고, 반디 앤 루니스 등에서 구입할 수 있다. 이 책에서는 PMS7003, GP2Y1010AU0F, PPD42NS, SDS011 미세먼지 센서, DHT22 온습도 센서, MH-Z19B 이산화탄소 센서, ZE08-CH2O 포름알데히드 센서, CCS811 총휘발성유기화합물 TVOC, GDK101 방사선(감마선) 센서, MQ-131 오존(O3) 센서, MQ-7 일산화탄소, MICS-4514 이산화질소 센서, MICS-6814 암모니아 센서, DGS-SO2 아황산가스(SO2) 센서, BME280 기압 센서, GUVA-S12SD 자외선(UV) 센서, MD0550 기류 센서, QS-FS01 풍속 센서(Wind speed) 를 사용한다.
'모두의 아두이노 환경 센서 > 2장 미세먼지 측정 센서' 카테고리의 다른 글
SDS011 미세먼지 아두이노 센서 - PC 프로그램 동작 확인 (0) | 2021.05.11 |
---|---|
미세먼지 (PM particulate matter) 간이 측정기 (0) | 2021.05.04 |
PPD42NS 미세먼지 아두이노 센서 - LCD16X2 동작 확인 (0) | 2021.03.22 |
GP2Y1010AU0F 미세먼지 - 납땜용 센서 연결도 (0) | 2021.03.22 |
PMS7003 미세먼지 아두이노 센서 -테스트 보드(SY-PMS0001) (0) | 2021.03.21 |
PMS7003 미세먼지 아두이노 센서 - PC 동작 확인(realterm) (0) | 2021.03.21 |
C205 SDS011 미세먼지 아두이노 센서 [모두의 아두이노 환경 센서] (0) | 2021.03.15 |
C203 GP2Y1010AU0F 미세먼지 아두이노 센서 [모두의 아두이노 환경 센서] (0) | 2021.03.15 |
댓글