질문게시판 > 답변 : 검토좀부탁드립니다

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 질문게시판

답변 : 검토좀부탁드립니다

페이지 정보

작성자 master 작성일18-06-23 23:04 조회5,272회 댓글1건

본문

 

// 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 Arduino
IRrecv 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 receiver
  lcd.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 0x20DF4EB1digitalWrite(10,HIGH); break//0버튼이 눌리면 LED ON
      case 0x20DF8E71digitalWrite(10,LOW ); break//0버튼이 눌리면 LED OFF
      case 0x20DFC639digitalWrite(11,HIGH); break//0버튼이 눌리면 LED ON
      case 0x20DF8679digitalWrite(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.setCursor0,3); lcd.print("ON "); Serial.println("LED1 ON "); digitalWrite(10,HIGH); }
    if(cmd=='2'){ lcd.setCursor0,3); lcd.print("OFF"); Serial.println("LED1 OFF"); digitalWrite(10,LOW ); }
    if(cmd=='3'){ lcd.setCursor8,3); lcd.print("ON "); Serial.println("LED2 ON "); digitalWrite(11,HIGH); }
    if(cmd=='4'){ lcd.setCursor8,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()+10RF433start=truefirstSignal=false; }
  }
  if(RF433start){
    long milli=millis();
    if(!firstSignal){
      if(milli>RF433startTime){
        if(RF433signal(7,A1)){ firstSignal=trueRF433firstSignaltime=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=trueRF433start=false; }
          if(timeGap>29&&timeGap<51){ ledOn =trueRF433start=false; }
        }
      }
    }
  }
  //
  if(ledOn ){ ledOn =falselcd.setCursor(0,3); lcd.print("ON  "); Serial.println("on "); }
  if(ledOff){ ledOff=falselcd.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;
}

 

 

// DateTime : 2018-06-23 오후 11:06:36
// by Ok-Hyun Park
//
#include <SoftwareSerial.h>
#define BT_TXD      2
#define BT_RXD      3
SoftwareSerial 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 0x20DF4EB1digitalWrite(10,HIGH); break//0버튼이 눌리면 LED ON
      case 0x20DF8E71digitalWrite(10,LOW); break//0버튼이 눌리면 LED OFF
      case 0x20DFC639digitalWrite(11,HIGH); break//0버튼이 눌리면 LED ON
      case 0x20DF8679digitalWrite(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=falsebreak;
      case '3'digitalWrite(11,HIGH); ledLight=true;  break;
      case '4'digitalWrite(11,LOW ); ledLight=falsebreak;
      case '5'digitalWrite(12,HIGH); ledLight=true;  break;
      case '6'digitalWrite(12,LOW ); ledLight=falsebreak;
    }
  }
  //
  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=falsebreak//ch가 2이면 C와 NO가 붙는다.// LED는 켜진다.
      case '3'digitalWrite(11,HIGH); ledLight=true;  break//ch가 1이면 C와 NC가 붙는다.// LED는 꺼진다.
      case '4'digitalWrite(11,LOW ); ledLight=falsebreak//ch가 2이면 C와 NO가 붙는다.// LED는 켜진다.
      case '5'digitalWrite(12,HIGH); ledLight=true;  break//ch가 2이면 C와 NO가 붙는다.// LED는 켜진다.
      case '6'digitalWrite(12,LOW ); ledLight=falsebreak//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 값으로 바꿉니다.
  }
}

 

길거나 복잡한 기능의 소스는 남이 봐줄 수가 없습니다.

스스로 디버깅하는 능력을 키우세요

잘 안되는 기능을 하나씩 차례대로 체크해서 문제를 해결하세요

 

 

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

댓글 : 1

조회수 : 5,272

슬픈남부님의 댓글

비공개 작성일

검토해주셔서 감사합니다~
역시나 업로드 했더니 안되네요!

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[25] master  17-10-29
질문 빵판없이 디스플레이 넣을 수 있을까요? 댓글[1] 첨부파일오소로롯 새글 22-06-29
질문 라즈베리파이4 신형 선택문제 댓글[1] maximum  22-06-26
질문 음전압 ADC 댓글[2] 412904  22-06-26
질문 아두이노 센서값 출력 질문입니다! 댓글[1] 아궁2  22-06-24
질문 ATmega128, ATmega28 RS232통신 첨부파일Moon4201  22-06-24
답변 답변 : ATmega128, ATmega28 RS232… 댓글[1] master  22-06-25
질문 서보모터, 온습도센서 코드 질문 댓글[2] 첨부파일kshdlfaldfh  22-06-22
답변 답변 : 서보모터, 온습도센서 코드 질문 댓글[15] master  22-06-22
질문 steppermulti5 질문 응애  22-06-21
답변 답변 : steppermulti5 질문 댓글[1] master  22-06-22
질문 atmega128 avr usart 질문 snoflak  22-06-21
답변 답변 : atmega128 avr usart 질문 댓글[5] master  22-06-21
질문 사용자 정의 함수 변환 하는 방법 댓글[2] 첨부파일da0800  22-06-21
질문 atmega128 댓글[1] 양의노래  22-06-20
질문 아두이노 동시동작 재질문 댓글[9] 첨부파일죠르디  22-06-20
질문 초음파센서로 dc모터 제어하기 댓글[1] 첨부파일난쟁2  22-06-20
질문 아두이노 동시동작 댓글[7] 죠르디  22-06-19
질문 ATMEGA128 UART,FND 연동 질문 JMOD  22-06-19
답변 답변 : ATMEGA128 UART,FND 연동 질문 댓글[1] master  22-06-20
질문 atmeg128 질문이요 댓글[1] 첨부파일공대생er  22-06-18
질문 atmega128 초음파 센서로 신호등 시간초 늘리기 서동씨  22-06-18
답변 답변 : atmega128 초음파 센서로 신호등 시간초… 댓글[1] master  22-06-18
질문 atmega128 댓글[2] 망경이  22-06-18
질문 앱인벤터 이용해서 수동 자동 할라고하는데 ..잘안됩니다… 댓글[1] 따랑해영  22-06-18
답변 질문 : 앱인벤터 이용해서 수동 자동 할라고하는데 ..… 댓글[1] 첨부파일따랑해영  22-06-19
답변 질문 : 앱인벤터 이용해서 수동 자동 할라고하는데 .… 첨부파일따랑해영  22-06-19
질문 서보모터와 초음파센서 댓글[1] 브링미히어  22-06-17
질문 LCD 도와주세요 ㅜㅠㅠㅠ 댓글[2] 첨부파일dentist22  22-06-17
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전