一、模拟输入输出

0x01、输入:

Arduino采用analogRead(analogInPin)函数读取0~5V的模拟信号,返回0~1023的整数
如:读入为500,那么测得电压为5×(500/1023) ≈ 2.44V

0x02、输出:

Arduino通过PWM波实现模拟电压输出
采用analogWrite(analogOutPin, val)函数输出模拟信号,val范围为0~255,对应输出0%~100%的占空比。
如:输出val=51,占空比为51/(255-0)×100%=20%,有效电压为5V×20%=1V

analogRead和analogWrite函数已经内部调用pinMode,无需外部调用

二、直流电机的控制

直流电机驱动器采用L298N双H桥驱动模块

0x01、模块接线图

0x02、直流电机驱动逻辑真值表

0x03、模块参数

1.双路H桥电机驱动,可以同时驱动两路直流电机或者1个4线两相式步进电机;

2.模块供电电压2V-10V;

3.信号端输入电压1.8-7V;

4.单路工作电流1.5A,峰值电流可达2.5A,低待机电流 (小于 0.1uA);

5.内置防共态导通电路,输入端悬空时,电机不会误动作;

6.内置带迟滞效应的过热保护电路 (TSD),无需担心电机堵转;

7.尺寸: 24.7*21*5mm (长宽高),超小体积,适合组装和车载;

8.安装孔直径:2 mm。

9.重量:5g

0x04、Arduino控制程序

const int analogOutPin1 = A0;
const int analogOutPin2 = A1;void setup() {
}void loop() {analogWrite(analogOutPin1, 255);analogWrite(analogOutPin2, 0);delay(3000);analogWrite(analogOutPin1, 0);analogWrite(analogOutPin2, 255);delay(3000);analogWrite(analogOutPin1, 255);analogWrite(analogOutPin2, 255);delay(3000);
}

A0接IN1、A1接IN2。程序功能为控制电机正转3秒,反转3秒,停止3秒如此循环。

二、舵机控制

0x01、控制原理

舵机本质上也是通过PWM波占空比控制,不过Arduino有封装好的Serve函数库,也自带了示例代码
此处引用一张网络上的函数说明图片,这篇文章对舵机控制也有很好的说明摘自
Arduino—舵机控制

用Arduino剖析PWM脉宽调制

0x02、注意事项

  • Arduino控制舵机接线注意共地、忘记共地会浪费很多不必要的时间
  • Arduino引脚不能直接给舵机供电,否则舵机电流过大会烧坏Arduino

0x03、Arduino舵机控制程序

这里就直接引用官方示例了,只是为了有个直观感受

示例程序1

#include <Servo.h>
Servo myservo;  // create servo object to control a servo
int potpin = 0;  // analog pin used to connect the potentiometer
int val;    // variable to read the value from the analog pinvoid setup() {myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}void loop() {val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023)val = map(val, 0, 1023, 0, 180);     // scale it to use it with the servo (value between 0 and 180)myservo.write(val);                  // sets the servo position according to the scaled valuedelay(15);                           // waits for the servo to get there
}

示例程序2

#include <Servo.h>
Servo myservo;  // create servo object to control a servo
int pos = 0;    // variable to store the servo positionvoid setup() {myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}void loop() {for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees// in steps of 1 degreemyservo.write(pos);              // tell servo to go to position in variable 'pos'delay(15);                       // waits 15ms for the servo to reach the position}for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degreesmyservo.write(pos);              // tell servo to go to position in variable 'pos'delay(15);                       // waits 15ms for the servo to reach the position}
}

【转载请注明出处: http://blog.csdn.net/leytton/article/details/79408845】
PS:如果本文对您有帮助,请点个赞让我知道哦~

Arduino教程 模拟输入输出以及电机和舵机控制相关推荐

  1. 交流电机数字控制系统_考虑故障特性模拟的虚拟电机系统及其控制

    因交流传动在现代工业中应用广泛,针对电机驱动电源的性能测试备受重视.基于此,浙江大学电气工程学院.浙江省电机系统智能控制与变流技术重点实验室(浙江大学).浙江理工大学信息学院的研究人员杨庆文.何绍民. ...

  2. 基于Arduino和AS608模块的指纹门禁锁--舵机控制

    网上刷到很多视频,看见很多和我一样的大学生自己用单片机给自己宿舍安装指纹锁,我们宿舍经常忘带钥匙,而且随身携带钥匙也很麻烦,所以我选择像网上的一样自己给自己做一个指纹锁,刚好实验室有3D打印机,也正好 ...

  3. Arduino教程汇总贴

    初识arduino    http://www.arduino.cn/thread-1083-1-1.html 关于Arduino及其周边配件的购买建议 http://www.arduino.cn/t ...

  4. Arduino教程——舵机的驱动

    普通舵机有3根线:GND(黑).VCC(红).Signal(黄),一般情况下,我们建议为舵机单独供电,此处实验为了图方便,用arduino为舵机供电. 实例 需要的器材: arduino控制器.舵机. ...

  5. Arduino教程三—舵机

    1)    说明 舵机转到固定角度 舵机0°到180°旋转 Servo库常用函数: Attach(接口)-设定舵机接口. Write(角度)-用于设定舵机旋转的角度,可设定范围0°-180°. Rea ...

  6. Ardino基础教程 19_舵机控制

    实验十九:舵机控制 舵机控制实验Servo库版本的代码参考如下链接:ArduinoCode19-舵机控制Servo库版本代码.ino 舵机是一种位置伺服的驱动器,主要是由外壳.电路板.无核心马达.齿轮 ...

  7. Arduino—舵机控制

    舵机是一种位置伺服的驱动器,主要是由外壳.电路板.无核心马达.齿轮与位置检测器所构成. 工作原理是由接收机或者单片机发出信号给舵机,其内部有一个基准电路,产生周期为20ms,宽度为1.5ms 的基准信 ...

  8. Arduino教程-09.L298N控制直流电机(避障小车)

    目录 3.1 电机 3.2 控制直流电机 PWM – 控制速度 H桥 – 控制转动方向 L298N 电机驱动芯片 技术规格 L298N 电机驱动器模块引脚排列 电源引脚 输出引脚 方向控制引脚 速度控 ...

  9. 对比电机和舵机中的PWM信号的作用

    卓老师您好,我是第十三届智能车队员.现在已经毕业,从事机器人相关专业学习,但是对于电机学的不是很好,卓大大能否出个教程: 关于pwm调速在电机上的具体实现过程,比如如何通过电压或者电流的调节来实现转速 ...

最新文章

  1. 强烈推荐16 款牛逼的 IDEA 插件,让你开发速度飞起来!
  2. 人事薪资管理系统V1.00功能简介(适用于工厂)c#.net+SQL Server2000
  3. 如何延长作用域链_通过实例理解javaScript中的this到底是什么和它的词法作用域...
  4. GitHub推出云端IDE,可在浏览器里使用VS Code了
  5. Java面试宝典2013版(11版块1000题)
  6. java 源码分析1 -String
  7. PS:学习:一:删除图片不想要的部分
  8. 四川农大2020计算机专业录取分数线,四川农业大学2020年美术类本科专业录取分数线...
  9. 前端轻松破解支付宝AR抢红包
  10. python爬虫之——爬取煎蛋网图片
  11. Linux - 部署node项目
  12. DAY-20 GAN模式崩溃的理论解释
  13. 眼球追踪技术 Unity+ HTC vive Pro + DroolonF1 (二)
  14. java实现微博_java实现的新浪微博分享代码实例
  15. oracle主键必须加分区字段,oracle分区表和主键关系
  16. 检测你的黑苹果系统主板是否支持原生NVRAM
  17. The class file xxx contains a signature 'xxx;' ill-formed at position 6 问题的解决
  18. 电脑拓展显示器软件显示不清晰问题
  19. 中国移动巴基斯坦公司用户数达1260万
  20. 中国残障人家庭伦理电影剧本《温暖新家》招募投资人

热门文章

  1. mysql 自定义函数 递归查找父节点
  2. NLP——常用工具汇总
  3. Android 使用定位功能的坑
  4. c语言电子表格复制数据错误循环冗余检查,数据错误、循环冗余检查、出现“数据错误”无法复制怎么解决?...
  5. easy ui treegrid使用
  6. 自定义kafka高效的protoStuff序列化
  7. (dp) 力扣309. 最佳买卖股票时机含冷冻期 思路
  8. VB为报表盖电子图章
  9. 左程云算法笔记总结-基础篇
  10. qpython3手机版turtle_有趣的Python turtle绘图