BASIC4MCU | 질문게시판 | 키패드설정값 문자표기 릴레이작동
페이지 정보
작성자 왕왕초a 작성일2020-06-01 01:34 조회4,512회 댓글2건본문
'5월25일자 키패드설정하여 릴레이작동' 재질문입니다
답주신 자료로 업로드는 되었으나 ('' lcd에 온습도센서값 키패드숫자도출력되는데'')
정상작동은 안돼는상황입니다
어려우시겠지만 점검 간곡히 부탁드립니다
[목표;lcd에 습도값을 키패드로 설정하여 릴레이제어']
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#include <DHT.h>
#define DHTPIN A0
#define DHTTYPE DHT22
#define relay 12
DHT dht(DHTPIN, DHTTYPE);
float hum;
float temp;const byte ROWS = 4;
const byte COLS = 4;char keys [ROWS] [COLS] = {
{'1', '2', '3', '+'},
{'4', '5', '6', '-'},
{'7', '8', '9', '*'},
{'C', '0', '=', '/'}
};
byte rowPins[ROWS] = {9,8,7,6};
byte colPins[COLS] = {5,4,3,2};Keypad myKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
boolean presentValue = false;
boolean next = false;
boolean final = false;
String num;
int cnt = 0;
int tp;int relayIN = 12;
void setup()
{
lcd.init();
lcd.backlight();
Serial.begin(9600);
dht.begin();
lcd.begin(16,2);
pinMode(A0,INPUT);
pinMode(12,OUTPUT);
}void loop(){
hum = dht.readHumidity();
temp= dht.readTemperature();
int dehumidify = analogRead(A0);
lcd.setCursor(0,0);
lcd.print("T:");
lcd.setCursor(2,0);
lcd.print( temp);
lcd.setCursor(6,0);
lcd.print("'C");
lcd.setCursor(9,0);
lcd.print("H:");
lcd.setCursor(11,0);
lcd.print( hum);
lcd.setCursor(15,0);
lcd.print("%");
delay(5);
char key = myKeypad.getKey();
if (key != NO_KEY && (key=='1'||key=='2'||key=='3'||key=='4'||key=='5'||key=='6'||key=='7'||key=='8'||key=='9'||key=='0'))
{
if (presentValue != true)
{
num = num + key;
int numLength = num.length();
lcd.setCursor(11,1);// numLength, 0);
lcd.print( num);
lcd.setCursor(14,1);// numLength, 0);
lcd.print("%");
delay(10);
}
}
else if (key != NO_KEY && key == 'C'){
lcd.clear();
num = "";}
if((key>='0')&&(key<='9')){
tp%=100; // 임시변수에서 백의자리 제거
tp*=10; // 일의자리 및 십의자리를 한자리 올림
tp+=key&0x0F; // key를 일의자리에 넣음
}
else if(key=='*'){ // 엔터키
hum=tp; // 습도 변수에 저장
tp=0; // 임시변수 초기화
}
if(hum>key){
digitalWrite(relayIN, HIGH);
cnt = 30;
}
if(cnt != 0){
cnt--;
}else{
digitalWrite(relayIN, LOW);
delay(30);
}
}
댓글 2
조회수 4,512master님의 댓글
master 작성일
체크를 하기 위해서 부품을 구입해서 체크 해드릴 수는 없겠죠?
회로를 가지고 있는 분만 체크가 가능합니다.
최소한 어느 기능에서 문제가 있는지, 출력이 없는지 또는 출력이 이렇게 되어야 하는데 저렇게 된다는 등 상세하게 기술하셔야 해당부분의 코드를 봐드릴 수 있습니다.
왕왕초a님의 댓글
왕왕초a 작성일
해결햇습니다
문제는 if(hum>key){ 를
if(temp>tp)로 잘못표기가 되었군요
제 실수입니다
그리고 이번가르침 감사드립니다
좋은하루되십시요