준비물 : 준비물 : IIC/I2C LCD1602(HD44780 호환), 수위센서, RGB LED스케치 코드
/* Include the SPI/IIC Library */
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
/* Initialise the LiquidCrystal library. The default address is 0x27 and this is a 16x2 line display */
LiquidCrystal_I2C lcd(0x27,16,2);
int preState;
int nowState;
void setup()
{
preState = 0;
nowState = 0;
Serial.begin(9600);
/* LCD모듈을 초기화 한다. */
lcd.init();
pinMode(3, OUTPUT); // Red
pinMode(5, OUTPUT); // Green
pinMode(7, OUTPUT); // Blue
digitalWrite(3, HIGH); // Red Off
digitalWrite(5, HIGH); // Green Off
digitalWrite(7, HIGH); // Blue Off
}
void loop()
{
int level = analogRead(A0); // 아날로그0 에 연결한 수위센서로부터 값을 읽어온다.
Serial.print("Rainfall : "); // 시리얼 모니터에 측정값을 출력한다.
Serial.println(level);
/* LCD백라이트를 켠다. */
lcd.backlight();
/* LCD내용을 출력한다. */
lcd.setCursor(0,0);
lcd.print("Rain Gauge");
lcd.setCursor(0,1);
lcd.print("Rain: ");
lcd.print(preState);
lcd.print("->");
lcd.print(level);
nowState = level;
if(preState < nowState)
{
Serial.println("Rainfall +");
digitalWrite(3, LOW); // Red On
digitalWrite(5, HIGH); // Green Off
digitalWrite(7, HIGH); // Blue Off
}
else if(preState > nowState)
{
Serial.println("Rainfall -");
digitalWrite(3, HIGH); // Red On
digitalWrite(5, LOW); // Green Off
digitalWrite(7, HIGH); // Blue Off
}
else if(preState == nowState)
{
Serial.println("Rainfall ==");
digitalWrite(3, HIGH); // Red On
digitalWrite(5, HIGH); // Green Off
digitalWrite(7, LOW); // Blue On
}
preState = nowState;
// 지연시간
delay(500);
lcd.init();
}
기본 회로도
스케치 코드 분석
수위센서를 아날로그1번에 연결한다.
RGB LED를 PWD 3번-Red, 5번-Green, 7번-Blue에 각각 연결을 하고 GND에 연결하는 한 가닥에는 저항을 하나 연결한다. 수위센서의 내용을 읽어와 LCD에 출력을 하고, 이전값과 비교하여 출력할 LED를 결정한다.
회로 만들기
수위 센서를 연결한다. frizing에서 수위센서를 찾을수가 없어서 비슷한 모양으로 골랐다. 가장 오른쪽을 아날로그0번에 연결한다.
RGB LED를 연결한다. GND는 수위센서와 공유한다.
LCD I2C모듈을 연결한다. 이전 글을 참고해서 연결하면 된다. 수위 모듈에서 입력받은 값을 LCD모듈에서 출력한다.
수위가 증가하면 빨간불, 감소하면 초록불, 변하지 않으면 파란불이 켜진다. 위 사진에서는 수위가 변하지 않았기 때문에 파란불이 켜졌다.
아래 동영상에서 분무기를 이용하여 컵의 아래쪽에 물을 흘려내려 보내니, LCD에 표시되는 값이 증가하는 것을 볼 수 있다. 물뿌림을 중단하면 숫자값이 변화되지 않다가 작게나마 감소하는 것을 볼 수 있다.
댓글 쓰기