433M无线接收模块控制LED问题
本帖最后由 cy289 于 2016-12-23 12:13 编辑脚位及使用说明:
1 GND 电源负极
2 DATA 数据输出(与Mega2560的2口相接)
3 EN 控制引脚,低电平为使能,高电平进入低功耗模式,可用IO口控制。(本人菜鸟这个脚不知道怎么用)
4 VCC 电源正极
http://image.geek-workshop.com/album/201612/23/100217mo0riie21jeaade0.jpg
http://image.geek-workshop.com/album/201612/23/100228x8uchct5ltyuuocd.jpg
下面这个代码 问题是接收不到信号
假设遥控器代码值:
A:2868360B:2868356
C:2868354D:2868355
#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://按键A,红灯
{ state1 = !state1;
digitalWrite(IN1, state1);
break;
}
case 1621380://按键B,绿灯
{
state2 = !state2;
digitalWrite(IN2, state2);
break;
}
case 1621378: //按键C,黄灯
{
state3 = !state3;
digitalWrite(IN3, state3);
}
break;
}
}
mySwitch.resetAvailable();
}
} 这个应该就是一个收到无线信号然后控制一下红蓝绿灯? 这个应该就是一个收到无线信号然后控制一下红蓝绿灯? 兄弟,能用433M无线接收模块控制LED必须完成3件事:
1)硬件接线正确,正常供电。一般按厂家提供资料可以了
这是我的接线(仅参考):
2)测出遥控器的代码。当然自己编制出来的码就无需测量,但如果您自己假设遥控器代码值:
A:2868360B:2868356
C:2868354D:2868355
编译后不能接受到的。
下面程序我用的也可以!测量出来后再填到你接受的程序里,也可以用库里例程里的程序。
参考:
//接收端代码
#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 == '1')
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}
if(value == '5')
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
}
}
mySwitch.resetAvailable();
}
}
//使用本程序,接上315M,433M无线电模块,使用电脑COM串行口,可测量出315M,433M无线电遥控器的发射出的代码值。
/*脚位及使用说明:
1 ANT 接天线端
2 VCC 电源正极
3、4 DATA 数据输出(其中3、4一脚与Mega2560的2口相接)
5 GND 电源负极
*/
3)接收程序正确,这样编译后一般能工作的。
您的程序编译是正常的,但不正常工作,估计您的程序:if(value =1621384) //按A键,LED1亮。 value =1621384 编码不是您实际用的遥控器编码,当然没有反应动作了!
如果是商品的遥控器,必须进行第2步骤的测量代码!
yuqingshan 发表于 2016-12-23 16:31
兄弟,能用433M无线接收模块控制LED必须完成3件事:
1)硬件接线正确,正常供电。一般按厂家提供资料可 ...
问题是我这个模块和你那个模块不一样啊不知道EN脚怎么使用接不接 cy289 发表于 2016-12-24 03:24
问题是我这个模块和你那个模块不一样啊不知道EN脚怎么使用接不接
en从字面意思就是两个模式,高电平是低功耗模式,低功耗应该就是功耗大点的模式,如果需要考虑待机功率一类的,就需要进行编程,如果就是实验就干脆拉低算了! 那在我这个程序的基础上怎么修改呢?
页:
[1]