yuqingshan 发表于 2016-3-30 11:14:11

请教433M无线遥控器控制LED问题

近日买了一套433M无线遥在使用。手头有Mega2560、433M接收模块,想折腾一番,
采用MEGA2560串行口COM测量遥控器(433M),显示代码值:

A:        2868360
B:        2868356
C:        2868354
D:        2868355
Time:        2868358
scene:        2868355
ON:        2868364
OFF:        2868357




现在想用同一套遥控器控制LED灯玩玩,网上下载程序,结果LED灯不亮,串行口绿灯闪,串行监视显示代码值。
请教哪为大侠主导一下,谢谢!

程序:
//接收端代码
//控制4LED 程序
#include "RCSwitch.h"
int IN1 = 8;
int IN2 = 9;
int IN3 = 10;
int IN4 = 11;
RCSwitch mySwitch = RCSwitch();

void setup() {
Serial.begin(9600);
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
mySwitch.enableReceive(0);// Receiver on inerrupt 0 => that is pin #2
}

void loop()
{
if (mySwitch.available())
{
   char value = mySwitch.getReceivedValue();

   if (value != '0') {
          Serial.println(mySwitch.getReceivedValue());
          if(value == '2868360')       //按A键,LED1亮
      {
      digitalWrite(IN1,HIGH);
      //digitalWrite(IN2,HIGH);
      //digitalWrite(IN3,HIGH);
      //digitalWrite(IN4,HIGH);
      delay(100);
      }
      //if(value == '5')
      {
      //digitalWrite(IN1,LOW);
      //digitalWrite(IN2,LOW);
      //digitalWrite(IN3,LOW);
      //digitalWrite(IN4,LOW);
      }
   }
    mySwitch.resetAvailable();
}
}

/*脚位及使用说明:
1 ANT 接天线端
2 VCC 电源正极
3、4 DATA 数据输出(其中3、4一脚与Mega2560的2口相接)
5 GND 电源负极
*/

曾木升 发表于 2016-4-10 22:22:58

本帖最后由 曾木升 于 2016-4-10 22:42 编辑

只要把 if(value == '2868360')   改成if(value =2868360)就可,已经亲自测试成功下面是我的 程序
#include "RCSwitch.h"
int IN1 = 13;
int IN2 = 9;
int IN3 = 10;
int IN4 = 11;
RCSwitch mySwitch = RCSwitch();
volatile int state1 = LOW;      // 定义默认输入状态
volatile int state2 = LOW;      // 定义默认输入状态
volatile int state3 = LOW;      // 定义默认输入状态
void setup() {
Serial.begin(9600);
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
mySwitch.enableReceive(0);// Receiver on inerrupt 0 => that is pin #2
}

void loop()
{
if (mySwitch.available())
{
   char value = mySwitch.getReceivedValue();

   if (value != '0') {
          Serial.println(mySwitch.getReceivedValue());
//         if(value =1621384)       //按A键,LED1亮
//      {
//      digitalWrite(IN1,HIGH);

//      delay(100);
//      }
//      
         switch (value)
   {
         case 1621384://按键1,红灯
      {    state1 = !state1;
            digitalWrite(IN1, state1);
                        
            break;
      }
         case 1621380://按键2,绿灯
      {
            state2 = !state2;
            digitalWrite(IN2, state2);         
         
            break;   
      }
         case 1621378:   //按键3,黄灯
      {
         state3 = !state3;
            digitalWrite(IN3, state3);
          }
          break;
}
   }
    mySwitch.resetAvailable();
}
}

yuqingshan 发表于 2016-4-11 09:06:26

@曾木升,谢谢指导!今天晚上回家再试试。

不过有点不太明白,红外线用的语句:if(value == '2868360') 而433M就用语句:if(value == 2868360) 看来是他们2个库是有意这样的,没有程例,还真是想破脑袋还找不到门,谢谢曾木升!

yuqingshan 发表于 2016-4-11 22:11:00

@曾木升,谢谢指导!晚上试用,基本可以。实现单键"开"与"关",但比较容易错动作,效果有点不够爽快!
摸索一会,取消 state1 = !state1;逻辑关系,修改后采用单键仅"开"而不"关",再用OFF键统一"关",这样比较爽快.
页: [1]
查看完整版本: 请教433M无线遥控器控制LED问题