Arduino学习笔记~(1)
来源:互联网 发布:淘宝省钱网站 编辑:程序博客网 时间:2024/05/29 13:20
第一次的话,先总结一下所学的吧。首先是i/o口,通过引脚发送和接受电信号来传递信息,达到控制元件。这里分为数字信号与模拟信号,在Arduino uno板数字信号为0v和5v,模拟信号是0v至5v。模拟信号通过不同占空比的pwm波来实现变化。比较直观的是呼吸灯的例子,当输出的是数字信号时,变化是亮与灭,而当输出的是模拟信号时,灯就有一个明亮变化的过程。模拟信号比数字信号更容易达到一个控制的效果,比如呼吸灯,比如后面要提的舵机。【其实还有一些有关定时器、快速pwm波和相位pwm波的内容,但是感觉还没有掌握好…觉得放在以后的笔记中比较妥:)】
然后接触的是servo库,也就是到了和舵机有关的部分啦。我的第一感觉就是接触到了一个好好玩的东西,机器臂的转向控制啦,遥控车的方向控制啦,甚至螺旋桨方面(会不会转速不够?)都可以应用上去,加上其他几种电机的话就可以做出好多好玩的东西。【中途插一下:在网上看到了有个人的笔记,大意是记录原本质疑servo库不够精准、pwm波频率不可调控于是直接输出pwm波对舵机进行控制。后来他查源代码发现这些都是瞎操心…可以看出Arduino库还是很强大的:)…不过直接输出pwm波也可以在以后进行尝试】
百度得出以下信息:采用的是9g舵机。舵机的基准信号周期为20ms,宽度为1.5ms。舵机的工作电压是4.2v(也有说4.8v…)~6v,GND连GND,VCC连5V引脚,信号线连9号引脚。
以下是程序。
#include<Servo.h>
Servomyservo;
String comdata ="";
int i;
void setup() {
Serial.begin(9600);
myservo.attach(9);
}
void loop() {
int pos;
while (Serial.available() > 0)
{
comdata += char(Serial.read());
delay(2);
}
if (comdata.length() > 0)
{
i=comdata.toInt();//在此把comdata转化成INT型数值,以备后续使用
Serial.println(i);
comdata = "";// 必须在此把comdata设为空字符,否则会导致前后字符串叠加
}
for (pos = 0; pos <= i; pos += 1)
{
myservo.write(pos);
delay(15);
};
delay(1000);
}
恩…这里采用了异步串口来控制舵机。【记一下串口通信读入的是ASCLL码…当时不知道这一点废了好大功夫】for循环来改变参数,由于舵机转速不是很快,延时15ms来保证有足够时间使齿轮转动。
算是对servo库和i/o口的一个应用吧…熟练了一下舵机的控制。但我还没有做到的是电机在转过一个角度后就停下,等待下一个数据。目前我的思路有两个,一个是通过中断,一个是直接把程序放到setup里…都有不同程度的利弊…或许以后回过头来再解决这个问题吧。
【其实舵机的原理还是值得记一下的:接受单片机发出的信号将获得的偏置电压与电位器电压比较,获得电位差输出。通过电路板上ic判断转动方向,驱动马达转动。通过减速齿轮将动力传至摆臂,同时由位置检测器送回信号,判断是否到达定位。我想到了通过pwm波来控制角度,但是我没有想到位置检测器…】
这一次的笔记暂时先到这里了..接下来要记录得是A/D转换和中断的内容..然后在补一下前面内容留下的疑问或者探讨的地方..恩大概计划就这样~
- Arduino学习笔记~(1)
- Arduino学习笔记(1)
- Arduino学习笔记1
- arduino学习笔记1 - 什么是arduino?
- arduino 学习笔记(一)
- Arduino 学习笔记(二)
- Arduino学习笔记(2)
- Kienct与Arduino学习笔记(1) 基础知识之Arduino’Kinect‘Processing
- Arduino入门笔记(1)
- 《Arduino技术内幕》学习笔记(一)
- 单片机学习笔记(Arduino Uno r3)
- arduino学习笔记 一
- Arduino学习笔记
- Arduino学习笔记2--安装Arduino系统
- Arduino学习笔记—Arduino编程基础
- arduino学习笔记3 蜂鸣器
- arduino学习笔记17.12.6
- Arduino笔记(一)
- Redmine 插件安装
- LAMP 安装--随笔
- 关于Fragment嵌套Fragment并且使用tablayout的错误
- 性能优化系统学习(一):基础知识
- spark二次排序
- Arduino学习笔记~(1)
- jquery动态增减行
- 客户机通过xShell远程访问Ubuntu15.04/16.04LTS连接失败的解决方法
- 301. Remove Invalid Parentheses
- python3-操作SQLite、创建表、添加数据、查询数据
- 常见的 Git 命令:
- 第三期 Android Kernel 下载和编译 《手机就是开发板》
- Android ContentProvider 完全解析及简单DEMO
- 配置 LBaaS - 每天5分钟玩转 OpenStack(121)