【雕爷学编程】Arduino动手做(155)---2262/2272四键无线遥控套件模块2

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

 

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百五十五:2262/2272四路无线遥控套件 M4非锁接收板 四键无线遥控器发射模块

 

四位无线遥控器及接收模块实验所需硬件清单

Arduino Uno开发板 X1

0.96寸OLED显示屏X1

杜邦线 若干(备了9条)

四位无线遥控器及接收模块X1

高电平触发有源蜂鸣器模块X1

IIC/I2C 1602 LCD液晶屏模块X1

LED发光二极管(绿、蓝色)X2

高电平触发单路5V继电器模块X1

四路高电平触发5V继电器模块X1

Proto Shield 原型扩展板(带mini面包板)X1

 

二、传感器模块实验所需软件平台
 
代码编程 Arduino IDE  (版本1.8.19
仿真编程 Linkboy     (版本V4.6.3
图形编程 Mind+  (版本 V1.7.0 RC2.0
以及编玩边学(线上平台https://ide.codepku.com/?type=Arduino
 
三、实验接线示意图
 

四位无线遥控器及接收模块的几个实验

1、程序一:串口打印四个遥控键值

(1)Arduino参考开源代码

 

/*

 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 

  实验一百五十五:2262/2272四路无线遥控套件 M4非锁接收板 四键无线遥控器发射模块

 程序一:串口打印四个遥控键值

*/



//定义M4非锁接收板的5个引脚

int D0 = 3;

int D1 = 4;

int D2 = 5;

int D3 = 6;

int VT = 7;

void setup() {

 Serial.begin(9600);//初始化串口

 Serial.println("四位无线遥控器及接收模块准备就绪");

 pinMode(VT, INPUT);//设置5个引脚均为输入

 pinMode(D0, INPUT);

 pinMode(D1, INPUT);

 pinMode(D2, INPUT);

 pinMode(D3, INPUT);

}

void loop() {

 if (digitalRead(VT)) {//读取引脚状态

  Serial.print("有效传输 ");//串口打印

  if (digitalRead(D2)) {

   Serial.print("  ");

   Serial.println("按下了一个A键");

  }

  if (digitalRead(D0)) {

   Serial.print("  ");

   Serial.println("按下了一个B键");

  }

  if (digitalRead(D3)) {

   Serial.print("  ");

   Serial.println("按下了一个C键");

  }

  if (digitalRead(D1)) {

   Serial.print("  ");

   Serial.println("按下了一个D键");

  }

 }

 delay(200); //延时200毫秒

}

  

(2)实验串口返回情况

 

(3)实验场景图

 

程序二:无线遥控按下与松开

(1)实验开源仿真编程(Linkboy V4.63)

 

(2)实验场景图

 

程序三:遥控控制RGB及绿色四种颜色的LED灯

(1)Arduino参考开源代码

 

/*

 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

 实验一百五十五:2262/2272四路无线遥控套件 M4非锁接收板 四键无线遥控器发射模块

 程序五:遥控控制RGB及绿色四种颜色的LED灯

*/



//定义PT2272接收模块的管脚

int D0, D2, D3, D1, VT; //变量 D1 D2 D3 D4 VT 用于获取从数字 PIN 读取的值

void setup() {

 pinMode(2, INPUT);  // 设置数字 PIN 2 3 4 5 6 作为输入

 pinMode(3, INPUT);

 pinMode(4, INPUT);

 pinMode(5, INPUT);

 pinMode(6, INPUT);

 pinMode(7, OUTPUT);  // 设置数字 PIN 7 8 9 10 13 作为输出

 pinMode(8, OUTPUT);

 pinMode(9, OUTPUT);

 pinMode(10, OUTPUT);

 pinMode(13, OUTPUT);

}

void loop() {

 VT = digitalRead(2); // 读取数字 PIN 2 3 4 5 6 并将其存储在变量 VT D1 D2 D3 D4

 D1 = digitalRead(3);

 D2 = digitalRead(4);

 D3 = digitalRead(5);

 D0 = digitalRead(6);

 if (VT == HIGH) { //如果 VT 为 5V 或 HIGH,让 Digital PIN 13 为 5V(HIGH)

  digitalWrite(13, HIGH);

 } else {     //如果 VT 不等于 5V(HIGH) 让 Digital PIN 13 为 0V(LOW)

  digitalWrite(13, LOW);

 }

  

 if (D1 == HIGH) {

  digitalWrite(7, HIGH);

 } else {

  digitalWrite(7, LOW);

 }

 if (D2 == HIGH) {

  digitalWrite(8, HIGH);

 } else {

  digitalWrite(8, LOW);

 }

 if (D3 == HIGH) {

  digitalWrite(9, HIGH);

 } else {

  digitalWrite(9, LOW);

 }

 if (D0 == HIGH) {

  digitalWrite(10, HIGH);

 } else {

  digitalWrite(10, LOW);

 }

}

  

(2)实验场景图

 

 

程序四:无线遥控大灯自动计时亮灭(通过继电器控制)

(1)实验开源仿真编程(Linkboy V4.63)

 

(2)实验场景图

 

程序五:使用继电器控制220V家用电灯(四位继电器)

(1)实验接线示意图

 

/*

 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

 实验一百五十五:2262/2272四路无线遥控套件 M4非锁接收板 四键无线遥控器发射模块

 程序五:使用继电器控制220V家用电灯(四位继电器)

*/



//定义输入引脚

#define in1 3

#define in2 4

#define in3 5

#define in4 6

//定义继电器引脚

#define relay1 8

#define relay2 9

#define relay3 10

#define relay4 11

void setup() {

 Serial.begin(9600);

 pinMode(relay1, OUTPUT);//设置连接继电器引脚为输出

 pinMode(relay2, OUTPUT);

 pinMode(relay3, OUTPUT);

 pinMode(relay4, OUTPUT);

 digitalWrite(relay1,LOW);//下拉继电器引脚为为低电平

 digitalWrite(relay2,LOW);

 digitalWrite(relay3,LOW);

 digitalWrite(relay4,LOW);

}

void loop() {

 if (digitalRead(in1) == HIGH) {

  while (digitalRead(in1) == HIGH) {

   delay(10);

  }

  Serial.println("1");

  digitalWrite(relay1,!digitalRead(relay1));

 }

 else if (digitalRead(in2) == HIGH) {

  while (digitalRead(in2) == HIGH) {

   delay(10);

  }

  Serial.println("21");

  digitalWrite(relay2,!digitalRead(relay2));

 }

 else if (digitalRead(in3) == HIGH) {

  while (digitalRead(in3) == HIGH) {

   delay(10);

  }

  Serial.println("3");

  digitalWrite(relay3,!digitalRead(relay3));

 }

 else if (digitalRead(in4) == HIGH) {

  while (digitalRead(in4) == HIGH) {

   delay(10);

  }

  Serial.println("4");

  digitalWrite(relay4,!digitalRead(relay4));

 }

}

  

(3)实验串口返回情况

 

(4)实验场景图

 

PT2262是一个遥控编码器配对PT2272 采用 CMOS 技术。它对数据进行编码并将地址引脚转换为适合的串行编码波形用于射频或红外调制。 PT2262最多有12个三态地址引脚位提供高达 531,441 (或312) 地址码;从而,大大减少任何代码冲突和未经授权的代码扫描可能性。内部功能框图如下。

 

 

相关技术资料

https://datasheet.lcsc.com/szlcsc/PT2262_C16390.pdf

 

PT2272是一个遥控解码器配对PT2262 采用 CMOS 技术。它有12位三态地址引脚提供最多 531,441(或 312)地址代码; 从而大大减少任何代码冲突和未经授权的代码扫描可能性。 PT2272 有多种选择适合每个应用程序需要:可变数量的数据输出引脚、锁存器或瞬时输出类型。内部功能框图如下。

 

 

相关技术资料

http://www.princeton.com.tw/Portals/0/Product/PT2272.pdf

 

posted @ 2023-07-08 07:20  行者花雕  阅读(60)  评论(0编辑  收藏  举报