遥控摇头风扇——Arduino

本次学习内容

1、认识并了解舵机的基本原理
2、舵机的接线与编程控制
3、遥控摇头换挡风扇程序设计

舵机

舵机,其工作过程是把所接收到的电信号转换成电动机轴上的角位移或角速度输出,适用于那些需要角度不断变化并可以保持的控制系统。

根据转动范围,舵机又可分为180度舵机和360度舵机。
在这里插入图片描述

舵机的接线

引脚定义:
棕色线—— GND
红色线—— 5V
橙色线——信号线
在这里插入图片描述

摇头风扇接线

在这里插入图片描述

舵机缓慢地循环转动

在这里插入图片描述

// 引入Servo库,用于控制舵机动作
#include <Servo.h>

// 创建一个名为servo_2的舵机对象,连接到第2个数字引脚(通常GPIO 2)
Servo servo_2;

// 函数setup() 初始化舵机
void setup() {
   
  servo_2.attach(2); // 舵机连接到指定引脚,并设置其工作范围
}

// 主循环函数loop()
void loop() {
   
  // 一个完整的周期运动,从0度开始顺时针旋转
  for (int i = 0; i <= 180; i = i + 1) {
    // 遍历角度范围,每次加1度
    servo_2.write(i); // 设置舵机当前的角度为i度
    delay(5); // 延迟5毫秒,以便舵机有足够的时间响应
  }

  
智能温感风扇 基础部分 : 1、 采集当前温度, 并且 通过 液晶或者 数码管 等方式显示出来 温度值 。 2、 通过 按键 或者其他外设 的方式输入能控制风扇转速 的信号 (转速 等级 0~50 ); 转速等级也可以显示在液晶屏或数码管上。 扩展 部分: 1、 智能控制模式一:够根据当前温度自动调节不同的转速,其中 30 摄氏度 时转速为零, 80 摄氏度时转速为最高。当温达到 摄氏度时转速为最高。当温达到 30 摄氏度时,蜂鸣器发 摄氏度时,蜂鸣器发 出一声警报。当温度达到 50 摄氏度时,蜂鸣器发出两声报警 摄氏度时,蜂鸣器发出两声报警 。当温度高于 80 摄氏度时,蜂鸣器发出三声警报并且风扇停止转动。 摄氏度时,蜂鸣器发出三声警报并且风扇停止转动。 2、 智能 控制模式二 :通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。
### Arduino Uno 红外遥控摇头风扇代码实现 以下是基于Arduino Uno的红外遥控摇头风扇的代码示例。该代码实现了通过红外遥控器发送特定编码,控制风扇摇头功能的开启与关闭。 #### 代码说明 1. 使用`IRremote.h`库来处理红外信号的接收和解析。 2. 风扇摇头功能由两个方向电机模拟,分别对应正向旋转和反向旋转。 3. 当接收到指定的红外编码时,启动或停止风扇摇头功能。 ```cpp #include <IRremote.h> // 引入红外遥控库 // 定义红外接收端口为D2 const int RECV_PIN = 2; IRrecv irrecv(RECV_PIN); // 创建红外接收对象 decode_results results; // 存储解码后的红外数据 // 定义风扇电机控制引脚 const int MOTOR_AIN1 = 9; // 左侧电机控制 (正转) const int MOTOR_BIN1 = 10; // 右侧电机控制 (反转) bool fanSwingEnabled = false; // 是否启用摇头功能标志位 void setup() { Serial.begin(9600); pinMode(MOTOR_AIN1, OUTPUT); pinMode(MOTOR_BIN1, OUTPUT); irrecv.enableIRIn(); // 启动红外接收 } void loop() { if (irrecv.decode(&results)) { // 如果检测到红外信号 unsigned long value = results.value; if (value == 0xFFA25D) { // 假设此编码用于控制摇头功能开关 fanSwingEnabled = !fanSwingEnabled; // 切换摇头状态 if (fanSwingEnabled) { Serial.println("Fan Swing Enabled"); } else { Serial.println("Fan Swing Disabled"); } } irrecv.resume(); // 继续接收下一个红外信号 } controlFanSwing(fanSwingEnabled); // 控制风扇摇头逻辑 } void controlFanSwing(bool enable) { if (enable) { digitalWrite(MOTOR_AIN1, HIGH); // 正转使能 digitalWrite(MOTOR_BIN1, LOW); // 反转禁用 delay(1000); // 转动一段时间 digitalWrite(MOTOR_AIN1, LOW); // 正转禁用 digitalWrite(MOTOR_BIN1, HIGH); // 反转使能 delay(1000); // 转动一段时间 } else { digitalWrite(MOTOR_AIN1, LOW); // 关闭所有电机 digitalWrite(MOTOR_BIN1, LOW); } } ``` --- ### 功能解释 1. **红外信号接收**:通过`RECV_PIN`引脚捕获红外信号并将其解码为十六进制值[^2]。 2. **风扇摇头控制**:利用PWM信号驱动电机转动,模拟风扇左右摆动的效果[^3]。 3. **状态切换**:当接收到预定义的红外编码(如`0xFFA25D`),改变风扇摇头的状态(开/关)。 --- ### 注意事项 - 确保已安装`IRremote`库[^1]。 - 根据实际使用的红外遥控器调整编码值(可通过串口打印调试获取具体编码)。 - PWM引脚的选择需遵循Arduino Uno的支持情况,例如本例中使用了支持`analogWrite()`的第9和第10引脚[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌你一颗小芯芯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值