arduino语法教学提纲

arduino语法教学提纲
arduino语法教学提纲

a r d u i n o语法

2.4 Arduino语法——变量和常量

加载第一个程序后,要想写出一个完整的程序,需要了解和掌握Arduino语言,本节将对Arduino语言做一个初步讲解,首先介绍变量和常量。

2.4.1 变量

变量来源于数学,是计算机语言中能储存计算结果或者能表示某些值的一种抽象概念。通俗来说可以认为是给一个值命名。当定义一个变量时,必须指定变量的类型。如果要变量全是整数,这种变量称为整型(int),那么如果要定义一个名为LED的变量值为11,变量应该这样声明:

int led 11;

一般变量的声明方法为类型名+变量名+变量初始化值。变量名的写法约定为首字母小写,如果是单词组合则中间每个单词的首字母都应该大写,例如ledPin、ledCount等,一般把这种拼写方式称为小鹿拼写法(pumpy case)或者骆驼拼写法(camel case)。

变量的作用范围又称为作用域,变量的作用范围与该变量在哪儿声明有关,大致分为如下两种。

(1)全局变量:若在程序开头的声明区或是在没有大括号限制的声明区,所声明的变量作用域为整个程序。即整个程序都可以使用这个变量代表的值或范围,不局限于某个括号范围内。

(2)局部变量:若在大括号内的声明区所声明的变量,其作用域将局限于大括号内。若在主程序与各函数中都声明了相同名称的变量,当离开主程序或函数时,该局部变量将自动消失。

使用变量还有一个好处,就是可以避免使用魔数。在一些程序代码中,代码中出现但没有解释的数字常量或字符串称为魔数(magic number)或魔字符串(magic string)。魔数的出现使得程序的可阅读性降低了很多,而且难以进行维护。如果在某个程序中使用了魔数,那么在几个月(或几年)后将很可能不知道它的含义是什么。

为了避免魔数的出现,通常会使用多个单词组成的变量来解释该变量代表的值,而不是随意给变量取名。同时,理论上一个常数的出现应该对其做必要地注释,以方便阅读和维护。在修改程序时,只需修改变量的值,而不是在程序中反复查找令人头痛的“魔数”。

【示例1】带变量的闪灯程序

在接下来的程序2-4里会用到ledPin这个变量,通过它来做一个带变量的闪灯程序。

程序2-4:带变量的闪灯程序

int ledPin = 13;

int delayTime = 1000;

void setup()

{

pinMode(ledPin,OUTPUT);

}

void loop()

{

digitalWrite(ledPin,HIGH);

delay(delayTime); //延时1s

digitalWrite(ledPin,LOW);

delay(delayTime); //延时1s

}

这里还使用了一个名为延时的delayTime变量,在延时(delay)函数中使用的参数单位为毫秒,用到delay 函数中,即延时1000毫秒。

【示例2】改变闪烁频率的闪灯程序

如果希望小灯闪烁快些,将延时函数值改小就可以了,读者可以尝试将delayTime改成500,可以看到小灯闪烁的频率变大了。如果在程序的后面再加上1行代码

“delayTime=delayTime+100;”可以发现小灯闪烁的频率越来越小,即小灯闪烁的越来越慢了。当按下“重置”按钮后,小灯闪烁又重新变快了,如下面程序2-5所示。

程序2-5:改变闪烁频率的闪灯程序

int ledPin = 13;

int delayTime = 1000;

void setup()

{

pinMode(ledPin,OUTPUT);

}

void loop()

{

digitalWrite(ledPin,HIGH);

delay(delayTime); //延时

digitalWrite(ledPin,LOW);

delay(delayTime);

delayTime=delayTime+100; //每次增加延时时间0.1s

}

2.4.2 常量

常量是指值不可以改变的量,例如定义常量const float pi = 3.14,当pi = 5时就会报错,因为常量是不可以被赋值的。编程时,常量可以是自定义的,也可以是Arduino核心代码中自带的。下面就介绍一下Arduino核心代码中自带的一些常用的常量,以及自定义常量时应该注意的问题。

1.逻辑常量(布尔常量):false和true

false的值为零,true通常情况下被定义为1,但true具有更广泛的定义。在布尔含义(Boolean Sense)里任何非零整数为true。所以在布尔含义中-1、2和-200都定义为true。

2.数字引脚常量:INPUT和OUTPUT

首先要记住这两个常量必须是大写的。当引脚被配置成INPUT时,此引脚就从引脚读取数据;当引脚被配置成OUTPUT时,此引脚向外部电路输出数据。在前面程序中经常出现的pinMode(ledPin,OUTPUT),表示从ledPin代表的引脚向外部电路输出数据,使得小灯能够变亮或者熄灭。

3.引脚电压常量:HIGH和LOW

这两个常量也是必须大写的。HIGH表示的是高电位,LOW表示的是低电位。例如:digitalWrite(pin,HIGH);就是将pin这个引脚设置成高电位的。还要注意,当一个引脚通过pinMode被设置为INPUT,并通过digitalRead读取(read)时。如果当前引脚的电压大于

等于3V,微控制器将会返回为HIGH,引脚的电压小于等于2V,微控制器将返回为LOW。当一个引脚通过pinMode配置为OUTPUT,并通过digitalWrite设置为LOW时,引脚为

0V,当digitalWrite设置为HIGH时,引脚的电压应在5V。

4.自定义常量

在Arduino中自定义常量包括宏定义#define和使用关键字const来定义,它们之间有细微的区别。在定义数组时只能使用const。一般const相对的#define是首选的定义常量语法。

2.5 Arduino语法——数据类型

Arduino与C语言类似,有多种数据类型。数据类型在数据结构中的定义是一个值的集合,以及定义在这个值集上的一组操作,各种数据类型需要在特定的地方使用。一般来说,变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。在声明变量时需要指定它的数据类型,所有变量都具有数据类型,以便决定存储不同类型的数据。

2.5.1 常用的数据类型

常用的数据类型有布尔类型、字符型、字节型、整型、无符号整型、长整型、无符号长整型、浮点型、双精度浮点型等,本小节会依次介绍这些数据类型。

1.布尔类型

布尔值(bollean)是一种逻辑值,其结果只能为真(true)或者假(false)。布尔值可以用来进行计算,最常用的布尔运算符是与运算(&&)、或运算(||)和非运算(!)。表2-2是与、或和非运算的真值表。

表2-2 真值表

如表2-2所示的真值表中,对于与运算,仅当A和B均为真时,运算结果为真,否则,运算结果为假;对于或运算,仅当A和B均为假时,运算结果为假,否则,运算结果为真。对于非运算,当A为真时,运算结果为假;当A为假时,运算结果为真。

2.字符型

字符型(char)变量可以用来存放字符,其数值范围是-128~+128。例如:

char A=58;

3.字节型

字节(byte)只能用一个字节(8位)的存储空间,它可以用来存储0~255之间的数字。例如:

byte B=8;

4.整型

整型(int)用两个字节表示一个存储空间,它可以用来存储-32768~+32767之间的数字。在Arduino中,整型是最常用的变量类型。例如:

int C=13;

5.无符号整型

同整型一样,无符号整型(unsigned int)也用两个字节表示一个存储空间,它可以用来存储0~65536之间的数字,通过范围可以看出,无符号整型不能存储负数。例如:

unsigned int D=65535;

6.长整型

长整型(long)可以用4个字节表示一个存储空间,其大小是int型的2倍。它可以用来存储-2147483648~2147483648 之间的数字。例如:

long E=2147483647;

7.无符号长整型

无符号长整型(unsigned long)同长整型一样,用4个字节表示一个存储空间,它可以用来存储0~4294967296之间的数字。例如:

unsigned long F=4294967295;

8.浮点型

浮点数(float)可以用来表示含有小数点的数,例如:1.24。当需要用变量表示小数时,浮点数便是所需要的数据类型。浮点数占有4个字节的内存,其存储空间很大,能够存储带小数的数字。例如:

a =

b / 3;

当b = 9时,显然a = 3,为整型。

当b = 10时,正确结果应为3.3333,可是由于a是整型,计算出来的结果将会变为3,这与实际结果不符。

但是,如果方程为:float a = b / 3.0。

当b = 9时,a = 3.0。

当b = 10时,a = 3.3333,结果正确。

如果在常数后面加上“.0”,编译器会把该常数当做浮点数而不是整数来处理。

9.双精度浮点型

双精度浮点型(double)同float类似,它通常占有8个字节的内存,但是,双精度浮点型数据比浮点型数据的精度高,而且范围广。但是,双精度浮点型数据和浮点型数据在Arduino 中是一样的。

2.5.2 数据类型转换

在编写程序过程中需要用到一些有关数据类型转换的函数,这里介绍几个常见的数据类型转换函数。

(1)char()

功能:将一个变量的类型变为char。

语法:char(x)

参数:x:任何类型的值

返回值:char型值

(2)byte()

功能:将一个值转换为字节型数值。

语法:byte(x)

参数:x:任何类型的值

返回值:字节

(3)int()

功能:将一个值转换为整型数值。

语法:int(x)

参数:x:任何类型的值

返回值:整型的值

(4)long()

功能:将一个值转换为长整型数值。

语法:long(x)

参数:x:任何类型的值

返回值:长整型的值

(5)float()

功能:将一个值转换换浮点型数值。

语法:float(x)

参数:x:任何类型的值

返回值:浮点型的值

(6)word()

功能:把一个值转换为word数据类型的值,或由两个字节创建一个字符。语法:word(x)或word(H,L)

参数:x:任何类型的值,H:高阶字节(左边),L:低阶字节(右边)返回值:字符

2.5.3 自定义数据类型

在Arduino中可以根据自己的需要定义结构类型的数据,其方法和C语言是一致的。

struct 名称

{

成员列表;

};

例如:

struct Student

{

char[20] name;

int number;

char[2] sex;

int score;

2.6 Arduino语法——数组

数组是一种可访问的变量的集合。Arduino的数组是基于C语言的,实现起来虽然有些复杂,但使用却很简单。

2.6.1 创建或声明一个数组

数组的声明和创建与变量一致,下面是一些创建数组的例子。

arrayInts [6];

arrayNums [] = {2,4,6,8,11};

arrayVals [6] = {2,4,-8,3,5};

char arrayString[7] = "Arduino";

由例子中可以看出,Arduino数组的创建可以指定初始值,如果没有指定,那么编译器默认为0,同时,数组的大小可以不指定,编译器在监察时会计算元素的个数来指定数组的大小。在arrayString中,字符个数正好等于数组大小。

在声明时元素的个数不能够超过数组的大小,即小于或等于数组的大小。

2.6.2 指定或访问数组

在创建完数组之后,可以指定数组的某个元素的值。

int intArray[3];

intArray[2]=2;

数组是从零开始索引的,也就说,数组初始化之后,数组第一个元素的索引为0,如上例所示,arrayString[0]为“A”即数组的第一个元素是0号索引,并以此类推。这也意味着,在包含10个元素的数组中,索引9是最后一个元素。因此,在下个例子中:

int intArray[10] = {1,2,3,4,5,6,7,8,9,10};

//intArray[9]的数值为10

// intArray[10],该索引是无效的,它将会是任意的随机信息(内存地址)

出于这个原因,在访问数组时应该注意。如果访问的数据超出数组的末尾—如访问intArray[10],则将从其他内存中读取数据。从这些地方读取的数据,除了产生无效的数据外,没有任何作用。向随机存储器中写入数据绝对是一个坏主意,通常会导致一些意外的结果,如导致系统崩溃或程序故障。顺便说一句,不同于Basic 或Java,C语言编译器不会检查访问的数组是否大于声明的数组。

【示例3】串口打印数组

数组创建之后在使用时,往往在for循环中进行操作,循环计数器可用于访问数组中的每个元素。例如,将数组中的元素通过串口打印,程序可以这样写。

程序2-6:串口打印数组

void setup()

{ // put your setup code here, to run once:

int intArray[10] = {1,2,3,4,5,6,7,8,9,10}; //定义长度为10的数组

for (i = 0; i < 10; i = i + 1) //循环遍历数组

{

Serial.println(intArray[i]); //打印数组元素

}

}

void loop()

{ // put your main code here, to run repeatedly:

}

2.7 Arduino语法——运算符

本节介绍最常用的一些Arduino运算符,包括赋值运算符、算数运算符、关系运算符、逻辑运算符和递增/减运算符。

2.7.1 赋值运算符

=(等于)为指定某个变量的值,例如:A=x,将x变量的值放入A变量。

+=(加等于)为加入某个变量的值,例如:B+=x,将B变量的值与x变量的值相加,其和放入B变量,这与B=B+x表达式相同。

-=(减等于)为减去某个变量的值,例如:C-=x,将C变量的值减去x变量的值,其差放入C变量,与C=C-x表达式相同。

*=(乘等于)为乘入某个变量的值,例如:D*=x,将D变量的值与x变量的值相乘,其积放入D变量,与D=D*x表达式相同。

/=(除等于)为和某个变量的值做商,例如:E/=x,将E变量的值除以x变量的值,其商放入E变量,与E=E/x表达式相同。

%=(取余等于)对某个变量的值进行取余数,例如:F%=x,将F变量的值除以x变量的值,其余数放入F变量,与F=F%x表达式相同。

&=(与等于)对某个变量的值按位进行与运算,例如:G&=x,将G变量的值与x变量的值做AND运算,其结果放入G变量,与G=G&x表达式相同。

|=(或等于)对某个变量的值按位进行或运算,例如:H|=x,将H变量的值与x变量的值相OR运算,其结果放入变量H,与H=H|x相同。

^=(异或等于)对某个变量的值按位进行异或运算,例如:I^=x,将I变量的值与x变量的值做XOR运算,其结果放入变量I,与I=I^x相同。

<<=(左移等于)将某个变量的值按位进行左移,例如:J<<=n,将J变量的值左移n位,与J=J<

>>=(右移等于)将某个变量的值按位进行右移,例如:K>>=n,将K变量的值右移n位,与K=K>>n相同。

2.7.2 算数运算符

+(加)对两个值进行求和,例如:A=x+y,将x与y变量的值相加,其和放入A变量。

-(减)对两个值进行做差,例如:B=x-y,将x变量的值减去y变量的值,其差放入B变量。

*(乘)对两个值进行乘法运算,例如:C=x*y,将x与y变量的值相乘,其积放入C变量。/(除)对两个值进行除法运算,例如:D=x/y,将x变量的值除以y变量的值,其商放入D 变量。

%(取余)对两个值进行取余运算,例如:E=x%y,将x变量的值除以y变量的值,其余数放入E变量。

2.7.3 关系运算符

==(相等)判断两个值是否相等,例如:x==y,比较x与y变量的值是否相等,相等则其结果为1,不相等则为0。

!=(不等)判断两个值是否不等,例如:x!=y,比较x与y变量的值是否相等,不相等则其结果为1,相等则为0。

<(小于)判断运算符左边的值是否小于右边的值,例如:x

>(大于)判断运算符左边的值是否大于右边的值,例如:x>y,若x变量的值大于y变量的值,其结果为1,否则为0。

<=(小等于)判断运算符左边的值是否小于等于右边的值,例如:x<=y,若x变量的值小等于y变量的值,其结果为1,否则为0。

>=(大等于)判断运算符左边的值是否大于等于右边的值,例如:x>=y,若x变量的值大等于y变量的值,其结果为1,否则为0。

2.7.4 逻辑运算符

&&(与运算)对两个表达式的布尔值进行按位与运算,例如:(x>y)&&(y>z),若x变量的值大于y变量的值,且y变量的值大于z变量的值,则其结果为1,否则为0。

||(或运算)对两个表达式的布尔值进行按位或运算,例如:(x>y)||(y>z),若x变量的值大于y变量的值,或y变量的值大于z变量的值,则其结果为1,否则为0。

!(非运算)对某个布尔值进行非运算,例如:!(x>y),若x变量的值大于y变量的值,则其结果为0,否则为1。

2.7.5 递增/减运算符

++(加1)将运算符左边的值自增1,例如:x++,将x变量的值加1,表示在使用x之后,再使x值加1。

--(减1)将运算符左边的值自减1,例如:x--,将x变量的值减1,表示在使用x之后,再使x值减1。

2.8 Arduino语法——条件判断语句

Arduino语言基于C和C++,有过开发经验的都知道,C语言中有一些内建指令,这些内建指令中有很重要的几个语句经常用到,这里介绍常用的条件判断语句if和else。

if语句

在考虑问题和解决问题的过程中,很多事情不是一帆风顺的,需要进行判断再做出不同的行为。这里就需要用到了条件语句,有些语句并不是一直执行的,需要一定的条件去触发。同时,针对同一个变量,不同的值进行不同的判断,也需要用到条件语句。同样,程序如果需要运行一部分,也可以进行条件判断。

if的语法如下:

if(delayTime<100)

{

delayTime=1000;

}

如果if后面的条件满足,就执行{ }内的语句。

if中表示判断的语句使用到的关系运算符如表2-3所示。

表2-3 关系运算符

(续表)

【示例4】使用if制作改变闪烁频率的闪灯程序

在介绍变量时,用了一个闪灯的例子进行举例说明,最后加了一行代码来使小灯闪烁的频率越来越小,即小灯越闪越慢。可是如果希望小灯越闪越快,并且到一定的程度重新恢复初始的闪灯频率,应该怎么办呢?看下面的程序。

程序2-7:改变闪烁频率的闪灯程序

int ledPin = 13;

int delayTime = 1000;

void setup()

{

pinMode(ledPin,OUTPUT);

}

void loop()

{

digitalWrite(ledPin,HIGH); //点亮小灯

delay(delayTime); //延时

digitalWrite(ledPin,LOW); //熄灭小灯

delay(delayTime);

delayTime=delayTime-100; //每次将延时时间减少0.1s

if(delayTime<100)

{

delayTime=1000; //当延时时间小于0.1s时,重新校准延时为1s }

}

在这个程序中用到了if条件判断语句,程序每次运行到if语句时都会进行检查,在delayTime>=100时,大括号里面的delayTime=1000是不执行的。程序进入下一次循环。当delayTime<100,delayTime=1000被执行,delayTime的值改变成为1000,并进入到下一次循环中。

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.360docs.net/doc/5616943087.html, 博客:https://www.360docs.net/doc/5616943087.html,/u/2775824690

1 前言 在淘宝买的Arduino 主板套件终于在26号到了,物流也太慢了,发了4天才到。套件包含:4轮小车,Arduino MEGA 2560 主板,配套的MEGA Sensor Shield V2.0扩展板,超声波模块,红外遥控模块,寻线防跌模块,舵机。套件是在27°寒语电子工作室(https://www.360docs.net/doc/5616943087.html,/)买的,也就是科易互动科技的子站(https://www.360docs.net/doc/5616943087.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.360docs.net/doc/5616943087.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)

相关文档
最新文档