遥控摇头风扇——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毫秒,以便舵机有足够的时间响应
  }

  // 反向运动,从180度逆时针旋转回0度
  for (int i = 180; i >= 0; i = i - 1) { // 逆序遍历角度,每次减1度
    servo_2.write(i); // 再次设置角度
    delay(5); // 保持延时
  }
  
  // 这段代码实现了舵机的正反转运动,重复此过程
}

遥控摇头风扇

结合上次学习的红外遥控,制作一个可以遥控换挡,又可以遥控摇头
的风扇。
在这里插入图片描述

// 包含必要的库文件,servo用于控制舵机,IRremote用于接收红外遥控信号
#include <Servo.h> // Servo.h
#include <IRremote.h> // IRremote.h

// 定义全局变量,用于存储接收到的红外编码值
long ir_item;

// 初始化舵机连接到pin 8
Servo servo_8;
// 创建IR接收模块,连接到GPIO 0
IRrecv irrecv_0(0);
// 存储解码结果
decode_results results_0;

// 程序开始初始化阶段
void setup() {
  // 将舵机连接到指定引脚并启用接收模式
  servo_8.attach(8);
  // 启动红外接收模块的红外输入
  irrecv_0.enableIRIn();
}

// 主程序循环,持续监听红外遥控信号
void loop() {
  // 当接收到红外信号时进入判断
  if (irrecv_0.decode(&results_0)) {
    // 获取接收到的红外码对应的数值,并确定其类型
    ir_item = results_0.value;
    // 判断红外码属于哪种类型,并将类型名打印出来
    String type = "UNKNOWN";
    String typelist[] = {"UNKNOWN", "NEC", "SONY", "RC5", "RC6", "DISH", "SHARP", "PANASONIC", "JVC", "SANYO", "MITSUBISHI", "SAMSUNG", "LG", "WHYNTER"};
    if (results_0.decode_type >= 1 && results_0.decode_type <= 13) {
      type = typelist[results_0.decode_type];
    }
    Serial.println("IR TYPE: " + type + "  ");

    // 根据接收到的特定红外码执行相应的操作
    if (ir_item == "0xFFA25D") { // 如果是对应第一个编码
      analogWrite(5, 127); // 对数字引脚5设置模拟电压127
    }
    if (ir_item == "0xFF629D") { // 其他类似条件判断...
      analogWrite(5, 255); // 设置模拟电压255
    }
    if (ir_item == "0xFF9867") { // 另一种情况...
      analogWrite(5, 0); // 设置模拟电压0(关闭)
    }
    if (ir_item == "0xFFE21D") { // 更复杂的动作,如转动舵机
      for (int jiaodu = 0; jiaodu <= 180; jiaodu = jiaodu + 1) {
        servo_8.write(jiaodu);
        delay(10); // 每步延时10ms
      }
      for (int jiaodu = 180; jiaodu >= 0; jiaodu = jiaodu - 1) {
        servo_8.write(jiaodu);
        delay(10);
      }
    }
    // 无论成功与否,都继续监听
    irrecv_0.resume();
  } else {
    // 没有接收到红外信号时,让舵机返回到90度位置
    servo_8.write(90);
    delay(0); // 立即返回
  }
}

// 相关问题--
1. 这段代码主要用于做什么?
2. 遥控信号的编码是如何影响伺服电机的行为的?
3. 如果要添加更多类型的红外遥控指令,应该如何修改代码?
智能温感风扇 基础部分 : 1、 采集当前温度, 并且 通过 液晶或者 数码管 等方式显示出来 温度值 。 2、 通过 按键 或者其他外设 的方式输入能控制风扇转速 的信号 (转速 等级 0~50 ); 转速等级也可以显示在液晶屏或数码管上。 扩展 部分: 1、 智能控制模式一:够根据当前温度自动调节不同的转速,其中 30 摄氏度 时转速为零, 80 摄氏度时转速为最高。当温达到 摄氏度时转速为最高。当温达到 30 摄氏度时,蜂鸣器发 摄氏度时,蜂鸣器发 出一声警报。当温度达到 50 摄氏度时,蜂鸣器发出两声报警 摄氏度时,蜂鸣器发出两声报警 。当温度高于 80 摄氏度时,蜂鸣器发出三声警报并且风扇停止转动。 摄氏度时,蜂鸣器发出三声警报并且风扇停止转动。 2、 智能 控制模式二 :通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。 通过遥控器可远程制风扇的开关和改变转速等级。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

嵌你一颗小芯芯

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

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

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

打赏作者

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

抵扣说明:

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

余额充值