BASIC4MCU | 질문게시판 | 답변 : 검토좀부탁드립니다
페이지 정보
작성자 master 작성일2018-06-23 23:04 조회5,349회 댓글1건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=2031
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-06-23 오후 11:03:07// 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;bool ledOn,ledOff;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){ ledOff=true; RF433start=false; }if(timeGap>29&&timeGap<51){ ledOn =true; RF433start=false; }}}}}//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"); }}//***********************************************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;}
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-06-23 오후 11:06:36// by Ok-Hyun Park//#include <SoftwareSerial.h>#define BT_TXD 2#define BT_RXD 3SoftwareSerial btSerial(BT_RXD,BT_TXD);//#include <IRremote.h>int RECV_PIN=A0;IRrecv irrecv(RECV_PIN);decode_results results;//int RFsendPin=4;//bool ledLight=false;bool previousLedlight=false;//void setup(){Serial.begin(9600);irrecv.enableIRIn();pinMode(4,OUTPUT);pinMode(10,OUTPUT); digitalWrite(10,HIGH); //RELAY핀pinMode(11,OUTPUT); digitalWrite(11,HIGH);pinMode(12,OUTPUT); digitalWrite(12,HIGH);btSerial.begin(9600);}//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': digitalWrite(10,HIGH); ledLight=true; break;case '2': digitalWrite(10,LOW ); ledLight=false; break;case '3': digitalWrite(11,HIGH); ledLight=true; break;case '4': digitalWrite(11,LOW ); ledLight=false; break;case '5': digitalWrite(12,HIGH); ledLight=true; break;case '6': digitalWrite(12,LOW ); ledLight=false; break;}}//if(btSerial.available()){char ch=btSerial.read();Serial.write(ch);switch(ch){case '1': digitalWrite(10,HIGH); ledLight=true; break; //ch가 1이면 C와 NC가 붙는다.// LED는 꺼진다.case '2': digitalWrite(10,LOW ); ledLight=false; break; //ch가 2이면 C와 NO가 붙는다.// LED는 켜진다.case '3': digitalWrite(11,HIGH); ledLight=true; break; //ch가 1이면 C와 NC가 붙는다.// LED는 꺼진다.case '4': digitalWrite(11,LOW ); ledLight=false; break; //ch가 2이면 C와 NO가 붙는다.// LED는 켜진다.case '5': digitalWrite(12,HIGH); ledLight=true; break; //ch가 2이면 C와 NO가 붙는다.// LED는 켜진다.case '6': digitalWrite(12,LOW ); ledLight=false; break; //ch가 2이면 C와 NO가 붙는다.// LED는 켜진다.}}//if(ledLight&&!previousLedlight){ //새로이 ledLight 가 참이되면 0.25초간 송신기에 high 신호를 보냅니다.digitalWrite(RFsendPin,HIGH); delay(20); digitalWrite(RFsendPin,LOW); delay(10);digitalWrite(RFsendPin,HIGH); delay(20); digitalWrite(RFsendPin,LOW); delay(50);digitalWrite(RFsendPin,HIGH); delay(20); digitalWrite(RFsendPin,LOW);previousLedlight=ledLight;}//if(!ledLight&&previousLedlight){ //새로이 ledLight가 부가 되면 0.4초간 송신기에 high 신호를 보냅니다.digitalWrite(RFsendPin,HIGH); delay(20); digitalWrite(RFsendPin,LOW); delay(10);digitalWrite(RFsendPin,HIGH); delay(20); digitalWrite(RFsendPin,LOW); delay(50);digitalWrite(RFsendPin,HIGH); delay(20); digitalWrite(RFsendPin,LOW);previousLedlight=ledLight; //현재의 ledLight 신호 값을 과거의 ledLight 값으로 바꿉니다.}}
길거나 복잡한 기능의 소스는 남이 봐줄 수가 없습니다.
스스로 디버깅하는 능력을 키우세요
잘 안되는 기능을 하나씩 차례대로 체크해서 문제를 해결하세요
댓글 1
조회수 5,349슬픈남부님의 댓글
비공개 작성일
검토해주셔서 감사합니다~
역시나 업로드 했더니 안되네요!