Arduino 单板机入门学习记录
创作立场声明:本文记录介绍自己学习Arduino的初步过程,完全自创
折腾理由
最近有点空余时间,回想起小时候没啥玩的,能凑齐几个电灯柱电池就和不容易了,为了弥补确实,准备玩一玩电子小玩具,网上看了看,觉得Arduino是个很不错的玩具,其实是个功能强大的工具。树莓派一类其实也很强大,是一个完整的ARM平台linux系统了,之前玩过类似的板子不过是当成迷你电脑使用。这次是纯粹为了玩的简单,而且为了可以带小孩玩找点乐子,因此选择了更简单的Arduino单板机。
Arduino介绍
Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。由一个欧洲开发团队于2005年冬季开发。其成员包括Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis和Nicholas Zambetti等。
它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。
Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是通过 Arduino编程语言 (基于 Wiring)和Arduino开发环境(基于 Processing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信 (比如 Flash, Processing, MaxMSP)来实现。(以上文字来自百度百科。)
Arduino电路板设计使用各种微处理器和控制器。这些电路板配有一组数字和模拟I/O引脚,可以连接各种扩展板或面包板(屏蔽板)和其他电路。这些电路板具有串行通信接口,包括某些型号上的通用串行总线(USB),也用于从个人计算机加载程序。微控制器通常使用C/C++编程语言。除了使用传统的编译工具链之外,Arduino项目还提供了一个基于Processing语言项目的集成开发环境。
Arduino项目始于2003年,作为意大利伊夫雷亚地区伊夫雷亚交互设计研究所的学生项目,目的是为新手和专业人员提供一种低成本且简单的方法,以创建使用传感器与环境相互作用的设备执行器。适用于初学者爱好者的此类设备的常见示例包括简单机器人、恒温器和运动检测器。(以上文字来自维基百科。)
Arduino的来源应该是,创始者之一觉得当时的单板机都比价复杂不适合普通人使用,因此和一个电子设备工程师一拍即合,用市场上场用的单片机芯片开发了一个电路板,最重要的是做了一个简化的编程开发工具-Arduino IDE,使得使用控制Arduino变得简单易学,很容易上手。
Arduino功能
从功能上来说,Arduino和一般的单板机也没什么很大差别,主要是拥有多个GPIO引脚,可以编程控制引脚的输入输出,达到和外围设备通讯,控制外围设备的功能。
Arduino最大的特点是开源,硬件也是开源,软件也是开源,基本都不需要额外费用。因此在天朝也产生了大量的兼容产品和外围配件,价格相当给力。当然官方产品的价格也还可以不算天价。
下面是网的入门级学习产品,大多数人都是从UNO板子开始学起,淘宝正版官方产品标价138软妹币,兼容版本(山寨版本的悦耳名称)从10几元到几十元不等,可以说是相当给力,而且Arduino相当开放,这些兼容版本都能使用官方的软件开发工具。
下面是x宝上的类似兼容产品:
从学习角度,官方版和兼容版没啥差异,编程工具一样,功能也几乎一样的。当然我们总会给你惊喜,比如下面这个:基于ESP8266芯片的部分兼容板,自带wifi网络功能价格也只要10几块就能买到,兼容大部分UNO的功能,引脚数量和功能有些差异。对于初学者也没啥问题,只是传输速度稍慢,针脚标号有差异。
开始入门学习
工具推荐:
购买一个UNO版,官方,兼容,部分兼容都可以。
购买一些LED灯珠,简单外围设备,比如温度湿度,红外,超声波传感器,数码显示管LED,按钮,面包板,杜邦线等等,当然也可以买个入门学习套件。
资源网站
对初学者的基本要求,知道一些基本的电路原理,比如接一个灯泡回路
。最好是有过学习编程语言的经历,否则你要从怎么使用挂号,怎么使用引号开始学习写语句了。
说Arduino简单易用,一方面它做了同一版型的单板机,不用再弄个芯片用面包板来从头搭起,另外最重要的就是它的编程工具和语言。
Arduino自己制作了开发工具Arduino Software IDE,采用C语言的语法,有众多的基础库和第三方库可以使用,大大简化了编程难度。
开始学习先介绍一下GPIO,GPIO(英语:General-purpose input/output),通用型之输入输出的简称,功能类似8051的P0—P3,其接脚可以供使用者由程控自由使用,PIN脚依现实考量可作为通用输入(GPI)或通用输出(GPO)或通用输入与输出(GPIO),如当clk generator, chip select等。
简单来说,就是你可以通过程序,让这些GPIO针脚输出高低电平,或者PWM信号,读取数字,模拟信号等。那么这些有啥用呢,其实最直接的就是,1,通讯:用串口232,SPI,I2C等方式和外围数字传感器,显示设备,网络界面等等进行通讯,获取或者传输数据。2,通过输出输入高低电平,控制外围设备,比如继电器,点亮小功率的LED发光二极管等。
下面从0基础学习的第一部,点亮一个LED发光二极管开始,这个也是官方教程的第一个学习示例:
GPIO本身属于信号控制类接口,不能输出交大电流,因此只能点亮小功率的LED发光二极管,点亮其他灯珠之类的,可能无法驱动或者会损坏接口。
IDE有web在线版和离线桌面版,支持win,linux,mac等多平台,随意选择。下面截图是win桌面版。Arduino把程序叫成 Sketch。
程序结构: 最简单的程序结构如下,学过编程的基本很容易看懂,尤其是学过C的。基本上使用的是C的语法,很多函数,变量等都是和C一样的。
第一部分Setup(),这里主要放置一些程序的初始化设置语句,就是整个程序只需要开始的时候运行一次的功能。
第二部分loop(),这里放置主要的运行功能,这里的语句会被无限循环运行,除非arduino关闭或者死机。
在第一部分之前,可以放置需要载入的资源库描述,定义常量,定义全局变量等语句。
自定义函数可以放在这2个范围以外的地方
void setup() { //void 表示无返回变量,setup和loop都必须是void类型
// put your setup code here, to run once: //表示注释, 这个刮号里的语句只运行一次
}
void loop() {
// put your main code here, to run repeatedly: //这个刮号里的语句无限循环运行
}
初学者的第一个程序Sketch:Blink,让LED发光二极管闪烁
(IDE中本身就带有大量库和范例,可以直接调用范例学习)
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.//注释行,初始化数字引脚,定义它为输出针脚
pinMode(LED_BUILTIN, OUTPUT); //具体可以参考网站语法
//定义pinMode,LED_BUILTIN指板上的指示灯,当然我们可以指定其他针脚比如 2
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
上面这个程序运行结果是,板载的LED指示灯会点亮一秒,熄灭一秒的间隔,持续闪烁。是不是很容易理解。
当然我们,如果不是使用板载LED,使用自己的LED发光二极管,记得串联一个电阻,限制电流别太大,记得LED正负极别接反。
UNO的针脚定义见下图,电路板上也有明确的标识。
第一个学会了,就简单了。
入门的其他几个就不一一讲了,可以去看前面介绍的网站,官网的如下:英文
当然这里要学会这几个函数命令,这个是以后控制针脚输入输出的全部:
数字 I/O
pinMode() ----初始化设置针脚,具体语法查 pinMode(#pin,OUTPUT); pinMode(#pin,INPUT);
digitalWrite() ----设置针脚输出,digitalWrite(#pin, HIGH) ; digitalWrite(#pin, LOW);
digitalRead() ----读取针脚状态 digitalRead(pin#);
模拟 I/O
analogReference() -----模拟电压参考基准,设置模拟输入的基准电压,默认是3.3或者5V看板子说明
analogRead() -----读取一个针脚的模拟量数值,一般数字用0-255数字量标示
(有些兼容板0-1023),对应模拟电压
analogWrite() --------设置针脚输出一个模拟量,用PWM方式输出 analogWrite(pin,value)
会了这几个函数,就可以知道如何控制针脚,很简单就告诉它写低写高,写多少比例。
学会输入输出后,就是要按照示例和语法手册,学习其他的语句,比如定义变量,变量类型,运算符号,数学函数,控制语句,串口输出语句等。串口输出可以把需要看的东西通过串口传回到你的电脑上,有助于了解程序运行情况和找错误时候显示标志。
结构控制
if 判断语句
if...else 多次判断
for 计数循环
switch case 查表对照
while 条件循环
算数运算符
比较运算符
布尔运算符
就不一个个罗列了,可以去这里看,一共没多少个
语法学完后,就可以用各种外围设备做单个实验进一步学习。
三色LED
8x8点阵LED最好买带MAX7219芯片驱动的,否则需要16根输出脚
8x8点阵LED最好买带MAX7219芯片驱动的,否则需要16根输出脚
LCD显示屏
步进马达
超声波测距
4位数码显示管
以上图片来自官网
上面都是单个外围设备功能学习,当单个功能的学好了就可以做下面这种复杂一点的了,会用到多个输入输出组合控制,比如用距离加速度颜色传感器识别状态,控制小车行走转弯等。
以下,是我自己这几天为了学习编程做了这些。
流水灯
闪跳灯
温湿度交替显示,带驱动数码管
温度
湿度
超声波测距加OELD屏幕显示
即时屏显测距数据
无驱动4位数码管,uno直接控制显示
最后这个是利用的国产的ESP8266芯片的兼容板子,利用示例的web服务程序,制作的了一个简单文本web服务
通过web上面的指令遥控开启关闭设备,并同时显示接入的温度传感器数据
wifi网络远程控制开启关闭灯泡,继电器,同时显示温度传感器数据
折腾总结:
Arduino的确是个针对非专业电子控制人员设计的开发板,是个很好玩的玩具,而且外围设备丰富,不需要很高的技术技巧,中小学生就可以开始玩。初始玩玩简单的测量显示,遥控等等。
到后面,更多高级玩法,很多写字机,小型数控画图,数控雕刻,自由行走小车,机器人灯都可以用这个来完成。玩的过程中可以学会很多技巧。
对于喜欢制作点小玩具的人来说是个很好的东西,简单易学,功能强大。
推荐玩友可以学学,最好的是可以带着自己小孩一起玩,避免小孩总是看电视玩手机,这个乐趣度很高,可以让小孩没时间玩手机平板看电视
























值友8537368799
校验提示文案
iQUEDS
校验提示文案
oasisboy
校验提示文案
降香黄檀
校验提示文案
降香黄檀
校验提示文案
值友8537368799
校验提示文案
oasisboy
校验提示文案
iQUEDS
校验提示文案