433315射频新建的一个按键Tri-State: not applicable-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1630|回复: 3

[未解决] 433315射频新建的一个按键Tri-State: not applicable

[复制链接]
发表于 2021-9-25 17:07 | 显示全部楼层 |阅读模式
因为433MHZ的遥控器和315MHZ的遥控器的脉冲波长不同,所以我想分开来做,一个按钮的脉冲宽度是185另一个是350,但是修改后脉冲宽度改了,这个就变成Tri-State: not applicable
微信图片_20210925170402.png
 楼主| 发表于 2021-9-25 17:08 | 显示全部楼层
/* 该代码是爆改车间主任基于点灯科技平台
* 控制baogaoMCU开发板通过433Mhz收发模块
* 学习433遥控信号和发射433遥控信号代码
* 代码中使用eeprom存储接收从app中发送来的控制数据
* 当用语音助手控制开关是从eeorom中读取数据
* 从而达到脱机学习功能
* 爆改车间车间主任共享代码不可商用
* 转发需取得主任同意并备注出处
* 关注"爆改车间"微信公众号获取更多资源
*/

#include <RCSwitch.h>    //射频模块控制库 从IDE的库管理中直接下载
#include <EEPROM.h>  

RCSwitch mySwitch = RCSwitch();

#define BLINKER_WIFI
#define BLINKER_MIOT_OUTLET
//#define BLINKER_ESP_SMARTCONFIG


#include <Blinker.h>
char auth[] = "fbc79f6b7295";     //key
char ssid[] = "iPhone";     //ssid
char pswd[] = "11111111";     //password


BlinkerButton ButtonSW("sw");  //发送遥控信号的统一按键的数据键名
BlinkerButton ButtonSW433("sw433");
BlinkerButton ButtonRead("read");   //学习开关的数据键名
BlinkerText Textcode("code");  //文件显示的数据键名
bool abc=0;
bool stu = 0;
char code[30];

void button_SW_callback(const String & state)   //发射数据按键通过自定承载内容发送信号值
{
          mySwitch.setPulseLength(184);
          BLINKER_LOG("get button state: ", state);
          mySwitch.send(state.toInt(), 24);
          delay(1000);
}
//void button_SW433_callback(const String & state1)   //发射数据按键通过自定承载内容发送信号值
//{
//          mySwitch.setPulseLength(350);
//          BLINKER_LOG("get button state1: ", state1);
//          mySwitch.send(state1.toInt(), 24);
//          delay(1000);
//}

void button_Read_callback(const String & state){
    if (state == BLINKER_CMD_ON) {
        BLINKER_LOG("Toggle on!");
        ButtonRead.print("on");
        stu = 1;
    }
    else if (state == BLINKER_CMD_OFF) {
        BLINKER_LOG("Toggle off!");
        ButtonRead.print("off");
        stu = 0;
    }
    Serial.print(stu);
  
}

void put_code(int a,String c){    //写eeprom函数 参数1:地址 参数2:内容
  EEPROM.begin(4096);
  EEPROM.put(a, c.length());
  for (int i = 0; i < c.length(); i++){
    EEPROM.put(a + 1 + i, c[i]);
  }
  EEPROM.commit();
  EEPROM.end();
}

String get_code(int a){      //读eeprom函数  参数:地址
  EEPROM.begin(4096);
  String c = "";
  for (int i = 0; i < EEPROM.read(a); i++){
    c += char(EEPROM.read(a + 1 + i));
  }
  return c;
  EEPROM.end();
}

void dataRead(const String & data)
{

    BLINKER_LOG("Blinker readString: ", data); //通过调试窗口发送要存储的数据
    String d="";
    if(data.indexOf("ON") != -1){            //如果"ON"开头 在3000地址存储开信号
      put_code(3000,data.substring(2));
      d=get_code(3000);
    }else if(data.indexOf("OFF") != -1){    //如果"OFF"开头 在3100地址存储关信号
      put_code(3100,data.substring(3));
      d=get_code(3100);
    }
        
    BLINKER_LOG("存储数据:", d);
    Blinker.print("存储数据:", d);

}

void heartbeat()
{

}

//void miotPowerState(const String & state)
//{
//    BLINKER_LOG("need set power state: ", state);
//
//    if (state == BLINKER_CMD_ON) {
//        digitalWrite(LED_BUILTIN, HIGH);
//
//        BlinkerMIOT.powerState("on");
//        BlinkerMIOT.print();
//        String c=get_code(3000);
//        mySwitch.send(c.toInt(), 24);
//        BLINKER_LOG("发射数据:", c);
//        Blinker.print("发射数据:", c);
//
//    }
//    else if (state == BLINKER_CMD_OFF) {
//        digitalWrite(LED_BUILTIN, LOW);
//
//        BlinkerMIOT.powerState("off");
//        BlinkerMIOT.print();
//        String c=get_code(3100);
//        mySwitch.send(c.toInt(), 24);
//        BLINKER_LOG("发射数据:", c);
//        Blinker.print("发射数据:", c);
//
//    }
//}

void setup()
{
    Serial.begin(115200);
    mySwitch.enableTransmit(0);   //定义433发射模块的接口位D0
    mySwitch.enableReceive(2);
//    if(abc==0)
//  {
//   mySwitch.setPulseLength(184);
//   
//  }
//    else if (abc==1)
//  {
//  mySwitch.setPulseLength(350);
//  
//  }
   
    Blinker.begin(auth, ssid, pswd);   //定义433接受模块的接口位D2
    BLINKER_DEBUG.stream(Serial);
   
    pinMode(2, INPUT_PULLUP);
   
   
   // BlinkerMIOT.attachPowerState(miotPowerState);
    Blinker.attachData(dataRead);
    ButtonSW.attach(button_SW_callback);
    ButtonSW433.attach(button_SW_callback);
    ButtonRead.attach(button_Read_callback);
   
}

void loop()
{
    Blinker.run();
    //Blinker.delay(200);
    if (stu == 1){
      if (mySwitch.available()) {
        Serial.print("Received ");
        Serial.print( mySwitch.getReceivedValue() );
        Serial.print(" / ");
        Serial.print( mySwitch.getReceivedBitlength() );
        Textcode.print(mySwitch.getReceivedValue(), mySwitch.getReceivedBitlength());
        Serial.print("bit ");
        Serial.print("Protocol: ");
        Serial.println( mySwitch.getReceivedProtocol() );
        mySwitch.resetAvailable();

      }
    }

}
 楼主| 发表于 2021-9-25 17:09 | 显示全部楼层
/* 该代码是爆改车间主任基于点灯科技平台
* 控制baogaoMCU开发板通过433Mhz收发模块
* 学习433遥控信号和发射433遥控信号代码
* 代码中使用eeprom存储接收从app中发送来的控制数据
* 当用语音助手控制开关是从eeorom中读取数据
* 从而达到脱机学习功能
* 爆改车间车间主任共享代码不可商用
* 转发需取得主任同意并备注出处
* 关注"爆改车间"微信公众号获取更多资源
*/

#include <RCSwitch.h>    //射频模块控制库 从IDE的库管理中直接下载
#include <EEPROM.h>  

RCSwitch mySwitch = RCSwitch();

#define BLINKER_WIFI
#define BLINKER_MIOT_OUTLET
//#define BLINKER_ESP_SMARTCONFIG


#include <Blinker.h>
char auth[] = "fbc79f6b7295";     //key
char ssid[] = "iPhone";     //ssid
char pswd[] = "11111111";     //password


BlinkerButton ButtonSW("sw");  //发送遥控信号的统一按键的数据键名
BlinkerButton ButtonSW433("sw433");
BlinkerButton ButtonRead("read");   //学习开关的数据键名
BlinkerText Textcode("code");  //文件显示的数据键名
bool abc=0;
bool stu = 0;
char code[30];

void button_SW_callback(const String & state)   //发射数据按键通过自定承载内容发送信号值
{
          mySwitch.setPulseLength(184);
          BLINKER_LOG("get button state: ", state);
          mySwitch.send(state.toInt(), 24);
          delay(1000);
}
//void button_SW433_callback(const String & state1)   //发射数据按键通过自定承载内容发送信号值
//{
//          mySwitch.setPulseLength(350);
//          BLINKER_LOG("get button state1: ", state1);
//          mySwitch.send(state1.toInt(), 24);
//          delay(1000);
//}

void button_Read_callback(const String & state){
    if (state == BLINKER_CMD_ON) {
        BLINKER_LOG("Toggle on!");
        ButtonRead.print("on");
        stu = 1;
    }
    else if (state == BLINKER_CMD_OFF) {
        BLINKER_LOG("Toggle off!");
        ButtonRead.print("off");
        stu = 0;
    }
    Serial.print(stu);
  
}

void put_code(int a,String c){    //写eeprom函数 参数1:地址 参数2:内容
  EEPROM.begin(4096);
  EEPROM.put(a, c.length());
  for (int i = 0; i < c.length(); i++){
    EEPROM.put(a + 1 + i, c[i]);
  }
  EEPROM.commit();
  EEPROM.end();
}

String get_code(int a){      //读eeprom函数  参数:地址
  EEPROM.begin(4096);
  String c = "";
  for (int i = 0; i < EEPROM.read(a); i++){
    c += char(EEPROM.read(a + 1 + i));
  }
  return c;
  EEPROM.end();
}

void dataRead(const String & data)
{

    BLINKER_LOG("Blinker readString: ", data); //通过调试窗口发送要存储的数据
    String d="";
    if(data.indexOf("ON") != -1){            //如果"ON"开头 在3000地址存储开信号
      put_code(3000,data.substring(2));
      d=get_code(3000);
    }else if(data.indexOf("OFF") != -1){    //如果"OFF"开头 在3100地址存储关信号
      put_code(3100,data.substring(3));
      d=get_code(3100);
    }
        
    BLINKER_LOG("存储数据:", d);
    Blinker.print("存储数据:", d);

}

void heartbeat()
{

}

//void miotPowerState(const String & state)
//{
//    BLINKER_LOG("need set power state: ", state);
//
//    if (state == BLINKER_CMD_ON) {
//        digitalWrite(LED_BUILTIN, HIGH);
//
//        BlinkerMIOT.powerState("on");
//        BlinkerMIOT.print();
//        String c=get_code(3000);
//        mySwitch.send(c.toInt(), 24);
//        BLINKER_LOG("发射数据:", c);
//        Blinker.print("发射数据:", c);
//
//    }
//    else if (state == BLINKER_CMD_OFF) {
//        digitalWrite(LED_BUILTIN, LOW);
//
//        BlinkerMIOT.powerState("off");
//        BlinkerMIOT.print();
//        String c=get_code(3100);
//        mySwitch.send(c.toInt(), 24);
//        BLINKER_LOG("发射数据:", c);
//        Blinker.print("发射数据:", c);
//
//    }
//}

void setup()
{
    Serial.begin(115200);
    mySwitch.enableTransmit(0);   //定义433发射模块的接口位D0
    mySwitch.enableReceive(2);
//    if(abc==0)
//  {
//   mySwitch.setPulseLength(184);
//   
//  }
//    else if (abc==1)
//  {
//  mySwitch.setPulseLength(350);
//  
//  }
   
    Blinker.begin(auth, ssid, pswd);   //定义433接受模块的接口位D2
    BLINKER_DEBUG.stream(Serial);
   
    pinMode(2, INPUT_PULLUP);
   
   
   // BlinkerMIOT.attachPowerState(miotPowerState);
    Blinker.attachData(dataRead);
    ButtonSW.attach(button_SW_callback);
    ButtonSW433.attach(button_SW_callback);
    ButtonRead.attach(button_Read_callback);
   
}

void loop()
{
    Blinker.run();
    //Blinker.delay(200);
    if (stu == 1){
      if (mySwitch.available()) {
        Serial.print("Received ");
        Serial.print( mySwitch.getReceivedValue() );
        Serial.print(" / ");
        Serial.print( mySwitch.getReceivedBitlength() );
        Textcode.print(mySwitch.getReceivedValue(), mySwitch.getReceivedBitlength());
        Serial.print("bit ");
        Serial.print("Protocol: ");
        Serial.println( mySwitch.getReceivedProtocol() );
        mySwitch.resetAvailable();

      }
    }

}
发表于 2021-9-25 18:31 | 显示全部楼层
直接解出来24bit不就行了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 23:50 , Processed in 0.078045 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表