问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Arduino自制手持小风扇项目

创作时间:
作者:
@小白创作中心

Arduino自制手持小风扇项目

引用
CSDN
1.
https://blog.csdn.net/m0_60012883/article/details/141369144

本文将介绍如何使用Arduino制作一个可以调节风速的手持小风扇。通过按键控制,可以实现风扇的开关和多档风速调节。

1.1 介绍

实验功能说明:

  1. 按一下按键小风扇开启,再按一下关闭。
  2. 按一下按键小风扇一档风速,再按一下二挡,依次三挡…关闭。

按键模块说明:按下S输出低电平
电机驱动一体模块说明:VG引脚供电,AB是信号控制引脚,PWM可以调速
正转控制:B低电平,A高电平
反转控制:B高电平,A低电平

1.2 相关资料

链接:https://sourl.cn/7FXAif

1.3 实验组件

1.4模块接线图

1.5 实验代码

程序1

/*
  实验:自制手持小风扇
  功能:按一下按键小风扇开,再按一下关
  https://sourl.cn/7FXAif
*/
#define INB 9  //定义电机B端口
#define INA 8  //定义电机A端口
#define key 3  //定义按键D3端口
unsigned char val = 0;
unsigned char i = 0;
unsigned char key_val = 0;
void setup() {
  Serial.begin(9600);
  pinMode(INB, OUTPUT);
  pinMode(INA, OUTPUT);
  pinMode(key, INPUT);
}
void loop() {
  Serial.print(digitalRead(key));
  val = digitalRead(key);//获取按键状态
  if (!val)             //按键有抖动,销抖处理
  {
    delay(25);
    if (!val)
    {
      key_val++;         //按一下key_val加1 
      if(key_val>=2)
      key_val=0;        //再按一下清零
    }
  }
  switch(key_val)
  {
    case 0:      
    analogWrite(INB, 0);  //停止
    analogWrite(INA, 0);break;
    case 1:      
    analogWrite(INB, 0);  //转动
    analogWrite(INA, 255);break;
    }
}

程序2

/*
  实验:自制手持小风扇
  功能:按一下按键小风扇一档风速,再按一下二挡,依次三挡....关闭。
  https://sourl.cn/7FXAif
*/
#define INB 9  //定义电机B端口
#define INA 8  //定义电机A端口
#define key 3  //定义按键D3端口
unsigned char val = 0;
unsigned char i = 0;
unsigned char key_val = 0;
void setup() {
  Serial.begin(9600);
  pinMode(INB, OUTPUT);
  pinMode(INA, OUTPUT);
  pinMode(key, INPUT);
}
void loop() {
  Serial.print(digitalRead(key));
  val = digitalRead(key);//获取按键状态
  if (!val)             //按键有抖动,销抖处理
  {
    delay(25);
    if (!val)
    {
      key_val++;         //按一下key_val加1
      if (key_val >= 4)
        key_val = 0;      //再按一下清零
    }
  }
  switch (key_val)
  {
    case 0:
      analogWrite(INB, 0);  //停止
      analogWrite(INA, 0); break;
    case 1:
      analogWrite(INB, 0);  //一档
      analogWrite(INA, 100); break;
    case 2:
      analogWrite(INB, 0);  //二挡
      analogWrite(INA, 180); break;
    case 3:
      analogWrite(INB, 0);  //三挡
      analogWrite(INA, 255); break;
  }
}

1.6实验结果

将上述程序上传到Arduino UNO开发板之后:

  • 功能(程序1):按一下按键小风扇开启,再按一下关闭。
  • 功能(程序2):按一下按键小风扇一档风速,再按一下二挡,依次三挡…关闭。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号