灯控:ESP-01 ARDUINO 315MHZ 搖控器接收,控制 RELAY,驅動蜂鳴器。

1. 灯控:MPC82G516 , 8051C , 315MHZ 無線接收模組,接收搖控器 EV1527,
    控制 RELAY,  做灯控。
    (1) 這部份已完成。

2. 灯控:ESP-01 AT 固件,STC 8051C ,TCP server,控制 RELAY。
    (1) 這部份已完成。

3. 灯控:ESP-01 MPY,TCP server,控制 RELAY。
    (1) 這部份已完成。

4. 灯控:ESP-01 ARDUINO 315MHZ 搖控器接收,控制 RELAY,驅動蜂鳴器。
   (1) 只搖控器碼接收,驅動 RELAY。未驅動蜂鳴器。=>完成
   (2) 電路圖,手繪,DIO_00 同時當DI, DO  => 完成。[2019/12/14]
   (3) 整合蜂鳴器的程式碼。 => 範例 2。[2019/12/15 05:08]

範例1:這支程式,是接收到搖控器的訊號,發出聲音,並進行 繼電器開關,但沒有聲音。
#include
RCSwitch mySwitch = RCSwitch();
void Relay(char c)
{
     digitalWrite(2,c);
}
void setup() {
  Serial.begin(115200);  Serial.println( "ev1527 receive!" );
  mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2
  pinMode(2, OUTPUT);
}
void loop() {
  if (mySwitch.available()) {
    int value = mySwitch.getReceivedValue();
    if (value == 0) {
      Serial.print("Unknown encoding");
    } else {
      Serial.print("Received ");  Serial.print( mySwitch.getReceivedValue() );  Serial.print(" / ");  Serial.print( mySwitch.getReceivedBitlength() ); 
      Serial.print("bit ");  Serial.print("Protocol: ");  Serial.print( mySwitch.getReceivedProtocol() );
      if     (mySwitch.getReceivedValue()==10910433){  Serial.println("==> A"); Relay(1);}
      else if(mySwitch.getReceivedValue()==10910434){  Serial.println("==> B"); Relay(0);}
      else if(mySwitch.getReceivedValue()==10910436)  Serial.println("==> C");
      else if(mySwitch.getReceivedValue()==10910440)  Serial.println("==> D");
    }
    mySwitch.resetAvailable();4
  }
}

範例2:這支程式,是接收到搖控器的訊號,發出聲音,並進行 繼電器開關,有聲音。
燒錄在 ESP-12F , 若要用 ESP-01 則需改腳位定義。

#include
#include "KEYSND.h" 
KEYSND mKeySnd;
RCSwitch mySwitch = RCSwitch();

#define LED3      12
//#define PinRF   0
#define PinRF     13 /* RF 接收 GPIO 腳, 可設定, 大多可用。*/
#define PinRLY    2

void Relay(char c){
     digitalWrite(PinRLY,c);
}
void setup(){
    Serial.begin(115200);  Serial.println( "ev1527 receive!" );
    mySwitch.enableReceive(PinRF);  // Receiver on interrupt 0 => that is pin #2
    pinMode(PinRLY, OUTPUT);
    pinMode(LED3,   OUTPUT);
}
void loop() {
        static char bLed3=0;// must static
        static char bSet=0;// must static
        
        digitalWrite(LED3, (int)bLed3);  bLed3^=1;
        if (mySwitch.available()) {
        int value = mySwitch.getReceivedValue();
        if (value == 0) {
              Serial.print("Unknown encoding");
        } else {
                Serial.print("Received ");  Serial.print( mySwitch.getReceivedValue() );  Serial.print(" / ");  Serial.print( mySwitch.getReceivedBitlength() ); 
                Serial.print("bit ");  Serial.print("Protocol: ");  Serial.print( mySwitch.getReceivedProtocol() );
          if     (mySwitch.getReceivedValue()==10910433){  Serial.println("==> A"); mKeySnd.SetSnd(0);Relay(1); }
          else if(mySwitch.getReceivedValue()==10910434){  Serial.println("==> B"); mKeySnd.SetSnd(1);Relay(0); }
          else if(mySwitch.getReceivedValue()==10910436){  Serial.println("==> C"); mKeySnd.SetSnd(2);          }
          else if(mySwitch.getReceivedValue()==10910440){  
                Serial.println("==> D"); 
                if(bSet==0) mKeySnd.SetSnd(3);
                else        mKeySnd.SetSnd(4);
                bSet ^= 1;
          }
    }
    mySwitch.resetAvailable();
  }
}


留言

這個網誌中的熱門文章

無效的努力

股市-華頓S&P黃豆(00693U) 操作法