본문 바로가기

프로그래밍/아두이노[Arduino]&라즈베리파이[Raspberry Pi]

[아두이노] 수위센서[Water sensor]모듈을 사용하여 LCD에 센서값을 표시하기 + LED 제어



안녕하세요 오늘은 수위센서 모듈(Water sensor module)과 LCD(I2C LCD)에 대해서 알아보도록 하겠습니다.

 


간단소개

 

 

1. 수위 센서로 종이컵의 물의 수위를 측정

   (테스트하기 위해 임의적으로 움직여 주었습니다.)
2. 수위 센서에서 임의로 정한 값을 넘으면 LED에 점등 상태로 변경
3. LCD에는 수위센서에서 측정한 값을 지속적으로 표시

 

 

 

 

 

 

핵심부품

수위센서 모듈(Water Sensor Module)


작동 전압: 5V
인터페이스: Analog
감지 폭: 40mm * 16mm
작동온도: 10℃ ~ 30℃
크기: 65mm * 20mm * 8mm
출력 전압 신호: 0~ 4.2V



 

I2C LCD

작동 전압: 2.5V~ 6V
I2C 프로토콜 지원
I2C 주소값: 0x27
기존의 핀 대신 4개의 핀으로 제어가 가능




부품 목록

 

 

 

브레드보드

 


회로도

 


소스코드


라이브러리 설치


스케치 - 라이브러리 포함하기 - 라이브러리 관리

 

 


LiquidCrystal를 검색하여 설치

 

 

 

// I2C LCD를 쉽게 제어하기 위한 라이브러리를 추가
#include <LiquidCrystal_I2C.h>

// 16X2 크기의 LCD 객체를 생성합니다.
// 만약 LCD 화면이 나오지 않으면 0x27 대신 0x3F를 넣어주세요.
LiquidCrystal_I2C lcd(0x27, 16, 2);

int analogPin = 0;    // 수위감지센서 analog in A0 연결 선언
int led = 13;         // LED 디지털 13번 포트 연결 선언
int data = 0;         // 센서값의 변수 연결 선언


void setup(){
  pinMode(led, OUTPUT);         // 디지털 13번 포트를 LED OUTPUT 으로 설정
  Serial.begin (9600);          // 시리얼모니터 설정
  lcd.init();                   // LCD를 초기화 합니다.
  lcd.backlight();              // LCD의 백라이트를 켜줍니다.
}


void loop(){
  // analogPin 의 변화값(전류값)을 읽음
  int data = analogRead(analogPin);   

  // 센서가 값을 읽지 못하는 경우 에러 확인을 위한 처리(시리얼 모니터에 표시)
  if(isnan(data)){
    Serial.println("Failed to read from Water sensor!");
  }
  else if(data > 300){           // data 값이 300이 넘으면 (전류가 300이 넘으면)                               
      digitalWrite(led, HIGH);   // LED ON
  }
  else{                          // data 값이 300이하면 (전류가 300이하면)
      digitalWrite(led, LOW);    // LED OFF
  }
  show(data);                    //show() 함수 호출, 매개 변수로 data 값을 넘겨줌. 
  delay (500);                   //지연 0.5초
}

void show(int val){
  // 센서값을 시리얼 모니터에 출력
  Serial.println((int)val);
 
  // LCD에 출력할 메세지를 생성
  String text = "Water Level";

  // 첫번째 줄, 첫번째 칸에 text 출력
  lcd.setCursor(0, 0);
  lcd.print(text);
 
  // 두번째 줄, 첫번째 칸부터 출력
  lcd.setCursor(0, 1);
  lcd.print(val);
}


구현 영상

 

[아두이노] 수위센서[Water sensor]모듈을 사용하여 LCD에 센서값을 표시하기 + LED 제어

 


아래처럼 시리얼 모니터를 확인하시면 수위센서 위치를 변경함에 따라서 측정된 값이 표시됩니다.

 

 

이상입니다 감사합니다.