时隔多年,重拾Arduino,先拿直流电机风扇找一下手感。配套的东西如下图所示:直流电机、控制板、风扇、架子。

  装好之后的效果如下图所示。

  本文参照参考文献中的示例代码进行测试。参考文献中的代码主要通过按钮控制风扇的不同转速,本文中对代码进行了简化,为了测试程序的有效性,先在代码中写死转速,代码如下所示:


const int motorIn1=9;
const int motorIn2=10;#define rank 150void setup() {// put your setup code here, to run once:pinMode(motorIn1,OUTPUT);pinMode(motorIn2,OUTPUT);Serial.begin(9600);
}void loop() {// put your main code here, to run repeatedly:clockwise(rank);
}void clockwise(int Speed)
{analogWrite(motorIn1,0);analogWrite(motorIn2,Speed);
}

  程序效果如下所示,代码上传到到Arduino后,风扇即开始转动。

  为了能控制转速,对上述代码进行改造,可以通过串口与Arduino进行通信,设置电机的转速。详细的代码如下所示。需要注意的是,使用Arduino IDE中的串口监视器进行通信时,需要设置成没有结束符模式。

#define SPEED_COMMAND "SPD"
#define NUM_LENGTH 3
#define SPLIT_CHAR ';'#define RECEIVE_STAGE 0   // 接收命令阶段
#define EXECUTE_STAGE 1   // 执行命令阶段
#define OBSERVE_STAGE 2   // 观察阶段#define MAX_CHARS 49char buffer[MAX_CHARS + 1];
int charIndex = 0;int currentStage;
int curSpeed=0;const int motorIn1=9;
const int motorIn2=10;#define rank 150void setup() {// put your setup code here, to run once:pinMode(motorIn1,OUTPUT);pinMode(motorIn2,OUTPUT);Serial.begin(9600);currentStage = RECEIVE_STAGE;Serial.println("Ready");
}void loop() {// put your main code here, to run repeatedly:switch (currentStage){case RECEIVE_STAGE:ReceiveCommand();break;case EXECUTE_STAGE:      if (Serial.available() > 0){currentStage = RECEIVE_STAGE;}else if (strncmp(buffer, SPEED_COMMAND, NUM_LENGTH) == 0){char* pInt = &buffer[NUM_LENGTH + 1];curSpeed=atoi(pInt);currentStage = OBSERVE_STAGE;        }break;case OBSERVE_STAGE:      if (Serial.available() > 0){currentStage = RECEIVE_STAGE;}else{clockwise(curSpeed);}      break;}
}void clockwise(int Speed)
{analogWrite(motorIn1,0);analogWrite(motorIn2,Speed);
}void ReceiveCommand()
{if (Serial.available() > 0){char ch = Serial.read();if ((charIndex < MAX_CHARS) && (ch != SPLIT_CHAR)){buffer[charIndex++] = ch;}else{buffer[charIndex] = 0;charIndex = 0;currentStage = EXECUTE_STAGE;Serial.print("received command is ");Serial.println(buffer);}}
}

  本文主要是初步介绍直流电机风扇的驱动方式,如果更深入的控制直流电机,可以在百度中自行搜索了解。

参考文献:
[1]《基于传感器开发套件玩转Arduino编程》

Arduino驱动直流电机风扇相关推荐

  1. Arduino应用——PWM控制直流电机风扇

    Arduino应用--PWM控制直流电机风扇 PWM原理 实验器件 功能描述 接线图/原理图 实现代码 结果 最近在使用arduino UNO开发板完成课程小作业.其中一个要求设计一个电风扇控制系统, ...

  2. 玩转电机驱动——A4950闭环驱动直流减速电机(Arduino)

    玩转电机驱动--A4950闭环驱动直流减速电机(Arduino) 文章目录 玩转电机驱动--A4950闭环驱动直流减速电机(Arduino) 前言 一.PWM信号 二.PID控制简介 三.增量式(速度 ...

  3. ESP32设备驱动-L9110直流电机风扇传感器模块

    L9110直流电机风扇传感器模块 文章目录 L9110直流电机风扇传感器模块 1.L9110介绍 2.硬件准备 3.软件准备 4.驱动实现 1.L9110介绍 L9110是一款ASIC器件控制和驱动电 ...

  4. ESP8266-Arduino编程实例-L9110直流电机风扇传感器模块

    L9110直流电机风扇传感器模块 1.L9110介绍 L9110是一款ASIC器件控制和驱动电机设计,将两通道推挽功放分立电路集成到单片IC中,降低外围器件成本,提高整体可靠性.本芯片有两路TTL/C ...

  5. arduino 步进电机驱动库_一文看懂arduino驱动uln2003操作步进电机的方法

    arduino驱动uln2003操作步进电机的方法 1.网上买的步进电机,很多接线顺序都不对.经过不懈努力查资料,终于找到了能用的接线方式: 电机上的12345针脚,对应着接线端子的42135. 2. ...

  6. Arduino驱动LM35温度传感器自制温度计

    Arduino驱动LM35温度传感器自制温度计 前言 一.硬件部分 二.电气参数 三.原理说明 四.实验操作 1.接线 2.程序驱动 五.实验结果 六.总结 前言 现实生活中的许多场景都需要测量温度. ...

  7. arduinowin7_Win7系统下Arduino驱动安装失败的解决方法

    近日有不少win7系统用户反映说碰到这样一个现象,就是在电脑中连接Arduino单片机的时候,就会提示Arduino驱动安装失败,遇到这样的问题要如何处理呢,针对这个情况,小编就给大家分享一下Win7 ...

  8. Arduino 驱动TM1638显示十位的共阳数码管

    Arduino 驱动TM1638显示十位的共阳数码管 二话不说先上图: 这个是电路图,下面我在上传TM1638的手册 哈哈太乱了先凑合着看吧!效果是实现了,画了板还没有发过来. 我也不多说什么了上代码 ...

  9. Arduino - 驱动HC-SR501 人体红外感应模块

    参考文章: Arduino - 驱动HC-SR501 人体红外感应模块 Arduino 使用人体红外感应模块 HC-SR501 代码如下: /* Arduino 驱动HC-SR501 人体红外感应模块 ...

最新文章

  1. mysql 书签查找_my-bookmark
  2. python基础学习[python编程从入门到实践读书笔记(连载三)]:django学习笔记web项目
  3. Windows® CE 系统中的同步机制
  4. js变量和java变量相等,js中变量和jsp中java代码中变量互相访问解决方案
  5. 【Codeforces】925A Stairs and Elevators【贪心】
  6. 安卓案例:闪烁满天星
  7. Spring源代码分析-Persist--JdbcTemplate
  8. fread返回值0 feof返回值为16 问题解决。
  9. Lua中ipairs和pairs的区别详解
  10. matlab:使用全局变量
  11. java 解析json数据流的几种方式
  12. cmos逻辑门传输延迟时间_【转载】CMOS与TTL电路的区别
  13. 苹果手机HTML页面滑动卡顿
  14. c语言中个各标点符号作用,C语言运算符和标点符号.xls
  15. 七彩背景(Background)
  16. C++之友元:是朋友(friend)也是破坏者
  17. Request对象的一般用法
  18. 上市企业高管背景研究——男、女性高管数据
  19. 咸鱼ZTMR实例—巡线入门
  20. 如何远程家里的linux服务器,如何远程控制家里的电脑或服务器?

热门文章

  1. Sybase roseha 双机(转)
  2. You need Perl 5.
  3. GitLab服务器安装完成之后;瓦力系统的安装(之一)
  4. 2015读过的书与看过的影视资料
  5. Word2003入门动画教程131:Word拼音指南的使用
  6. 数据分析师需要学什么?数据分析师需要掌握什么技能呢?
  7. 如何剪出一个圆形,保存出来还是圆形图片
  8. 树莓派4B openwrt wifi 提升速度
  9. 群晖搭建Blynk服务器 可开外网及改Mixly文件完美支持教程
  10. 笔记本计算机盖,怎么让笔记本盖子合上不待机-笔记本盖子合上 电脑继续运行的方法 - 河东软件园...