질문게시판 > 릴레이설정값 소수점으로입력

TODAY1,087 TOTAL2,933,373
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | 질문게시판 | 릴레이설정값 소수점으로입력

페이지 정보

작성자 왕왕초a 작성일2021-02-16 22:15 조회105,859회 댓글14건

본문

	

안녕하셔요

질문입니다

lcd에 출력되는 센서습도값이 소수점이하 60.5%일 때

릴레이가 작동하는 셋팅값을 소수점이하 60.5%로

여기에 (lcd.setCursor(11,1);// numLength, 0); setting)

입력하여 릴레이를 작동시미려면 어떻게 하는건가요

 

 

 

#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', 'A'},

{'4', '5', '6', 'B'},

{'7', '8', '9', 'C'},

{'*', '0', '#', '.'}

};

byte rowPins[ROWS] = {11,10,9,8};

byte colPins[COLS] = {7,6,5,4};

 

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("%");

lcd.setCursor(2,1);// numLength, 0); setting

lcd.print( "setting:");

 

lcd.setCursor(11,1);// numLength, 0); setting

lcd.print( num);

lcd.setCursor(15,1);// numLength, 0);

lcd.print("%");

delay(100);

 

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'||key=='.'))

{

if (presentValue != true)

{

num = num + key;

int numLength = num.length();

delay(10);

}

}

else if (key != NO_KEY && key == 'C'){

lcd.clear();

num = "";}

if((key>='0')&&(key<='9')){

tp%=1000;

tp*=10; // 일의자리 및 십의자리를 한자리 올림

tp+=key&0x0F; // key를 일의자리에 넣음

}

else if(key=='*'){ // 엔터키

hum=tp; // 습도 변수에 저장

tp=0; // 임시변수 초기화

}

 

 

if(hum<tp)//temp

{

digitalWrite(relayIN, HIGH);

cnt = 100;

}

if(cnt != 0){

cnt--;

}else{

digitalWrite(relayIN, LOW);

delay(100);

}

}

 

  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글 14

조회수 105,859

master님의 댓글

master 작성일

lcd.setCursor(11,1); lcd.print(num); lcd.setCursor(15,1); lcd.print("%");
이 문장 근처에서 릴레이를 구동하고 싶은 건가요?

lcd.setCursor(11,1); lcd.print(num); lcd.setCursor(15,1); lcd.print("%");
if(num<60.5)digitalWrite(relayIN,1); // 60.5% 미만에서 릴레이 ON
else        digitalWrite(relayIN,0); // 아니면 릴레이 OFF

왕왕초a님의 댓글

왕왕초a 작성일


현제는 센서출력값이 60.5%로디스플레이되구요(소수점이하로출력됨)
키페드로 릴레이 설정을 소수점이하로 하려할때 60.%까지는 입력이되는데 60.5%로입력을하면은 릴레이가 가동을 해야하는데 정지가됩니다
(예;실내습도 70.5%  설정습도60.%까지는 키페드로 설정이 되는데 60.5% 설정시 릴레이가 정지됩니다)

master님의 댓글

master 댓글의 댓글 작성일

if(num<60.5) // 60.5 미만 (60.5는 포함되지 않음)
if(num<=60.5) // 60.5 이하 (60.5 포함)

왕왕초a님의 댓글

왕왕초a 작성일

제가 이해가 부족합니다
키페드로 입력을할때 어찌하는건가요

왕왕초a님의 댓글

왕왕초a 작성일

네~ 감사합니다
열공해 보겟습니다

왕왕초a님의 댓글

왕왕초a 작성일

재 질문입니다
lcd.setCursor(2,1);// numLength, 0); setting
lcd.print( "setting:");
 lcd.setCursor(11,1);// numLength, 0); setting
 lcd.print( num);
실내습도 50.5%일때
셋팅값이49.5% 에서는 릴레이on 되고
셋팅값이51.5% 에서는 릴레이off 되고
해야되는데
"현재상태는 소수점이후로숫자입력시 릴레이가 off 됩니다"

master님의 댓글

master 댓글의 댓글 작성일

String num;
num은 문자열이라서 실수형의 값을 저장하지 못하므로 float 형의 변수를 추가로 선언해서 키입력을 저장해야 합니다.

왕왕초a님의 댓글

왕왕초a 작성일

답변 감사드리구요
해결이 되지안아
자세한설명 부탁드립니다

master님의 댓글

master 댓글의 댓글 작성일

키패드를 눌렀을 때 입력받아서 num에 저장된 값은 LCD를 통해서 제대로 저장된 것을 확인 했겠죠?
이 값을 실수형으로 어떻게 저장할 것인지를 고민해보세요

master님의 댓글

master 댓글의 댓글 작성일

if((key>='0')&&(key<='9')){
tp%=1000;
tp*=10; // 일의자리 및 십의자리를 한자리 올림
tp+=key&0x0F; // key를 일의자리에 넣음
이 처리는 정수형 입력일 때에 유효할 것으로 생각되고요
반드시 소숫점 이하 1자리를 입력한다고 하면 실수형의 변수에 저장한 후 10을 나눠주면 됩니다.
코드를 작성할 때는 규칙성을 파악해야 합니다.
알고리즘이 명확하지 않으면 코드를 작성하지 못하거나 불필요하게 여러번 삽질해야 합니다.

왕왕초a님의 댓글

왕왕초a 작성일

고민하다가 어려워서 글올립니다
(키패드를 눌렀을 때 입력받아서 num에 저장된 값은 LCD를 통해서 제대로 저장된 것을 확인 했겠죠? )
이부분은 잘돼구요
변수선언 그리고 저장부분을 연결좀 해주셔요

master님의 댓글

master 댓글의 댓글 작성일

문자열을 공부하시고요
num을 문자열이 제대로 저장되었는지 확인한 후에
atof() 함수를 사용해서 실수형으로 받아오세요

왕왕초a님의 댓글

왕왕초a 작성일

네~
가르침 감사 드림니다
좋은하루 되셔요

질문게시판HOME > 질문게시판 목록

MCU, AVR, 아두이노 등 전자공학에 관련된 질문을 무료회원가입 후 작성해주시면 전문가가 답변해드립니다.
ATMEGA128PWMLED초음파
아두이노AVR블루투스LCD
UART모터적외선ATMEGA
전체 스위치 센서
질문게시판 목록
제목 작성자 작성일 조회
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은 질문게시판에서만 작성 가능합니다. 스태프 19-01-15 21176
공지 사이트 이용 안내댓글[29] master 17-10-29 34932
질문 atmega128 스위치를 이용한 7-segment제어 자동제어공돌이 23-10-01 42
답변 답변글 답변 : atmega128 스위치를 이용한 7-segment제어 새글 master 08:36 14
질문 atmega128a 와 캐릭터 LCD연결 방법댓글[4] 까미 23-09-30 101
질문 타이머 인터럽트를 이용한 LCD제어 질문입니다. Tell 23-09-27 58
답변 답변글 답변 : 타이머 인터럽트를 이용한 LCD제어 질문입니다.댓글[3] master 23-09-28 80
질문 아두이노 무한루프 코드 질문...댓글[1] vnpaz 23-09-27 46
질문 질문있습니다ㅠㅠ 부탁드려요댓글[1] keldeo 23-09-27 42
질문 0 ~ 99 이중 for문으로 작성하는법!댓글[2] 상어 23-09-26 68
질문 리튬배터리로 화면 출력 질문드립니다 !댓글[1] 이미지 멘탈나간다 23-09-26 49
질문 lcd,바코드,서보모터, 아두이노 질문 드립니다. ㅠㅠ댓글[1] 아두이노개발자 23-09-26 85
질문 stm32에서 변수 값을 유지하는 방법댓글[1] 라칸 23-09-26 62
질문 안녕하세요 스위치로 led 제어 관련 질문이 있습니다댓글[1] 노형빈 23-09-25 69
질문 16X16 도트 매트릭스 구동방법 질문입니다.댓글[1] 첨부파일 맹균 23-09-25 62
질문 stm32에서 RTC 시간 함수 쓰는데 의문점댓글[1] 라칸 23-09-25 60
질문 GPS 모듈 관련 질문입니다.댓글[3] 지구과학 23-09-22 58
질문 아두이노 블루투스와 초음파센서를 이용한 장애물 정지댓글[2] 둘둘이 23-09-22 102
답변 답변글 답변 : 아두이노 블루투스와 초음파센서를 이용한 장애물 정지댓글[1] master 23-09-25 93
질문 stm32 보드에서 시간설정과 불러오기를 하는데댓글[5] 라칸 23-09-22 97
질문 아두이노 인터럽트 질문입니다.댓글[2] Tell 23-09-21 76
답변 답변글 답변 : 아두이노 인터럽트 질문입니다.댓글[1] master 23-09-22 83
질문 아두이노와 거리 감지 센서의 전류 관련댓글[1] hmkim 23-09-21 101
질문 아두이노 코딩 질문있습니다. 도와주세요....댓글[1] 이미지첨부파일 vnpaz 23-09-20 94
질문 아두이노를 사용한 dc모터 위치제어댓글[2] 모터위치 23-09-20 109
질문 stm32 디버깅이나 rst버튼 없이 하는 방법좀댓글[1] 라칸 23-09-20 79
질문 LCD에 숫자 표기법을 바꾸고 싶습니댓글[2] Bs드리프터 23-09-19 168
질문 알코올 측정기(MQ-3) 관련 질문 이미지 소오금 23-09-18 83
답변 답변글 답변 : 알코올 측정기(MQ-3) 관련 질문 master 23-09-19 134
질문 스텝모터 제어하는 소스파일 수정방법 질문드립니다. Bs드리프터 23-09-15 97
게시물 검색

2022년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2021년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2020년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2020
모바일버전으로보기