极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13305|回复: 3

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

[复制链接]
发表于 2016-3-30 11:14:11 | 显示全部楼层 |阅读模式
近日买了一套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 电源负极
*/

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 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();
  }
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-11 09:06:26 | 显示全部楼层
@曾木升,谢谢指导!今天晚上回家再试试。

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

使用道具 举报

 楼主| 发表于 2016-4-11 22:11:00 | 显示全部楼层
@曾木升,谢谢指导!晚上试用,基本可以。实现单键"开"与"关",但比较容易错动作,效果有点不够爽快!
摸索一会,取消 state1 = !state1;逻辑关系,修改后采用单键仅"开"而不"关",再用OFF键统一"关",这样比较爽快.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 17:25 , Processed in 0.049021 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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