请教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: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();
}
}
@曾木升,谢谢指导!今天晚上回家再试试。
不过有点不太明白,红外线用的语句:if(value == '2868360') 而433M就用语句:if(value == 2868360) 看来是他们2个库是有意这样的,没有程例,还真是想破脑袋还找不到门,谢谢曾木升! @曾木升,谢谢指导!晚上试用,基本可以。实现单键"开"与"关",但比较容易错动作,效果有点不够爽快!
摸索一会,取消 state1 = !state1;逻辑关系,修改后采用单键仅"开"而不"关",再用OFF键统一"关",这样比较爽快.
页:
[1]