Arduino 单板机入门学习记录

2019-05-30 13:41:28 20点赞 103收藏 5评论

创作立场声明:本文记录介绍自己学习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相当开放,这些兼容版本都能使用官方的软件开发工具。

Arduino 单板机入门学习记录

下面是x宝上的类似兼容产品:

Arduino 单板机入门学习记录

Arduino 单板机入门学习记录

从学习角度,官方版和兼容版没啥差异,编程工具一样,功能也几乎一样的。当然我们总会给你惊喜,比如下面这个:基于ESP8266芯片的部分兼容板,自带wifi网络功能价格也只要10几块就能买到,兼容大部分UNO的功能,引脚数量和功能有些差异。对于初学者也没啥问题,只是传输速度稍慢,针脚标号有差异。

Arduino 单板机入门学习记录

开始入门学习

工具推荐:

  1. 购买一个UNO版,官方,兼容,部分兼容都可以。

  2. 购买一些LED灯珠,简单外围设备,比如温度湿度,红外,超声波传感器,数码显示管LED,按钮,面包板,杜邦线等等,当然也可以买个入门学习套件。

  3. 资源网站

    1. 官网官方的学习资源

      入门教程

      语法速查

      一些学习者范例

对初学者的基本要求,知道一些基本的电路原理,比如接一个灯泡回路Arduino 单板机入门学习记录 。最好是有过学习编程语言的经历,否则你要从怎么使用挂号,怎么使用引号开始学习写语句了。

说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。

Arduino 单板机入门学习记录

程序结构: 最简单的程序结构如下,学过编程的基本很容易看懂,尤其是学过C的。基本上使用的是C的语法,很多函数,变量等都是和C一样的。

第一部分Setup(),这里主要放置一些程序的初始化设置语句,就是整个程序只需要开始的时候运行一次的功能。

第二部分loop(),这里放置主要的运行功能,这里的语句会被无限循环运行,除非arduino关闭或者死机。

在第一部分之前,可以放置需要载入的资源库描述,定义常量,定义全局变量等语句。

自定义函数可以放在这2个范围以外的地方

  1. void setup() { //void 表示无返回变量,setup和loop都必须是void类型

  2. // put your setup code here, to run once: //表示注释, 这个刮号里的语句只运行一次

  3. }


  4. void loop() {

  5. // put your main code here, to run repeatedly: //这个刮号里的语句无限循环运行

  6. }


初学者的第一个程序Sketch:Blink,让LED发光二极管闪烁

(IDE中本身就带有大量库和范例,可以直接调用范例学习)

Blink

Arduino 单板机入门学习记录

  1. // the setup function runs once when you press reset or power the board

  2. void setup() {

  3. // initialize digital pin LED_BUILTIN as an output.//注释行,初始化数字引脚,定义它为输出针脚

  4. pinMode(LED_BUILTIN, OUTPUT); //具体可以参考网站语法

  5. //定义pinMode,LED_BUILTIN指板上的指示灯,当然我们可以指定其他针脚比如 2

  6. }

  7. // the loop function runs over and over again forever

  8. void loop() {

  9. digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)

  10. delay(1000); // wait for a second

  11. digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW

  12. delay(1000); // wait for a second

  13. }

上面这个程序运行结果是,板载的LED指示灯会点亮一秒,熄灭一秒的间隔,持续闪烁。是不是很容易理解。

当然我们,如果不是使用板载LED,使用自己的LED发光二极管,记得串联一个电阻,限制电流别太大,记得LED正负极别接反。

UNO的针脚定义见下图,电路板上也有明确的标识。

Arduino 单板机入门学习记录



Arduino 单板机入门学习记录

第一个学会了,就简单了。

入门的其他几个就不一一讲了,可以去看前面介绍的网站,官网的如下:英文

呼吸灯

读取按钮状态

读取输入电压

当然这里要学会这几个函数命令,这个是以后控制针脚输入输出的全部:

数字 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)


会了这几个函数,就可以知道如何控制针脚,很简单就告诉它写低写高,写多少比例。

学会输入输出后,就是要按照示例和语法手册,学习其他的语句,比如定义变量,变量类型,运算符号,数学函数,控制语句,串口输出语句等。串口输出可以把需要看的东西通过串口传回到你的电脑上,有助于了解程序运行情况和找错误时候显示标志。

结构控制

算数运算符

比较运算符

布尔运算符

就不一个个罗列了,可以去这里看,一共没多少个

语法学完后,就可以用各种外围设备做单个实验进一步学习。

三色LED

三色LED三色LED

8x8点阵LED最好买带MAX7219芯片驱动的,否则需要16根输出脚

8x8点阵LED最好买带MAX7219芯片驱动的,否则需要16根输出脚8x8点阵LED最好买带MAX7219芯片驱动的,否则需要16根输出脚

LCD显示屏

LCD显示屏LCD显示屏

步进马达

步进马达步进马达

超声波测距

超声波测距超声波测距

4位数码显示管

4位数码显示管4位数码显示管

3轴加速度,倾角传感器3轴加速度,倾角传感器

以上图片来自官网



上面都是单个外围设备功能学习,当单个功能的学好了就可以做下面这种复杂一点的了,会用到多个输入输出组合控制,比如用距离加速度颜色传感器识别状态,控制小车行走转弯等。

4WD小车4WD小车

以下,是我自己这几天为了学习编程做了这些。

流水灯

流水灯流水灯

闪跳灯

闪跳灯闪跳灯

温湿度交替显示,带驱动数码管

温湿度交替显示,带驱动数码管温湿度交替显示,带驱动数码管

温度

温度温度

湿度

湿度湿度

超声波测距加OELD屏幕显示

超声波测距加OELD屏幕显示超声波测距加OELD屏幕显示

即时屏显测距数据

动态屏显测距数据动态屏显测距数据

无驱动4位数码管,uno直接控制显示

Arduino 单板机入门学习记录


最后这个是利用的国产的ESP8266芯片的兼容板子,利用示例的web服务程序,制作的了一个简单文本web服务

通过web上面的指令遥控开启关闭设备,并同时显示接入的温度传感器数据

wifi网络远程控制开启关闭灯泡,继电器,同时显示温度传感器数据wifi网络远程控制开启关闭灯泡,继电器,同时显示温度传感器数据


折腾总结:

Arduino的确是个针对非专业电子控制人员设计的开发板,是个很好玩的玩具,而且外围设备丰富,不需要很高的技术技巧,中小学生就可以开始玩。初始玩玩简单的测量显示,遥控等等。

到后面,更多高级玩法,很多写字机,小型数控画图,数控雕刻,自由行走小车,机器人灯都可以用这个来完成。玩的过程中可以学会很多技巧。

对于喜欢制作点小玩具的人来说是个很好的东西,简单易学,功能强大。

推荐玩友可以学学,最好的是可以带着自己小孩一起玩,避免小孩总是看电视玩手机,这个乐趣度很高,可以让小孩没时间玩手机平板看电视Arduino 单板机入门学习记录



展开 收起
5评论

  • 精彩
  • 最新
  • 能给个tb链接吗 太多了不知道选哪种购买

    校验提示文案

    提交
    随便买,除了原版贵其他都很便宜,需要WiFi功能就ESP8266的板子就可以

    校验提示文案

    提交
    收起所有回复
  • 挺好的入门文章,怎么没人看

    校验提示文案

    提交
  • 以前自学了半年放弃了,没有编程经验还是有点苦手,看得懂别人的代码但是自己写不出来,希望楼主再接再厉继续,今后碎银子都给你了 [高兴]

    校验提示文案

    提交
  • 请问初学入门买个便宜的对学习有影响么?为什么价格差距这么大。

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
103
扫一下,分享更方便,购买更轻松