안녕하세요 에듀이노 개발팀입니다.
외부전원 공급을 한다음 테스트를 진행해주시기 바랍니다.
추가적으로 lcd.clear(); 를 이용해 주기적으로 화면을 지워줘야 최적화가 됩니다.
두가지 방법을 테스트해주시기 바랍니다.
감사합니다.
[ Original Message ]
계획은 불꽃센서가 작동하면 lcd에 문구가 뜨고, 가스센서가 작동하면 led에 불이들어오는 것인데 가스센서와 led는 어느정도 했는데 lcd가 문제입니다. lcd혼자 쓰면 글자가 나오는데 센서와 같이 쓰니 글자가 깨집니다. 문제점을 알려주세요.
#include
LiquidCrystal lcd(1, 2, 8, 9, 10, 11);
#define LED_B 3 // B의 핀 번호 3
#define LED_G 4 // G의 핀 번호 4
#define LED_R 5 // R의 핀 번호 5
int flame = 7; // 불꽃감지센서 핀 번호 7
int state = 0; // 불꽃감지센서의 상태 값 저장 변수
void setup() {
pinMode(flame, INPUT); // 불꽃감지센서를 입력으로 설정
Serial.begin(9600);
}
void loop() {
int a = analogRead(A0);
Serial.println(a,DEC);
state = digitalRead(flame); // 불꽃감지센서값 입력받음
if(state == 1) { // 불꽃감지센서의 값이 1일 때 (불꽃감지시)
Serial.println("ON"); // 시리얼 통신에 센서값 출력해주기.
delay(100);
}
else{
Serial.println("OFF"); // 불꽃감지센서의 값이 0일 때 (불꽃이 감지되지 않았을 때)
delay(100);
}
if (a <= 200) {
lcd.begin(20,4);
lcd.setCursor(8,0);
lcd.print("Fire!");
lcd.setCursor(4,1);
lcd.print("Get out now!");
lcd.setCursor(2,2);
lcd.print("----------------");
lcd.setCursor(6,3);
lcd.print("Call 119");
}
if (a <= 150) {
digitalWrite(LED_R, LOW);
digitalWrite(LED_G, LOW);
digitalWrite(LED_B, HIGH);
}
else if (a <= 250) {
digitalWrite(LED_R, LOW);
digitalWrite(LED_G, HIGH);
digitalWrite(LED_B, LOW);
}
else if (a <= 300) {
Serial.println("ON");
digitalWrite(LED_R, HIGH);
digitalWrite(LED_G, LOW);
digitalWrite(LED_B, LOW);
}
}