搜档网
当前位置:搜档网 › Arduino 语法手册结构部分

Arduino 语法手册结构部分

Arduino 语法手册结构部分
Arduino 语法手册结构部分

Arduino 语法手册

摘自:

https://www.sodocs.net/doc/f614253708.html,/doku.php?id=arduino:arduino_language_re ference

Arduino 的程序可以划分为三个主要部分:结构、变量(变量与常量)、函数。结构部分

setup()

在Arduino中程序运行时将首先调用 setup() 函数。用于初始化变量、设置针脚的输出\输入类型、配置串口、引入类库文件等等。每次 Arduino 上电或重启后,setup 函数只运行一次。

示例

int buttonPin = 3;

void setup()

{

Serial.begin(9600);

pinMode(buttonPin, INPUT);

}

void loop()

{

// ...

}

loop()

在setup()函数中初始化和定义了变量,然后执行 loop() 函数。顾名思义,该函数在程序运行过程中不断的循环,根据一些反馈,相应改变执行情况。通过该函数动态控制 Arduino 主控板。

示例

int buttonPin = 3;

// setup 中初始化串口和按键针脚.

void setup()

{

beginSerial(9600);

pinMode(buttonPin, INPUT);

}

// loop 中每次都检查按钮,如果按钮被按下,就发送信息到串口

void loop()

{

if (digitalRead(buttonPin) == HIGH)

serialWrite('H');

else

serialWrite('L');

delay(1000);

}

结构控制

if

if(条件判断语句)和 ==、!=、<、>(比较运算符)

if 语句与比较运算符一起用于检测某个条件是否达成,如某输入值是否在特定值之上等。if 语句的语法是:

if (someVariable > 50)

{

// 执行某些语句

}

本程序测试 someVariable 变量的值是否大于 50。当大于 50 时,执行一些语句。换句话说,只要 if 后面括号里的结果(称之为测试表达式)为真,则执行大括号中的语句(称之为执行语句块);若为假,则跳过大括号中的语句。 if 语句后的大括号可以省略。若省略大括号,则只有一条语句(以分号结尾)成为执行语句。

if (x > 120) digitalWrite(LEDpin, HIGH);

if (x > 120)

digitalWrite(LEDpin, HIGH);

if (x > 120){ digitalWrite(LEDpin, HIGH); }

if (x > 120){

digitalWrite(LEDpin1, HIGH);

digitalWrite(LEDpin2, HIGH);

} // 以上所有书写方式都正确

在小括号里求值的表达式,需要以下操作符:

比较运算操作符:

x == y(x 等于 y)

x != y(x 不等于 y)

x < y(x 小于 y)

x > y(x 大于 y)

x <= y(x 小于等于 y)

x >= y(x 大于等于 y)

警告:

注意使用赋值的值设为 10(将值 10 放入 x 变量的内存中)。两个“=”表示的是比较运算符运算符的情况(如 if (x = 10))。一个“=”表示的是赋值运算符,作用是将 x(如 if (x == 10)),用于测试 x 和 10 是否相等。后面这个语句只有 x 是 10 时才为真,而前面赋值的那个语句则永远为真。

这是因为 C 语言按以下规则进行运算 if (x=10):10 赋值给 x(只要非 0 的数赋值的语句,其赋值表达式的值永远为真),因此 x 现在值为 10。此时 if 的测试表达式值为 10,该值永远为真,因为非 0 值永远为真。所以,if (x = 10) 将永远为真,这就不是我们运行 if 所期待的结果。另外,x 被赋值为 10,这也不是我们所期待的结果。

if 的另外一种分支条件控制结构是 if...else 形式。

if...else

if/else是比if更为高级的流程控制语句,它可以进行多次条件测试。比如,检测模拟输入的值,当它小于500时该执行哪些操作,大于或等于500时执行另外的操作。代码如下:

if (pinFiveInput < 500)

{

// 执行A操作

}

else

{

// 执行B操作

}

else可以进行额外的if检测,所以多个互斥的条件可以同时进行检测。

测试将一个一个进行下去,直到某个测试结果为真,此时该测试相关的执行语句块将被运行,然后程序就跳过剩下的检测,直接执行到if/else的下一条语句。当所有检测都为假时,若存在else语句块,将执行默认的else语句块。

注意else if语句块可以没有else语句块。else if分支语句的数量无限制。

if (pinFiveInput < 500)

{

// 执行A操作

}

else if (pinFiveInput >= 1000)

{

// 执行B操作

}

else

{

// 执行C操作

}

另外一种进行多种条件分支判断的语句是switch case语句。

for

描述

for语句用于重复执行一段在花括号之内的代码。通常使用一个增量计数器计数并终止循环。for语句用于重复性的操作非常有效,通常与数组结合起来使用来操作数据、引脚。

for循环开头有3个部分:

(初始化;条件;增量计数){

//语句

}

“初始化”只在循环开始执行一次。每次循环,都会检测一次条件;如果条件为真,则执行语句和“增量计数”,之后再检测条件。当条件为假时,循环终止。

例子

//用PWM引脚将LED变暗

int PWMpin = 10; //将一个LED与47Ω电阻串联接在10脚

void setup()

{

//无需设置

}

void loop()

{

for (int i=0; i <= 255; i++){

analogWrite(PWMpin, i);

delay(10);

}

}

编程提示

C语言的for循环语句比BASIC和其他电脑编程语言的for语句更灵活。除了分号以外,其他3个元素都能省略。同时,初始化,条件,增量计算可以是任何包括无关变量的有效C语句,任何C数据类型包括float。这些不寻常的for语句可能会解决一些困难的编程问题。

例如,在增量计数中使用乘法可以得到一个等比数列:

for(int x = 2; x < 100; x = x * 1.5){

println(x);

}

生成:2,3,4,6,9,13,19,28,42,63,94

另一个例子,使用for循环使LED产生渐亮渐灭的效果:

void loop()

{

int x = 1;

for (int i = 0; i > -1; i = i + x){

analogWrite(PWMpin, i);

if (i == 255) x = -1; // 在峰值转变方向

delay(10);

}

}

switch case

和if语句相同,switch…case通过程序员设定的在不同条件下执行的代码控制程序的流程。特别地,switch语句将变量值和case语句中设定的值进行比较。当一个case语句中的设定值与变量值相同时,这条case语句将被执行。

关键字break可用于退出switch语句,通常每条case语句都以break结尾。如果没有break语句,switch语句将会一直执行接下来的语句(一直向下)直到遇见一个break,或者直到switch语句结尾。

例子

switch (var) {

case 1:

//当var等于1时,执行一些语句

break;

case 2

//当var等于2时,执行一些语句

break;

default:

//如果没有任何匹配,执行default

//default可有可不有

}

语法

switch (var) {

case label:

// 声明

break;

case label:

// 声明

break;

default:

// 声明

}

参数

var:用于与下面的case中的标签进行比较的变量值

label: 与变量进行比较的值

while

描述

while循环会无限的循环,直到括号内的判断语句变为假。必须要有能改变判断语句的东西,要不然while循环将永远不会结束。这在您的代码表现为一个递增的变量,或一个外部条件,如传感器的返回值。

语法

while(表达){

//语句

}

参数

表达:为真或为假的一个计算结果

例子

var = 0;

while(var < 200){

//重复一件事200遍

var++

}

do... while

do…while循环与while循环运行的方式是相近的,不过它的条件判断是在每个循环的最后,所以这个语句至少会被运行一次,然后才被结束。

do

{

//语句

}while(测试条件);

例子

do

{

delay(50);//等待传感器稳定

X = readSensors();//检查传感器取值

}while(X <100); //当x小于100时,继续运行

break

break用于退出do,for,while循环,能绕过一般的判断条件。它也能够用于退出switch语句。

例子

for(x = 0; x < 255; x ++)

{

digitalWrite(PWMpin, x);

sens = analogRead(sensorPin);

if (sens > threshold){ // 超出探测范围

x = 0;

break;

}

delay(50);

}

continue

continue语句跳过当前循环中剩余的迭代部分( do,for 或 while )。它通过检查循环条件表达式,并继续进行任何后续迭代。

例子

for (x = 0; x < 255; x ++)

{

if (x > 40 && x < 120){ // 当x在40与120之间时,跳过后面两句,即迭代。

continue;

}

digitalWrite(PWMpin, x);

delay(50);

}

return

终止一个函数,如有返回值,将从此函数返回给调用函数。

语法:

return;

return value; // 两种形式均可

参数

value:任何变量或常量的类型

例子:

一个比较传感器输入阈值的函数

int checkSensor(){

if (analogRead(0) > 400) {

return 1;}

else{

return 0;

}

}

return关键字可以很方便的测试一段代码,而无需“comment out(注释掉)”大段的可能存在bug的代码。

void loop(){

//写入漂亮的代码来测试这里。

return;

//剩下的功能异常的程序

//return后的代码永远不会被执行

}

goto

程序将会从程序中已有的标记点开始运行

语法

label:

goto label; //从label处开始运行

提示

不要在C语言中使用goto编程,某些C编程作者认为goto语句永远是不必要的,但用得好,它可以简化某些特定的程序。许多程序员不同意使用goto的原因是,通过毫无节制地使用goto语句,很容易创建一个程序,这种程序拥有不确定的运行流程,因而无法进行调试。

的确在有的实例中goto语句可以派上用场,并简化代码。例如在一定的条件用if语句来跳出高度嵌入的for循环。

例子

for(byte r = 0; r < 255; r++){

for(byte g = 255; g > -1; g--){

for(byte b = 0; b < 255; b++){

if (analogRead(0) > 250){

goto bailout;

}

//更多的语句...

}

}

}

bailout:

扩展语法

;(分号)

用于表示一句代码的结束。

例子:

int a = 13;

提示

在每一行忘记使用分号作为结尾,将导致一个编译错误。错误提示可能会清晰的指向缺少分号的那行,也可能不会。如果弹出一个令人费解或看似不合逻辑的编译器错误,第一件事就是在错误附近检查是否缺少分号。

{}(花括号)

大括号(也称为“括号”或“大括号”)是C编程语言中的一个重要组成部分。它们被用来区分几个不同的结构,下面列出的,有时可能使初学者混乱。

左大括号“{”必须与一个右大括号“}”形成闭合。这是一个常常被称为括号平衡的条件。在Arduino IDE(集成开发环境)中有一个方便的功能来检查大括号是否平衡。只需选择一个括号,甚至单击紧接括号的插入点,就能知道这个括号的“伴侣括号”。

目前此功能稍微有些错误,因为IDE会经常会认为在注释中的括号是不正确的。

对于初学者,以及由BASIC语言转向学习C语言的程序员,经常不清楚如何使用括号。毕竟,大括号还会在”return函数”、“endif条件句”以及“loop函数”中被使用到。

由于大括号被用在不同的地方,这有一种很好的编程习惯以避免错误:输入一个大括号后,同时也输入另一个大括号以达到平衡。然后在你的括号之间输入回车,然后再插入语句。这样一来,你的括号就不会变得不平衡了。

不平衡的括号常可导致许多错误,比如令人费解的编译器错误,有时很难在一个程序找到这个错误。由于其不同的用法,括号也是一个程序中非常重要的语法,如果括号发生错误,往往会极大地影响了程序的意义。

大括号中的主要用途

功能

void myfunction(datatype argument){

statements(s)

}

循环

while (boolean expression)

{

statement(s)

}

do

{

statement(s)

}

while (boolean expression);

for (initialisation; termination condition; incrementing expr)

{

statement(s)

}

条件语句

if (boolean expression)

{

statement(s)

}

else if (boolean expression)

{

statement(s)

}

else

{

statement(s)

}

//(单行注释)

Comments(注释)

注释用于提醒自己或他人程序是如何工作的。它们会被编译器忽略掉,也不会传送给处理器,所以它们在Atmega芯片上不占用体积。注释的唯一作用就是使你自己理解或帮你回忆你的程序是怎么工作的或提醒他人你的程序是如何工作的。编写注释有两种写法:

例子

x = 5; // 这是一条注释斜杠后面本行内的所有东西是注释

/* 这是多行注释-用于注释一段代码

if (gwb == 0){ // 在多行注释内可使用单行注释

x = 3; /* 但不允许使用新的多行注释-这是无效的

}

// 别忘了注释的结尾符号-它们是成对出现的!

*/

小提示

当测试代码的时候,注释掉一段可能有问题的代码是非常有效的方法。这能使这段代码成为注释而保留在程序中,而编译器能忽略它们。这个方法用于寻找问题代码或当编译器提示出错或错误很隐蔽时很有效。

/* */(多行注释)

Comments(注释)

注释用于提醒自己或他人程序是如何工作的。它们会被编译器忽略掉,也不会传送给处理器,所以它们在Atmega芯片上不占用体积。注释的唯一作用就是使你自己理解或帮你回忆你的程序是怎么工作的或提醒他人你的程序是如何工作的。编写注释有两种写法:

例子

x = 5; // 这是一条注释斜杠后面本行内的所有东西是注释

/* 这是多行注释-用于注释一段代码

if (gwb == 0){ // 在多行注释内可使用单行注释

x = 3; /* 但不允许使用新的多行注释-这是无效的

}

// 别忘了注释的结尾符号-它们是成对出现的!

*/

小提示

当测试代码的时候,注释掉一段可能有问题的代码是非常有效的方法。这能使这段代码成为注释而保留在程序中,而编译器能忽略它们。这个方法用于寻找问题代码或当编译器提示出错或错误很隐蔽时很有效。

#define

#define 是一个很有用的C语法,它允许程序员在程序编译之前给常量命名。在Arduino中,定义的常量不会占用芯片上的任何程序内存空间。在编译时编译器会用事先定义的值来取代这些常量。

然而这样做会产生一些副作用,例如,一个已被定义的常量名已经包含在了其他常量名或者变量名中。在这种情况下,文本将被#defined 定义的数字或文本所取代。

通常情况下,优先考虑使用 const 关键字替代 #define 来定义常量。Arduino 拥有和 C 相同的语法规范:

语法

#define 常量名常量值注意,#是必须的。

例子

#define ledPin 3

//在编译时,编译器将使用数值 3 取代任何用到 ledPin 的地方。

提示

在#define 声明后不能有分号。如果存在分号,编译器会抛出语义不明的错误,甚至关闭页面。

#define ledPin 3 ; //这是一种错误写法

类似的,在#define声明中包含等号也会产生语义不明的编译错误从而导致关闭页面。

#define ledPin = 3 //这是一种错误写法

#include

#include用于调用程序以外的库。这使得程序能够访问大量标准C库,也能访问用于arduino的库。 AVR C库(Arduino基于AVR标准语法)语法手册请点击这里。注意#include和#define一样,不能在结尾加分号,如果你加了分号编译器将会报错。

例子

此例包含了一个库,用于将数据存放在flash空间内而不是ram内。这为动态内存节约了空间,大型表格查表更容易实现

#include

prog_uint16_t myConstants[] PROGMEM = {0, 21140, 702 , 9128, 0, 25764, 8456,

0,0,0,0,0,0,0,0,29810,8968,29762,29762,4500};

算数运算符

=(赋值运算符)

= 赋值运算符(单等号)

将等号右边的数值赋值给等号左边的变量

在C语言中,单等号被称为赋值运算符,它与数学上的等号含义不同,赋值运算符告诉单片机,将等号的右边的数值或计算表达式的结果,存储在等号左边的变量中。

例子:

int sensVal; //声明一个名为sensVal的整型变量

senVal = analogRead(0); //将模拟引脚0的输入电压存储在SensVal变量中

编程技巧:

要确保赋值运算符(=符号)左侧的变量能够储存右边的数值。如果没有大到足以容纳右边的值,存储在变量中的值将会发生错误。

不要混淆赋值运算符[=](单等号)与比较运算符[==](双等号),认为这两个表达式是相等的。

+(加)

-(减)

*(乘)

/(除)

加,减,乘,除

描述

这些运算符返回两个操作数的和,差,乘积,商. 这些运算是根据操作数的数据类型来计算的,比如 9和4都是int类型,所以9 / 4 结果是 2.这也就代表如果运算结果比数据类型所能容纳的范围要大的话,就会出现溢出.(例如. 1加上一个整数 int类型 32,767 结果变成-32,768). 如果操作数是不同类型的,结果是”更大”的那种数据类型. 如果操作数中的其中一个是 float类型或者double类型, 就变成了浮点数运算.

例子

y = y + 3;

x = x - 7;

i = j * 6;

r = r / 5;

Syntax

result = value1 + value2;

result = value1 - value2;

result = value1 * value2;

result = value1 / value2;

Parameters:

value1: 任何常量或者变量 value2: 任何常量或者变量

编程小提示:

整型常量的默认值是int类型,所以一些整型常量(定义中)的计算会导致溢

出.(比如: 60 * 1000 会得到一个负数结果.那么if(60*1000 > 0) ,if得到的是一个false值.

在选择变量的数据类型时,一定要保证变量类型的范围要足够大,以至于能容纳下你的运算结果.

要知道你的变量在哪个点会”翻身”,两个方向上都得注意.如: (0 - 1) 或 (0 - - 32768)

一些数学上的分数处理,要用浮点数,但其缺点是:占用字节长度大,运算速度慢.

使用类型转换符,例如 (int)myFloat 将一个变量强制转换为int类型..

%(模)

描述

一个整数除以另一个数,其余数称为模。它有助于保持一个变量在一个特定的范围(例如数组的大小)。

语法

结果=被除数%除数

参数

被除数:一个被除的数字

除数:一个数字用于除以其他数

返回

余数(模)

举例

X = 7%5; // X为2

X = 9% 5;// X为4

X = 5% 5;// X为0

X = 4%5; // X为4

示例代码

/*通过循环计算1到10的模*/

int values[10];

int i = 0;

void setup () {

}

void loop()

{

values [i] = analogRead(0);

i =(i + 1)%10; //取模运算}

提示

Arduino编程语言

Arduino编程参考手册 首页 程序结构变量基本函数

程序结构 (本节直译自Arduino官网最新Reference) 在Arduino中, 标准的程序入口main函数在内部被定义, 用户只需要关心以下两个函数: setup() 当Arduino板起动时setup()函数会被调用。用它来初始化变量,引脚模式,开始使用某个库,等等。该函数在Arduino板的每次上电和复位时只运行一次。 loop() 在创建setup函数,该函数初始化和设置初始值,loop()函数所做事的正如其名,连续循环,允许你的程序改变状态和响应事件。可以用它来实时控制arduino板。 示例:

控制语句 if if,用于与比较运算符结合使用,测试是否已达到某些条件,例如一个输入数据在某个范围之外。使用格式如下: 该程序测试value是否大于50。如果是,程序将执行特定的动作。换句话说,如果圆括号中的语句为真,大括号中的语句就会执行。如果不是,程序将跳过这段代码。大括号可以被省略,如果这么做,下一行(以分号结尾)将成为唯一的条件语句。

圆括号中要被计算的语句需要一个或多个操作符。 if...else 与基本的if语句相比,由于允许多个测试组合在一起,if/else可以使用更多的控制流。例如,可以测试一个模拟量输入,如果输入值小于500,则采取一个动作,而如果输入值大于或等于500,则采取另一个动作。代码看起来像是这样:

else中可以进行另一个if测试,这样多个相互独立的测试就可以同时进行。每一个测试一个接一个地执行直到遇到一个测试为真为止。当发现一个测试条件为真时,与其关联的代码块就会执行,然后程序将跳到完整的if/else结构的下一行。如果没有一个测试被验证为真。缺省的else语句块,如果存在的话,将被设为默认行为,并执行。 注意:一个else if语句块可能有或者没有终止else语句块,同理。每个else if分支允许有无限多个。

ARDUINO入门及其简单实验7例

ARDUINO入门及其简单实验(7例) (1) 1. Arduino硬件开发平台简介 (1) 1.1 Arduino的主要特色 (2) 1.2 Arduino的硬件接口功能描述 (3) 1.3 Arduino的技术性能参数 (3) 1.4 电路原理图 (4) 2. Arduino软件开发平台简介 (5) 2.1 菜单栏 (5) 2.2 工具栏 (6) 2.3 Arduino 语言简介 (6) 3. Arduino开发实例中所用部分器件 (8) 1. LED简介 (8) 2. 光敏电阻简介 (9) 3. 直流电机简介 (9) 4. 电位器简介 (10) 4. Arduino平台应用开发实例 (10) 4.1【实作项目一】利用LED作光敏电阻采样实验 (10) 4.2【实作项目二】利用PWM信号控制LED亮度 (12) 4.3【实作项目三】单键控制一只LED的亮灭 (15) 4.4【实作项目四】利用PWM控制直流电机转速 (17) 4.5【实作项目五】利用电位器手控LED亮度 (19) 4.6【实作项目六】控制LED明暗交替 (21) 4.7【实作项目七】利用光敏电阻控制LED的亮灭 (23) ARDUINO入门及其简单实验(7例) 1. Arduino硬件开发平台简介 Arduino硬件是一块带有USB的I/O接口板(其中包括13条数字I/O引脚,6通道模拟输出,6通道模拟输入),并且具有类似于Java、C语言的集成开发环境。Arduino 既可以扩展一些外接的电子元器件,例如开关、传感器、LED、直流马达、步进马达或其他输入、输出装置;Arduino也可以独立运行,成为一个可以跟交互软件沟通的接口装置,例如:Flash、Processing、Max/MSP、VVVV或其他互动软件。Arduino 开发环境IDE全部开放源代码,可以供大家免费下载、利用,还可以开发出更多激发人们制作欲望的互动作品。

Arduino 语法手册函数部分

Arduino 语法手册函数部分 摘自:函数部分 数字 I/O pinMode() 描述 将指定的引脚配置成输出或输入。详情请见digital pins。 语法 pinMode(pin, mode) 参数 pin:要设置模式的引脚 mode:INPUT或OUTPUT 返回 无 例子 ledPin = 13 语法 noTone(pin) 参数 pin: 所要停止产生声音的引脚 返回 无 shiftOut() shiftOut() 描述 将一个数据的一个字节一位一位的移出。从最高有效位(最左边)或最低有效位(最右边)开始。依次向数据脚写入每一位,之后时钟脚被拉高或拉低,指示刚才的数据有效。 注意:如果你所连接的设备时钟类型为上升沿,你要确定在调用shiftOut()前时钟脚为低电平,如调用digitalWrite(clockPin, LOW)。 注意:这是一个软件实现;Arduino提供了一个硬件实现的SPI库,它速度更快但只在特定脚有效。 语法 shiftOut(dataPin, clockPin, bitOrder, value) 参数 dataPin:输出每一位数据的引脚(int)

clockPin:时钟脚,当dataPin有值时此引脚电平变化(int) bitOrder:输出位的顺序,最高位优先或最低位优先 value: 要移位输出的数据(byte) 返回 无 shiftIn() 描述 将一个数据的一个字节一位一位的移入。从最高有效位(最左边)或最低有效位(最右边)开始。对于每个位,先拉高时钟电平,再从数据传输线中读取一位,再将时钟线拉低。 注意:这是一个软件实现;Arduino提供了一个硬件实现的SPI库,它速度更快但只在特定脚有效。 语法 shiftIn(dataPin,clockPin,bitOrder) 参数 dataPin:输出每一位数据的引脚(int) clockPin:时钟脚,当dataPin有值时此引脚电平变化(int) bitOrder:输出位的顺序,最高位优先或最低位优先 返回 读取的值(byte) pulseIn() 描述 读取一个引脚的脉冲(HIGH或LOW)。例如,如果value是HIGH,pulseIn()会等待引脚变为HIGH,开始计时,再等待引脚变为LOW并停止计时。返回脉冲的长度,单位微秒。如果在指定的时间内无脉冲函数返回。 此函数的计时功能由经验决定,长时间的脉冲计时可能会出错。计时范围从10微秒至3分钟。(1秒=1000毫秒=1000000微秒) 语法 pulseIn(pin, value) pulseIn(pin, value, timeout) 参数 pin:你要进行脉冲计时的引脚号(int)。 value:要读取的脉冲类型,HIGH或LOW(int)。 timeout (可选):指定脉冲计数的等待时间,单位为微秒,默认值是1秒(unsigned long)返回 脉冲长度(微秒),如果等待超时返回0(unsigned long) 例子 int pin = 7; unsigned long duration;

林锋教你一步一步玩机器人(arduino)--制作篇(入门组件A)

林锋教你一步一步玩机器人(arduino)系列 ------制作篇 (入门组件上) ----- 张林锋/文 2012-5-28

目录 1 前言 (3) 2. 准备工作 (3) 2.1 元器件准备工作 (3) 2.2 实验板子准备 (4) 3 LED 实验 (5) 4 蜂鸣器实验 (7) 5.按键实验 (9) 6 8*8点阵实验 (11) 7 串口实验 (12) 8 模拟量输入(电压输入) (16) 9 直流电机控制(L298N驱动模块) (18) 10 PMW 脉冲宽度调试 (21) 11 控制舵机 (22) 12 超声波模块 (23) 13 巡线防跌模块 (26) 14 红外遥控 (27) 说明 写这系列文章主要目的是和读者一同分享下自己的学习过程,也希望能给读者带来一些帮助,文章部分内容剪裁网络文章,部分自己撰写。文章内容用于爱好者之间学习,不得用于商业目的。当然笔者才疏学浅,所书内容难免有缺点和漏洞,还请读者多多海涵,希望能和广大电子爱好者交流心得。 本人QQ:65198204 邮箱:65198024@https://www.sodocs.net/doc/f614253708.html, 博客:https://www.sodocs.net/doc/f614253708.html,/u/2775824690

1 前言 在淘宝买的Arduino 主板套件终于在26号到了,物流也太慢了,发了4天才到。套件包含:4轮小车,Arduino MEGA 2560 主板,配套的MEGA Sensor Shield V2.0扩展板,超声波模块,红外遥控模块,寻线防跌模块,舵机。套件是在27°寒语电子工作室(https://www.sodocs.net/doc/f614253708.html,/)买的,也就是科易互动科技的子站(https://www.sodocs.net/doc/f614253708.html,/)。 备注一下:套件性价比很高,也有配套的相关资料,不过个人觉得配套资料写的不够详细和全面,对于新手制作会带来很多不便。 在制作篇系列文章中,我会对入门组件的应用,以及4轮小车套件的制作,做出详细的制作流程,图文并茂。相信会对新手入门带来一定收获。 读者在做本文章实验时可以结合阅读我的相关入门知识文章,基本篇,硬件篇,软件篇。 制作篇分:入门上篇:主要介绍一些基础配件,以及小车所要用的器件。 4轮小车篇:主要介绍小车制作全过程。 入门下篇:主要介绍一些其他外围器件应用。比如:1602,12864液晶应用,时钟模块应用等。 4轮小车改造篇:加入自己的一些元素。 2. 准备工作 2.1 元器件准备工作 本篇实验器件所用到的元器件如下:(1)发光二极管(2)蜂鸣器(3)按键(4)可变电阻(5)8*8点阵(6)串口(7)直流电机(8)伺服电机(9)超声波模块(10)寻线防跌模块(11)红外遥控。 下面给我的全家福来个图,呵呵。

Arduino 入门到精通 例程1-Hello World!

Arduino 入门到精通例程1 1、Hello World! 首先先来练习一个不需要其他辅助元件,只需要一块Arduino 和一根下载线的简单实验,让我们的Arduino 说出“Hello World!”,这是一个让Arduino 和PC 机通信的实验,这也是一个入门试验,希望可以带领大家进入Arduino 的世界。 这个实验我们需要用到的实验硬件有: Arduino 控制器 USB 下载线 我们按照上面所讲的将Arduino 的驱动安装好后,我们打开Arduino 的软件,编写一段程序让Arduino 接受到我们发的指令就显示“Hello World!”字符串,当然您也可以让Arduino 不用接受任何指令就直接不断回显“Hello World!”,其实很简单,一条

if()语句就可以让你的Arduino 听从你的指令了,我们再借用一下Arduino 自带的数字13 口LED,让Arduino 接受到指令时LED 闪烁一下,再显示“Hello World!” 下面给大家一段参考程序。 int val;//定义变量val int ledpin=13;//定义数字接口13 void setup() { Serial.begin(9600);//设置波特率为9600,这里要跟软件设置相一致。当接入特定设备(如:蓝牙)时,我们也要跟其他设备的波特率达到一致。pinMode(ledpin,OUTPUT);//设置数字13 口为输出接口,Arduino 上我们用到的I/O 口都要进行类似这样的定义。 } void loop() { val=Serial.read();//读取PC 机发送给Arduino 的指令或字符,并将该指令或字符赋给val if(val=='R')//判断接收到的指令或字符是否是“R”。 {//如果接收到的是“R”字符 digitalWrite(ledpin,HIGH);//点亮数字13 口LED。 delay(500); digitalWrite(ledpin,LOW);//熄灭数字13 口LED delay(500);

Arduino编程参考手册簿中文版

Arduino编程参考手册 控制语句 (5) if (5) if...else (6) for (8) switch case (10) while (11) do...while . (12) break (12) continue (13) return (14) goto (15) 相关语法 (16) 分号 (16) 大括号 (16) 注释 (18) define (19) include (20) 算术运算符 (21) 赋值 (21) 加,减,乘,除 (21) 取模 (22) 比较运算符 (24) if(条件) and ==, !=, <, > (比较运算符) (24) 布尔运算符 (26) 指针运算符 (27) 位运算 (27) 位与 (27) 位或 (28) 位异或 (30) 位非 (32) 左移、右移 (33) 复合运算符 (35) 自加++ (35) 自减-- (35) 复合加+= (35) 复合减-= (36) 复合乘*= (36) 复合除/= (36) 复合与&= (36) 复合或|= (36) 变量 (36)

宏定义 (37) 整型常量 (38) 浮点数常量 (40) 数据类型 (41) void (41) boolean (42) char (43) unsigned char (43) byte (43) int (44) unsigned int (45) word (46) long (46) unsigned long (47) float (48) double (49) string (49) String(c++) (51) array (52) 数据类型转换 (54) char() (54) byte() (54) int() (55) word() (55) long() (56) float() (56) 变量作用域&修饰符 (57) 变量作用域 (57) static (静态变量) (58) volatile (易变变量) (60) const (不可改变变量) (61) 辅助工具 (62) sizeof() (sizeof运算符) (62) ASCII码表 (63) 基本函数 (65) 数字I/O (65) pinMode() (65) digitalWrite() (66) digitalRead() (67) 模拟I/O (68) analogReference() (68) analogRead() (69) analogWrite() (70)

Arduino入门到精通例程6-按键控制

Arduino 入门到精通例程 6 6按键控制LED实验 I/O 口的意思即为INPUT接口和OUTPUT接口,到目前为止我们设计的小灯 实验都还只是应用到Arduino的I/O 口的输出功能,这个实验我们来尝试一下使用Arduino的I/O 口的输入功能即为读取外接设备的输出值,我们用一个按键和一个LED小灯完成一个输入输出结合使用的实验,让大家能简单了解I/O的作用。按键开关大家都应该比较了解,属于开关量(数字量)元件,按下时为闭合(导通)状态。完成本实验要 用到的元件如下: 按键开关*1 红色M5 直插LED*1 220 Q电阻*1 10K Q电阻*1 面包板*1 面包板跳线*1 扎 我们将按键接到数字7接口,红色小灯接到数字11接口(Arduino控制器0-13数字I/O接口都可以用来接按键和小灯,但是尽量不选择0和1接口,0和1接口为接口功能复用,除I/O 口功能外也是串口通信接口,下载程序时属于与PC 机通信故应保持0和1接口悬空,所以为避免插拔线的麻烦尽量不选用0和1 接口),按下面的原理图连接好电路。下面开始编写程序,我们就让按键按下时小灯亮起,根据前面的学习相信这个程序很容易就能编写出来,相对于前面几个实验这个实验的程序中多加了一条条件判断语句,这里我们使用if 语句,Arduino的程序便写语句是基于C语言的,所以C的条件判断语句自然也适用于Arduino,像while、swich等等。这里根据个人喜好我们习惯于使用简单易于理解的if 语句给大家做演示例程。

我们分析电路可知当按键按下时,数字7 接口可读出为高电平,这时我们使数字11 口输出高电平可使小灯亮起,程序中我们判断数字7 口是否为低电平,要为低电平使数字11 口输出也为低电平小灯不亮,原理同上。 参考源程序: int ledpin=11;// 定义数字11 接口 int inpin=7;// 定义数字7 接口 int val;// 定义变量val void setup(){pi nM ode(ledpi n,0 UTPUT);// 定义小灯接口为输出接口 pinMode(inpin,INPUT);〃定义按键接口为输入接口}void loop(){val=digitalRead(inpin);〃读取数字7 口电平值赋给val if(val==LOW)〃检测按键是否按下,按键按下时小灯亮起 { digitalWrite(ledpin,LOW);} else { digitalWrite(ledp in ,HIGH);}}下载完程序我们本次的小灯配合按键的实验就完 成了,本实验的原理很简单,广泛被用于各种电路和电器中,实际生活中大家也不难在各种设备上发现,例如大家的手机当按下任一按键时背光灯就会亮起,这就是典型应用了,下面一个实验就是一个最简单的生活中应用实例--------------- 抢答器。

arduino语言

Arduino语言 Arduino语言是建立在C/C++基础上的,其实也就是基础的C语言,Arduino语言只不过把AVR单片机(微控制器)相关的一些参数设置都函数化,不用我们去了解他的底层,让我们不了解AVR单片机(微控制器)的朋友也能轻松上手。 在与Arduino DIYER接触的这段时间里,发现有些朋友对Arduino 语言还是比较难入手,那么这里我就简单的注释一下Arduino语言(本人也是半罐子水,有错的地方还请各位指正)。 基础C语言 关键字: if...else 必须紧接着一个问题表示式(expression),若这个表示式为真,紧连着表示式后的代码就会被执行。若这个表示式为假,则执行紧接着else 之后的代码. 只使用 if不搭配else是被允许的。 范例: if (val == 1) { digitalWrite(LED,HIGH); } for 用来明定一段区域代码重复指行的次数。 范例: for (int i = 0; i < 10; i++) { Serial.print("ciao"); } switch case if叙述是程序里的分叉路口,switch case 是更多选项的路口。Swith case 根据变量值让程序有更多的选择,比起一串冗长的if叙述,使用swith case可使程序代码看起来比较简洁。 范例 : switch (sensorValue) { case 23: digitalWrite(13,HIGH); break; case 46: digitalWrite(12,HIGH);

break; default: // 以上条件都不符合时,预设执行的动作 digitalWrite(12,LOW); digitalWrite(13,LOW); } while 当while之后的条件成立时,执行括号内的程序代码。 范例 : // 当sensor值小于512,闪烁LED灯 sensorValue = analogRead(1); while (sensorValue < 512) { digitalWrite(13,HIGH); delay(100); digitalWrite(13,HIGH); delay(100); sensorValue = analogRead(1); } do... while 和while 相似,不同的是while前的那段程序代码会先被执行一次,不管特定的条件式为真或为假。因此若有一段程序代码至少需要被执行一次,就可以使用do…while架构。 范例 : do { digitalWrite(13,HIGH); delay(100); digitalWrite(13,HIGH); delay(100); sensorValue = analogRead(1); } while (sensorValue < 512); break 让程序代码跳离循环,并继续执行这个循环之后的程序代码。此外,在break也用于分隔switch case 不同的叙述。 范例 : //当sensor值小于512,闪烁LED灯 do {

Arduino知识集锦

#Arduino 语法 setup() 初始化函数 loop() 循环体函数 控制语句类似于C //if if...else for switch case while do... while break continue return got o 扩展语法类似于C //;(分号) {}(花括号) //(单行注释) /* */(多行注释) #define #include 算数运算符类似于C //=(赋值运算符) +(加) -(减) *(乘) /(除) %(模) 比较运算符类似于C //==(等于) !=(不等于) <(小于) >(大于) <=(小于等于) >=(大于等于) 布尔运算符类似于C //&&(与) ||(或) !(非) 指针运算符类似于C //* 取消引用运算符 & 引用运算符 位运算符类似于C & (bitwise and) | (bitwise or) ^ (bitwise xor) ~ (bitwise not) << (bitshift left) >> (bit shift right) 复合运算符类似于C ++ (increment) -- (decrement) += (compound addition) -= (compound subtraction) *= (compound multiplication) /= (compound division) &= (compound bitwise and) |= (c ompound bitwise or) 常量 constants 预定义的常量 BOOL true false 引脚电压定义,HIGH和LOW【当读取(read)或写入(write)数字引脚时只有两个可能的值: HIGH 和 LOW 】 HIGH(参考引脚)的含义取决于引脚(pin)的设置,引脚定义为INPUT或OUTPUT时含义有所不同。当一个引脚通过pinMode被设置为INPUT,并通过digitalRead读取(read)时。如果当前引脚的电压大于等于3V,微控制器将会返回为HIGH。引脚也可以通过pinMode

Arduino参考手册中文版

Arduino编程参考手册 if (5) if...else . (6) for (8) switch case (10) while (11) do...while. (12) break (12) continue (13) return (14) goto (15) 相关语法 (16) 分号 (16) 大括号 (16) 注释 (18) define (19) include (20) 算术运算符 (21) 赋值 (21) 加,减,乘,除 (21) 取模 (22) 比较运算符 (24) if(条件) and ==, !=, <, > (比较运算符) (24) 布尔运算符 (26) 指针运算符 (27) 位运算 (27) 位与 (27) 位或 (28) 位异或 (30) 位非 (32) 左移、右移 (33) 复合运算符 (35) 自加++ (35) 自减-- (35) 复合加+= (35) 复合减-= (36) 复合乘*= (36) 复合除/= (36) 复合与&= (36) 复合或|= (36) 变量 (36)

宏定义 (38) 整型常量 (39) 浮点数常量 (41) 数据类型 (41) void (41) boolean (42) char (43) unsigned char (43) byte (44) int (44) unsigned int (45) word (46) long (46) unsigned long (47) float (48) double (49) string (49) String(c++) (51) array (52) 数据类型转换 (54) char() (54) byte() (54) int() (54) word() (55) long() (55) float() (56) 变量作用域&修饰符 (56) 变量作用域 (56) static (静态变量) (57) volatile (易变变量) (59) const (不可改变变量) (61) 辅助工具 (61) sizeof() (sizeof运算符) (61) ASCII码表 (63) 基本函数 (64) 数字I/O (64) pinMode() (64) digitalWrite() (65) digitalRead() (67) 模拟I/O (68) analogReference() (68) analogRead() (68) analogWrite() (69)

arduino语法篇

Arduino语法 Arduino语法-----基础篇 Arduino语言是建立在C/C++基础上的,基本的功能都是基于C,一些复杂的或者功能强大的库都是基于C++,c和C++的语法,大家随便找本书都可以学会。其实Arduino就是把单片机的一些常用指令和函数进行功能化、函数化、模块化。这样就可以让大家不必去了解单片机或者硬件的细节。让没有基础的初学者也可以很快入门。 关键字: if if...else for switch case while do... while break continue return goto 语法符号: ; {} // /* */ 运算符: = + - * / % == != < > <= >= && || ! ++ -- += -= *= /= 数据类型: boolean 布尔类型 char 字符类型 byte 字节类型 int 整数类型 unsigned int无符号整型 long 长整型 unsigned long 无符号长 整型 float 实数类型 double string array void 常量: HIGH | LOW 表 示数字IO 口的电平, HIGH 表示高电平 (1),LOW 表示低 电平(0)。 INPUT | OUTPUT 表示数字 IO 口的方向,INPUT 表示辒入(高阻态), OUTPUT 表示辒出 (AVR能提供5V电 压40mA电流)。 true | false true 表示真(1),false表 示假(0)。 Arduino语法-----中级篇 setup() 当一个程序开始时,会调用setup()函数,用来初始化变量,引脚模式,库文件初始化等。setup函数只会在板子上电或者复位后调用一次。 loop()

Arduino编程参考手册中文版Word版

Arduino编程参考手册 程序结构 (4) 控制语句 (5) if (5) if...else . (6) for (8) switch case (10) while (11) do...while . (12) break (12) continue (13) return (14) goto (15) 相关语法 (16) 分号 (16) 大括号 (16) 注释 (18) define (19) include (20) 算术运算符 (21) 赋值 (21) 加,减,乘,除 (21) 取模 (22) 比较运算符 (24) if(条件) and ==, !=, <, > (比较运算符) (24) 布尔运算符 (26) 指针运算符 (27) 位运算 (27) 位与 (27) 位或 (28) 位异或 (30) 位非 (32) 左移、右移 (33) 复合运算符 (35) 自加++ (35) 自减-- (35) 复合加+= (35) 复合减-= (36) 复合乘*= (36) 复合除/= (36) 复合与&= (36) 复合或|= (36) 变量 (36)

宏定义 (37) 整型常量 (38) 浮点数常量 (40) 数据类型 (41) void (41) boolean (42) char (43) unsigned char (43) byte (43) int (44) unsigned int (45) word (46) long (46) unsigned long (47) float (48) double (49) string (49) String(c++) (51) array (52) 数据类型转换 (54) char() (54) byte() (54) int() (55) word() (55) long() (56) float() (56) 变量作用域&修饰符 (57) 变量作用域 (57) static (静态变量) (58) volatile (易变变量) (60) const (不可改变变量) (61) 辅助工具 (62) sizeof() (sizeof运算符) (62) ASCII码表 (63) 基本函数 (65) 数字I/O (65) pinMode() (65) digitalWrite() (66) digitalRead() (67) 模拟I/O (68) analogReference() (68) analogRead() (69) analogWrite() (70)

Arduino知识点

#define 常量名常量值 % 取模运算符 String abc / char abc[n] 定义字符串 pinMode(pin,mode); 用于引脚的初始化 mode包括INPUT/OUTPUT/INPUT_PULLUP Arduino 数模转换器有10位精度,可以将0-5V转换为0-1023,仅用于analogRead(pin) analogWrite(n) 写的并不是真正的模拟信号,而是占空比不同的方波:电压=占空比×5V,n∈(0,255),PWM(脉冲宽度调制)波 millis()/micros() 获取系统通电或复位后的运行时间,单位是毫秒/微秒 当引脚悬空时,其电压值处于不定状态,故要根据电压值进行其他操作时应避免悬空 tone(pin,frequency,duration) 占空比为定值50%,duration默认无穷大,若无duration,则应用noTone()来停止发声,注意:同一时间tone()仅能作用于一个引脚 pulseIn(pin,value,timeout) 返回脉冲宽度,单位为微秒,timeout超时时间,默认为1s 串口监视器中的停止符是在按下“发送”后系统自动发动的 外部中断 LOW/CHANGE/RISING/FALLING 低电平/变电平/上升沿/下降沿触发 attachInterrupt(中断编号,中断函数名(返回void),中断模式) 初始化中断引脚detachInterrupt(中断编号) 禁用外部中断 编写library #if ARDUINO >= 100 //版本兼容设置 #include"Arduino.h" #else #include"WProgram.h" #endif class XXX{ //声明类 private: public: } #ifndef XXX_H //条件编译命令,判断XXX_H是不是已经存在 #define XXX_H . . . #endif #include"XXX.H" //编写cpp文件,注意应加上版本兼容语句 XXX::XXX() 返回类型 XXX::other_func() func_name1 KEYWORD1 //关键字高亮显示 func_name2 KEYWORD2 硬件串口(UART)通信 两个设备TX与RX交叉连接,GND相连 在MEGA上USB口是和引脚0,1连在一块的 Serial.available() 返回串口接收缓冲区的字节数 Serial.begin(speed,config) 初始化串口,speed波特率,config数据、校验、停止位Serial.end() 释放串口通信引脚,使其作为普通引脚

Arduino 语言常用语句

结构 void setup() 初始化变量,管脚模式,调用库函数等 void loop() 连续执行函数内的语句 功能 数字 I/O pinMode(pin, mode) 数字IO口输入输出模式定义函数,pin表示为0~13, mode表示为INPUT或OUTPUT。 digitalWrite(pin, value) 数字IO口输出电平定义函数,pin表示为0~13,value表示为HIGH或LOW。比如定义HIGH 可以驱动LED。 int digitalRead(pin) 数字IO口读输入电平函数, pin表示为0~13,value表示为HIGH或LOW。比如可以读数字 传感器。 模拟 I/O int analogRead(pin) 模拟IO口读函数,pin表示为 0~5(Arduino Diecimila为0~5,Arduino nano为0~7)。 比如可以读模拟传感器(10位AD,0~5V表示为0~1023)。 analogWrite(pin, value) - PWM数字IO口PWM输 出函数,Arduino数字IO口标注了PWM的IO口可使用该函数,

pin表示3, 5, 6, 9, 10, 11,value表示为0~255。比如可用于电机PWM调速或音乐播放。 扩展 I/O shiftOut(dataPin, clockPin, bitOrder, value) SPI 外部IO扩展函数,通常使用带SPI接口的74HC595做8个IO 扩展,dataPin为数据口,clockPin为时钟口,bitOrder为数据传输方向(MSBFIRST高位在前,LSBFIRST低位在前),value 表示所要传送的数据(0~255),另外还需要一个IO口做 74HC595的使能控制。 unsigned long pulseIn(pin, value) 脉冲长度记录函数,返回时间参数(us),pin表示为0~13,value为HIGH或LOW。比如value为HIGH,那么当pin输入为高电平时,开始计时,当pin输入为低电平时,停止计时,然后返回该时间。时间函数 unsigned long millis() 返回时间函数(单位ms),该函数是指,当程序运行就开始计时并返回记录的参数,该参数溢出大概需要50天时间。 delay(ms) 延时函数(单位ms)。 delayMicroseconds(us) 延时函数(单位us)。 数学函数

Arduino常用函数

(1)pinMode(接口名称,OUTPUT或INPUT),将指定的接口定义为输入或输出接口,用在setup()函数里。 (2)digitalWrite(接口名称,HIGH(高)或LOW(低)),将数字输入输出接口的数值置高或置低。 (3)digitalRead(接口名称),读出数字接口的值,并将该值作为返回值。 (4)analogWrite(接口名称,数值),给一个模拟接口写入模拟值(PWM脉冲)。数值取值0-255。 (5)analogRead(接口名称),从指定的模拟接口读取数值,Arduino对该模拟值进行数字转换,这个方法将输入的0~5V电压值 转换为0~1023间的整数值,并将该整数值作为返回值。 (6)delay(时间),延时一段时间,以毫秒为单位,如1000为1秒。 (7)Serial.begin(波特率),设置串行每秒传输数据的速率(波特率)。在与计算机进行通讯时,可以使用下面这些值:300、1200、2400、4800、9600、14400、19200、28800、38400、57600或115200,一般9600、57600和115200比较常见。除此之外还可以使用其他需要的特定数值,如与0号或1号引脚通信就需要特殊的波特率。该函数用在setup()函数里。 Serial.available() 的意思是:返回串口缓冲区中当前剩余的字符个数。一般用这个函数来判断串口的缓冲区有无数据,当Serial.available()>0时,说明串口接收到了数据,可以读取;

Serial.read()指从串口的缓冲区取出并读取一个Byte的数据,比如有设备通过串口向Arduino发送数据了,我们就可以用Serial.read()来读取发送的数据。 while(Serial.available()>0) { data= Serial.read(); delay(2); } (8)Serial.read(),读取串行端口中持续输入的数据,并将读入的数据作为返回值。 (9)Serial.print(数据,数据的进制),从串行端口输出数据。Serial.print(数据)默认为十进制,相当于Serial.print(数据,十进制)。 (10)Serial.println(数据,数据的进制),从串行端口输出数据,有所不同的是输出数据后跟随一个回车和一个换行符。但是该函数所输出的值与Serial.print()一样。 常用函数 数字I/O类: pinMode(pin,mode)数字IO口输入输出模式定义函数,将接口定义为输入或输出接口。

Arduino 入门到精通 例程9-模拟值

Arduino 入门到精通例程9 模拟值读取实验 本个实验我们就来开始学习一下模拟I/O 接口的使用,Arduino 有模拟0—模拟5 共计6 个模拟接口,这6 个接口也可以算作为接口功能复用,除模拟接口功能以外,这6 个接口可作为数字接口使用,编号为数字14—数字19,简单了解以后,下面就来开始我们的实验。电位计是大家比较熟悉的典型的模拟值输出元件,本实验就用它来完成。 所需元器件有: 电位计*1 面包板*1 面包板跳线*1 扎 本实验我们将电位计的阻值转化为模拟值读取出来,然后显示到屏幕上,这也是我们以后完成自己所需的实验功能所必须掌握的实例应用。我们先要按照以下电路图连接实物图

我们使用的是模拟0 接口。 程序的编写也很简单,一个analogRead();语句就可以读出模拟口的值,Arduino 328是10 位的A/D 采集,所以读取的模拟值范围是0-1023,本个实验的程序里还有一个难点就是显示数值在屏幕这一问题,学习起来也是很简单的。首先我们要在voidsetup()里面设置波特率,显示数值属于Arduino 与PC 机通信,所以Arduino 的波特率应与PC 机软件设置的相同才能显示出正确的数值,否则将会显示乱码或是不显示,在Arduino 软件的监视窗口右下角有一个可以设置波特率的按钮,这里设置的波特率需要跟程序里void setup()里面设置波特率相同,程序设置波特率的语句为Serial.begin();括 号中为波特率的值。其次就是显示数值的语句了,Serial.print();或者Serial.println();都可以,不同的是后者显示完数值后自动回车,前者不是,更多的关于语句的讲解前面有 介绍这里就不再多说了。

Arduino实验

Arduino Due开发步骤 1. Arduino IDE下载 下载网址:https://www.sodocs.net/doc/f614253708.html,/en/Main/Software,下载界面截图如图2-1所示。 图2-1 Arduino IDE下载界面截图 选择Windows(ZIP file),下载安装程序。 2. Arduino IDE安装 指向图标,双击鼠标左键解压,如图2-2所示。 图2-2 arduino-1.5.5-windows.zip解压界面安装Arduino IDE到指定盘符。 3.Arduino IDE目录结构 Arduino IDE目录结构如图2-3所示。

图2-3 Arduino IDE目录结构 4. Arduino IDE下编程 指向图标,双击鼠标左键,显示Arduino IDE界面如图2-4所示。 图2-4 Arduino IDE界面 在编程窗口中显示两个函数,setup()和loop()。在Arduino中setup()函数首先执行且只执行一遍,一般用来编写初始化程序。在setup()执行完成后,开始执行loop(),loop()循环执行。 Arduino编程使用的是gcc编译器,c语言编程的第一个函数是main()函数,为什么看 不到?因为Arduino对其进行了2次封装,打开\arduino-1.5.5\hardware\arduino\avr\cores \main.cpp,可以看到如图2-5所示的一段封装程序。

图2-5 main()函数的封装 5. Arduino IDE下软硬件开发的基本步骤 1. 指向图标,双击鼠标左键,进入Arduino IDE界面,如图2-4所示; 2. 编写或导入程序; 3. 选择使用的Arduino开发板,如选择Arduino DUE开发板,选择方法如图2-6所示。 图2-6 选择Arduino DUE开发板 Arduino DUE有两个USB接口,Programming Port 接的是A TMEGA16U2芯片,实现USB口-----串口转换,Native USB Port接的是SAM3X8E片载的USB口,口的位置如图2-7

Arduino参考手册中文版

Arduino编程参考手册 控制语句 (4) if (4) if...else (4) for (4) switch case (4) while (5) do...while .. (5) break (5) continue (5) return (5) goto (5) 相关语法 (5) 分号 (5) 大括号 (5) 注释 (5) define (5) include (5) 算术运算符 (5) 赋值 (5) 加,减,乘,除 (5) 取模 (5) 比较运算符 (5) if(条件) and ==, !=, <, > (比较运算符) (5) 布尔运算符 (5) 指针运算符 (6) 位运算 (6) 位与 (6) 位或 (6) 位异或 (7) 位非 (7) 左移、右移 (7) 复合运算符 (8) 自加++ (8) 自减-- (8) 复合加+= (8) 复合减-= (8) 复合乘*= (8) 复合除/= (8) 复合与&= (8) 复合或|= (8) 变量 (8)

宏定义 (8) 整型常量 (8) 浮点数常量 (9) 数据类型 (9) void (9) boolean (10) char (10) unsigned char (10) byte (10) int (10) unsigned int (10) word (10) long (10) unsigned long (10) float (10) double (10) string (10) String(c++) (10) array (10) 数据类型转换 (10) char() (10) byte() (10) int() (10) word() (10) long() (10) float() (10) 变量作用域&修饰符 (10) 变量作用域 (10) static (静态变量) (11) volatile (易变变量) (11) const (不可改变变量) (11) 辅助工具 (11) sizeof() (sizeof运算符) (11) ASCII码表 (11) 基本函数 (12) 数字I/O (12) pinMode() (12) digitalWrite() (12) digitalRead() (13) 模拟I/O (13) analogReference() (13) analogRead() (14) analogWrite() (14)

相关主题