BASIC4MCU | 질문게시판 | 답변 2: 검토좀부탁드립니다
페이지 정보
작성자 master 작성일2018-06-24 20:44 조회4,689회 댓글1건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=2034
본문
LCD 표시는 위 소스에서하고 있으니 위 소스만 체크 해드리면 되겠습니다.
if(ledOn ){ ledOn =false; lcd.setCursor(0,3); lcd.print("ON "); Serial.println("on "); }if(ledOff){ ledOff=false; lcd.setCursor(0,3); lcd.print("OFF "); Serial.println("off"); }아랫쪽에서 변수를 체크해서 LCD에 표시하고 있습니다.
이 변수는 RF433 체크하는 코드에서만 건드리고 있고요
LED 출력을 하는 곳마다 변수를 설정 해줘야하는데 현재는 RF433에서만 설정하는 것이 문제입니다.
변수를 사용하지 않고 LED를 체크하는 방법을 알려드리죠
digitalWrite(10,HIGH);digitalWrite(10,LOW );이 출력을 체크하면 되겠죠?
lcd.setCursor(0,3);if(digitalRead(10)){ lcd.print("ON "); Serial.println("on "); }else { lcd.print("OFF "); Serial.println("off"); }if(digitalRead(10))
LED 출력을 읽을 수 있습니다.
변수를 사용하지 않아도 되는 것이죠
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-06-24 오후 8:45:09// by Ok-Hyun Park//#include <Wire.h>#include <LiquidCrystal_I2C.h>LiquidCrystal_I2C lcd(0x27,20,4);//#include <IRremote.h>#include <VirtualWire.h>//#include <SoftwareSerial.h>int bluetoothTx=2,bluetoothRx=3;SoftwareSerial bluetooth(bluetoothTx,bluetoothRx);//int RECV_PIN=A0; //define input pin on ArduinoIRrecv irrecv(RECV_PIN);int RF433receivePin=A1;//int n,m,k;long RF433time,RF433startTime;bool RF433start=false;long RF433firstSignaltime;bool firstSignal=false;decode_results results;//void setup(){irrecv.enableIRIn(); // Start the receiverlcd.init(); lcd.backlight();//lcd.begin(20,4);lcd.setCursor(6,1); lcd.print("MY HOME"); lcd.setCursor(2,2); lcd.print("LIGHTING SYSTEMS"); delay(5000);lcd.clear();lcd.setCursor(0,3); lcd.print("OFF"); lcd.setCursor(8,3); lcd.print("OFF"); lcd.setCursor(16,3); lcd.print("OFF");lcd.setBacklight(0x7);//bluetooth.begin(9600);Serial.begin(9600);Serial.println("sdadsfjkdfskjlsdf");delay(100);pinMode(10,OUTPUT); pinMode(11,OUTPUT); pinMode(12,OUTPUT); pinMode(A1,INPUT);pinMode(RF433receivePin,INPUT);}//void loop(){if(irrecv.decode(&results)){Serial.println(results.value,HEX);switch(results.value){case 0x20DF4EB1: digitalWrite(10,HIGH); break; //0버튼이 눌리면 LED ONcase 0x20DF8E71: digitalWrite(10,LOW ); break; //0버튼이 눌리면 LED OFFcase 0x20DFC639: digitalWrite(11,HIGH); break; //0버튼이 눌리면 LED ONcase 0x20DF8679: digitalWrite(11,LOW ); break; //0버튼이 눌리면 LED OFF}irrecv.resume(); // Receive the next value}//if(Serial.available()){switch(Serial.read()){case '1': lcd.setCursor(0,3); lcd.print("ON "); digitalWrite(10,HIGH); Serial.println("LED1 ON "); break;case '2': lcd.setCursor(0,3); lcd.print("OFF "); digitalWrite(10,LOW ); Serial.println("LED1 OFF "); digitalWrite(10,LOW); break;case '3': digitalWrite(11,HIGH); break;case '4': digitalWrite(11,LOW ); break;case '5': digitalWrite(12,HIGH); break;case '6': digitalWrite(12,LOW ); break;}}//lcd.setCursor(0,2); lcd.print("LED1 LED2 LED3");//if(bluetooth.available()){char cmd=(char)bluetooth.read(); Serial.print("Command="); Serial.println(cmd);//if(cmd=='1'){ lcd.setCursor( 0,3); lcd.print("ON "); Serial.println("LED1 ON "); digitalWrite(10,HIGH); }if(cmd=='2'){ lcd.setCursor( 0,3); lcd.print("OFF"); Serial.println("LED1 OFF"); digitalWrite(10,LOW ); }if(cmd=='3'){ lcd.setCursor( 8,3); lcd.print("ON "); Serial.println("LED2 ON "); digitalWrite(11,HIGH); }if(cmd=='4'){ lcd.setCursor( 8,3); lcd.print("OFF"); Serial.println("LED2 OFF"); digitalWrite(11,LOW ); }if(cmd=='5'){ lcd.setCursor(16,3); lcd.print("ON "); Serial.println("LED3 ON "); digitalWrite(12,HIGH); }if(cmd=='6'){ lcd.setCursor(16,3); lcd.print("OFF"); Serial.println("LED3 OFF"); digitalWrite(12,LOW ); }}//if(!RF433start){if(RF433signal(7,A1)){ RF433startTime=millis()+10; RF433start=true; firstSignal=false; }}if(RF433start){long milli=millis();if(!firstSignal){if(milli>RF433startTime){if(RF433signal(7,A1)){ firstSignal=true; RF433firstSignaltime=milli; }}else{if(milli>RF433startTime+30)RF433start=false;}}else{if(milli>RF433firstSignaltime+80)RF433start=false;else{if(RF433signal(7,A1)){long timeGap=milli-RF433firstSignaltime;Serial.println(timeGap);if(timeGap>50&&timeGap<71){ RF433start=false; }if(timeGap>29&&timeGap<51){ RF433start=false; }}}}}//lcd.setCursor(0,3);if(digitalRead(10)){ lcd.print("ON "); Serial.println("on "); }else { lcd.print("OFF "); Serial.println("off"); }}//bool RF433signal(int8_t numCriteria,int8_t pinNum){int8_t count=0;for(int8_t i=0; i<10; i++){if(analogRead(pinNum)>RFsSignalLevel;)count++;delay(1);}if(count>=numCriteria)return true; else return false;}
댓글 1
조회수 4,689master님의 댓글
master 작성일
if(analogRead(pinNum)>RFsSignalLevel)count++;
괄호 닫기 전에 있는 세미콜론을 삭제하면 첫번째 에러는 해결되고요
RFsSignalLevel 변수 선언이 빠져있습니다.
어느 예제를 보고 만든 함수인지 모르겠지만
원본 예제를 찾아서 수정하세요