Arduino 鶸鷄 • 基础篇

请注意,本文编写于 230 天前,最后修改于 23 天前,其中某些信息可能已经过时。

Arduino 有很多种版本,参考下面图片,感兴趣的朋友们可以自行百度谷歌淘宝京东。这里以小怪兽去年入手的最基础的 Arduino UNO 开发板讲解。小怪兽比较菜,有讲解错误的地方欢迎评论指正,谢谢。

Arduino-Version.png
Arduino-Version.png

Arduino 简介

Massimo Banzi 之前是意大利Ivrea一家高科技设计学校的老师。他的学生们经常抱怨找不到便宜好用的微控制器。 2005年冬天, Massimo Banzi 与 David Cuartielles 讨论了这个问题。 David Cuartielles 是一个西班牙籍晶片工程师,当时在这所学校做访问学者。两人决定设计自己的电路板,并引入了 Banzi 的学生 David Mellis 为电路板设计编程语言。两天以后,David Mellis 就写出了程式码。又过了三天,电路板就完工了。Massimo Banzi 喜欢去一家名叫 di Re Arduino 的酒吧,该酒吧是以1000年前意大利国王 Arduin 的名字命名的。为了纪念这个地方,他将这块电路板命名为 Arduino 。
Arduino在开发之初,就明确了其应用环境,设计了开源开放的平台,便于对其进行二次开发。简而言之, Arduino 是一个比你的台式电脑更能够用来感应和控制现实物理世界的一套工具。 它由一个基于简易单片机并且开放源码的计算机平台,和一套为 Arduino 板编写程序的开发环境组成。 Arduino 可以用来开发交互产品,它可以读取大量的开关和传感器信号,控制各式各样的电灯、电机和其他物理设备。 Arduino 项目可以是单独的,也可以在运行时和你电脑中运行的程序(例如:Flash,Processing,MaxMSP)进行通讯。

Arduino 平台特点

作为目前最流行的开源硬件开发平台,Arduino 具有非常多的优点,正是这些优点使得 Arduino 平台得以广泛应用。

  • 开放原始码的电路图设计、程序开发界面,可以免费下载也可以根据自己的需求修改。Arduino 可以使用 ISCP 线上烧录器将 Bootloader 烧入新的 IC 芯片。可以根据官方电路图简化 Arduino 模组完成独立运作的微处理控制。
  • 可以非常简便地与传感器、各式各样的电子元件连接(如红外线模组、超声波模组、热敏电阻、光敏电阻、伺服电机等)。支持多样的互动程序,如 Flash、Maxs/Msp、VVVV、PD、C、Processing 等。使用低价格的微处理控制器。使用 USB 接口无需外接电源。可提供 9VDC 电源输入以及多样化的 Arduino 扩展模块。
  • 通过各种各样的传感器来感知环境,并通过控制灯光、电机和其他装置来反馈、影响环境。可以方便的连接以太网扩展模块进行网络传输,使用蓝牙传输、WiFi 传输、无线摄像头控制多种应用。

Arduino 结构

board_description.jpg
board_description.jpg

序号名称功能用途说明
1Power USB
电源 (USB)
将 USB 线连接到 USB 接口使 Arduino 板用计算机上的 USB 线供电
2Barrel Jack
电源(桶插座)
将其连接到电影插口使 Arduino 板直接从交流电源供电
3Voltage Regulator
稳压器
控制提供给 Arduino 板的电压,并稳定处理器和其他元件使用的直流电压
4Crystal Oscillator
晶体振荡器
帮助 Arduino 处理时间问题。Arduino 通过使用晶体振荡器来计算时间。在 Arduino 晶体振荡器顶部打印的数字 16.000H9H 告诉我们其频率是 16,000,000 赫兹(16MHz)
5&17Arduino Reset
Arduino 重置按钮
按下此按钮可以重置你的 Arduino 板,但并不删除板内程序。例如从一开始就启动你的程序。可以通过两种方式重置 UNO 板:①通过使用板上的复位按钮(17);②将外部复位按钮连接到标有 RESET(5)的 Arduino 引脚
6&7&8&9Pins
引脚(3.3,5,GND,Vin)
3.3V(6):提供 3.3V 输出电压
5V(7):提供 5V 输出电压
GND(8):用于将电路接地
Vin(9):用于从外部电源(如交流主电源)为 Arduino 板供电
使用 3.3V 和 5V 电压,与 Arduino 板一起使用的大多数组件可以正常工作。
10Analog pins
模拟引脚
Arduino UNO 板有六个模拟输入引脚, A0 到 A5 。这些引脚可以从模拟传感器(如湿度传感器或温度传感器)读取信号,并将其转换为可由微处理器读取的数字值
11Main microcontroller
微控制器
作为 Arduino 板的大脑,Arduino 上的主 IC(集成电路)与板对板略有不同。微控制器通常是 ATMEL 公司的。在从 Arduino IDE 加载新程序之前,你必须知道你的板上有什么 IC 。此信息位于 IC 顶部。有关 IC 结构和功能的更多详细信息请参阅数据表
12ICSP pin
ICSP 引脚
大多数情况下, ICSP(12)是一个 AVR ,一个由 MOSI,MISO,SCK,RESET,VCC 和 GND 组成的 Arduino 的微型编程头。它通常被称为 SPI(串行外设接口),可以被认为是输出的“扩展”
13Power LED indicator
电源 LED 指示灯
将 Arduino 插入电源时,此 LED 指示灯应亮起,表明你的电路板已正确通电
14TX and RX LEDs
TX 和 RX LED
TX(发送)RX(接收)。它们出现在 Arduino UNO 板的两个地方:①在数字引脚0和1处,指示引脚负责串行通信;②TX 和 RX LED(13)。发送串行数据时,TX LED 以不同的速度闪烁。闪烁速度取决于板所使用的波特率。RX 则在接收过程中闪烁
15Digital I/O
数字 I/O
Arduino UNO 板有14个数字 I/O 引脚(15)(其中6个提供 PWM 脉宽调制输出),这些引脚可配置为数字输入引脚用于读取逻辑值(0或1)或作为数字输出引脚来驱动不同的模块如 LED ,继电器等。标有“〜”的引脚可用于产生 PWM
16AREF
模拟参考
有时用于设置外部参考电压(0至5伏之间)作为模拟输入引脚的上限

Arduino-C 语法

Arduino 语法是基于 C/C++ 的,相当于简化的 C++ 语法。Arduino 将一些相关参数设置函数化,不需要我们去深入了解它的底层,使不了解 AVR 单片机(微控制器)的朋友也能上手,下面简单介绍一下 Arduino 语法。

关键字

if、if...else、for、switch case、while、do...while、break、continue、return、goto

语法符号

  • 每条语句以 半角分号 ; 结尾
  • 每段程序以 花括号 { } 包围
  • 注释内容以 // 开头或以 // 包围

运算符号

= + - / % == != < > <= >= && || ! ++ -- += -= = /=

数据类型

boolean、char、unsigned char、byte、int、unsigned int、long、unsigned long、short、float、double、string、array、void

  • boolean 类型变量保存 true 或 false 之一。每个布尔变量占用一个字节的内存。
  • char 类型变量占用一个字节的内存,存储一个字符值。值为字符文字时用单引号写成:'A',多个字符、字符串时用双引号:"ABC"。但是 char 数据将字符存储为数字(你可以在 ASCII 图表中查看特定编码),这意味着可以对使用 ASCII 值的字符进行算术运算。例如,'A'+1的值为66(大写字母 A 的 ASCII 值为65)。
  • unsigned char 是一种无符号数据类型,占用一个字节的内存。unsigned char 数据类型编码数字为0到255。
  • byte 类型变量用1字节存储一个8位无符号数,从0到255。
  • int(整数)类型变量是数字存储的主要数据类型。int 可以存储16位(2字节)值。这约束了 -32768 至 32767 的范围(-2^15 到 2^15-1)。int 数据的范围因板而异。例如,在 Arduino Due 中,int 存储32位(4字节)值,则限制了 -2147483648 至 2147483647 的范围(-2^31 到 2^31-1)。
  • unsigned int(无符号整数)类型变量与 int 相同,存储2字节。但是它们只存储正值,产生 0 到 65535(2^16-1)的有效范围。类似的,Arduino Due 板的 unsigned int 数据存储4字节(32位)值,范围从 0 到 4294967295(2^32-1)。
  • long 类型变量是用于数字存储的扩展大小变量,存储32位(4字节),范围从 -2147483648 到 2147483647 。
  • unsigned long 类型变量也是用于数字存储的扩展大小变量,存储32位(4字节)。类似的,unsigned long 型变量不存储负数,它的范围为 0 到 4294967295(2^32-1)。
  • short 类型变量是 16 位数据类型。在所有 Arduinos(基于ATMega和ARM)上,一个 short 类型变量存储一个 16位(2字节)值,产生 -32768 至 32767 的范围(-2^15 到 2^15-1)。
  • float(浮点数)类型变量是具有小数点的数字。浮点数通常用于近似模拟值和连续值,因为它们的分辨率高于整数。浮点数存储32位(4字节)信息,范围从 -3.4028235E+38 到 3.4028235E+38。
  • double(双精度浮点数)类型变量在 Uno 和其他基于 ATMEGA 的板上占用4个字节。double 实现功能与 float 完全相同,精度没有增益。在 Arduino Due 上,double 类型变量具有8字节(64位)精度。
  • void 关键字仅用于函数声明。它表示该函数预计不会向调用它的函数返回任何信息。

常量

  • 数字 I/O 接口电平

    • HIGH 高电平(1)
    • LOW 低电平(0)
  • 数字 I/O 接口方向

    • INPUT 输入(高阻态)
    • OUTPUT 输出(5V 40mA)
  • 布尔值

    • ture 真(1)
    • false 假(0)

Arduino 程序结构

主要包括两部分: void setup() 和 void loop()。
前者声明变量及接口名称,例如:

int monster;      //声明一个名为 monster 的变量
int ledPin = 13;  //声明 LED 接口为 13 脚

Arduino 程序启动时会调用 setup() 函数,使用它来初始化变量、引脚模式、启用库等。setup 函数只能在 Arduino 板每次上电或复位后运行一次。
后者在创建了用于初始化并设置初始值的 setup() 函数后,正如它的名称所指,允许你的程序连续循环的更改和响应,使用它来主动控制Arduino板。它是 Arduino 程序的主体。


第一篇教程就到这里吧,下一篇会较为详细的介绍 Arduino 函数相关的事情,内容参考了清华大学出版社的《Arduino Case in Action(Arduino案例实战)》。
还是那句话:小怪兽比较菜,有讲解错误的地方欢迎评论指正,谢谢。

添加新评论

已有 6 条评论

小怪兽可以点都不菜 :aru2:

MonsterX MonsterX 回复 @c0sMx

2333 我要去跟大魔王们一起 van U ♂ C.给技能加点

c0sMx c0sMx 回复 @MonsterX

我还打错字了,丢人 :aru24: 。订阅啦~

MonsterX MonsterX 回复 @c0sMx

么么|。・㉨・)っ♡ 可惜啊下一波有点质量的博文不知道得到哪年才更得出来了。 :aru59:

c0sMx c0sMx 回复 @MonsterX

:aru13: 那么可以和我一起水文章。

MonsterX MonsterX 回复 @c0sMx

大佬写文章那能叫水吗?!(站长因文章太水已被当场抓捕 :aru19: