文档库 最新最全的文档下载
当前位置:文档库 › ARDUINO语法篇

ARDUINO语法篇

ARDUINO语法篇
ARDUINO语法篇

Arduino语法

Arduino语法-----基础篇

Arduino语言是建立在C/C++基础上的,基本的功能都是基于C,一些复杂的或者功能强大的库都是基于C++,c和C++的语法,大家随便找本书都可以学会。其实Arduino就是把单片机的一些常用指令和函数进行功能化、函数化、模块化。这样就可以让大家不必去了解单片机或者硬件

Arduino语法-----中级篇

setup()

当一个程序开始时,会调用setup()函数,用来初始化变量,引脚模式,库文件初始化等。setup函数只会在板子上电或者复位后调用一次。

loop()

当setup函数初始化完变量以及设置完初始值后,loop函数就会像它的名字一样,不停的循环,从而使程序能够改变或者响应对Arduino板子的控制,使板子保持在活动的状态。

pinMode()

把指定的引脚设置为输入或则输出模式,在Arduino1.0.1中可以使用INPUT_PULLUP把引脚模式设置为内部上拉.除此之外,输入模式明确禁止内部上拉。

pinMode(pin,mode)

参数:

pin:需要设置的引脚编号。

mode:INPUT输入,OUTPUT输出,INPUT_PULLUP内部上拉

返回值:无

digitalWrite()

把引脚设置为HIGH或者LOW。如果把一个引脚使用pinMode()设置为输出模式,如果参数是HIGH 引脚的电压会被设置为5V(3V或者3.3V),如果是LOW,引脚输出为0V(GND)。

如果引脚被设置为输入模式,使用digitalWrite()对该引脚写入HIGH,将会使能内部的20K上拉电阻,如果写入LOW会禁止内部上拉。内部上拉可以点亮LED,只是很淡,所以如果LED很淡,应该是忘记把引脚设置为输出模式了.

13脚一般不用做输入模式,因为它串联了一个LED和电阻,如果你使能了内部的20K上拉电阻,它的电压将会在1.7V左右而不是你锁期望的5V。因为它串联的LED和电阻把电压拉低了,这也就意味着13脚始终读出的是LOW,如果你一定要把13脚用为输入脚,请给它接一个外部的下拉电阻。digitalWrite(pin,value)

参数:

pin:要操作的引脚

value:HIGH或者LOW

返回值:无

delay()

让程序暂停一定时间,具体时间与具体的参数有关,单位为毫秒(1秒为1000毫秒)

delay(ms)

参数:

ms:要暂停的毫秒数(unsigned long)

digitalRead()

读取指定引脚的值,HIGH或者LOW

digitalRead(pin)

参宿:

pin:想要读取的引脚(int)

返回字:HIGH或者LOW

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 语法手册函数部分

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编程参考手册簿中文版

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语言

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实验

Arduino Due开发步骤 1. Arduino IDE下载 下载网址:https://www.wendangku.net/doc/9710509532.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)

arduino语法

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

arduino第9课 电压表制作

我们今天要涉及两个新的内容,arduino的串口通讯与模拟口的使用,模拟口之前我们介绍过就是可以测量0-5V的电压,然后对应返回 0-1024的数值,今天我们就要利用arduino模拟口这个功能,来制作一个0-5V的电压表 注意:本实验电路设计没有设计相对复杂的保护电路,所以,千万别 使用超过两节以上的AA电池,并且不要用来测量锂电池或者其他电源!!需要准备的电子元件清单 下面我们来看设计的电路连接图

图上使用1K电阻的目的是在测量端悬空的情况下,将GND的基准电平引导到测量口,避免接口悬空受到干扰, 我们按照电路连接图搭建对应的实物电路

然后就去下载我们的程序,程序源代码如下,会涉及到一些串口的语句和模拟口的语句,具体语法请参考arduino语法手册 ARDUINO 代码复制打印 1./* 2.作者:极客工坊-迷你强 3.时间:2012年6月19日 4. IDE版本号:1.0.1 5.发布地址:https://www.wendangku.net/doc/9710509532.html, 6.作用:介绍使用arduino模拟口测量电压,作为0-5V电压表使用 实验 7. 8.*/

9. 10.float temp; //创建一个浮点型变量temp作为存储空间 准备存放数据 11.void setup() 12.{ 13.Serial.begin(9600); //使用9600的波特率进 行串口通讯 14.} 15.void loop() 16.{ 17. 18.int V1 = analogRead(A0); 19.//从A0口读取电压数据存入刚刚创建整数型变量V1,模拟口 的电压测量范围为0-5V 返回的值为0-1024 20.float vol = V1*(5.0 / 1023.0); 21.//我们将 V1的值换算成实际电压值存入浮点型变量 vol 22.if(vol == temp) 23.//这部分的判断是用来过滤重复的数据,只有本次的电压值和 上次不一时才进行输出 24.{ 25. temp = vol; // 比较完成后,将这次的值存入比对比用的变量temp 26.} 27.else 28.{ 29.Serial.print(vol); / /串口输出电压值,并且不换行 30.Serial.println(" V"); //串口输出字符V,并且换行 31. temp = vol; 32.delay(1000); //输 出完成后等待1秒钟,用于控制数据的刷新速度。 33.}

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 stri ng array void 常量: HIGH | LOW 表示数字IO 口的电平,HIGH 表示高电平(1),LOW 表示低电平(0)。 INPUT | OUTPUT 表示数字IO 口的方向,INPUT 表示辒入(高阻态),OUTPUT 表示 辒出(AVR能提供5V电压 40mA电流)。 true | false true 表示真(1),false表示假(0)。 具体使用可以结合实验的程序 1、声明变量及接口名称(int val;int ledPin=13;)。 2、setup()——函数在程序开始时使用,可以初始化变量、接口模式、启用库等(例如:pinMode(ledPin,OUTUPT);)。 3、loop()——在setup()函数之后,即初始化之后,loop() 让你的程序循环地被执行。使用它来运转Arduino。 接下来就开始学习一下几个基本函数。

1、pinMode(接口名称,OUTPUT或INPUT)将——接口定义为输入或输出接口,用在setup()函数里。 2、digitalWrite(接口名称, HIGH或LOW)——将数字接口值至高或低。 3、digitalRead(接口名称)——读出数字接口的值。 4、analogWrite(接口名称, 数值)——给一个接口写入模拟值(PWM波)。对于ATmega168芯片的Arduino(包括Mini或BT),该函数可以工作于3, 5, 6, 9, 10和11号接口。老的ATmega8芯片的USB和serial Arduino仅仅支持9, 10和11号接口。 5、analogRead(接口名称)——从指定的模拟接口读取值,Arduino对该模拟值进行10-bit 的数字转换,这个方法将输入的0-5电压值转换为0到1023间的整数值。 6、delay()——延时一段时间,delay(1000)为一秒。 7、Serial.begin(波特率)——设置串行每秒传输数据的速率(波特率)。在同计算机通讯时,使用下面这些值:300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600或115200。你也可以在任何时候使用其它的值,比如,与0号或1号插口通信就要求特殊的波特率。用在setup()函数里 8、Serial.read()——读取持续输入的数据。 9、Serial.print(数据,数据的进制)——从串行端口输出数据。Serial.print(数据)默认为十进制等于Serial.print(数据,DEC)。 10、Serial.println(数据,数据的进制)——从串行端口输出数据,跟随一个回车和一个换行符。这个函数所取得的值与Serial.print()一样。 以上几个函数是常用基本函数,还有很多以后会慢慢学习 逻辑运算符把各个运算的变量(或常量)连接起来组成一个逻辑表达式。逻辑运算符有4个,它们分别是:!(逻辑非)、||(逻辑或)、&&(逻辑与)^(异或)。在位运算里面还有&(位与)、|(位或)的运算。 “<<”代表左移运算符(就相当于'shl')。该运算符为双目运算符,结合方向为从左到右,作用是把一个整型数的所有位向左移动指定的位数,移动到左边界之外的多余二进制位会被丢弃,并从右边界移入0。

arduino与上位机通信教程

1,接收函数( ) int (void) 如果串行数据缓冲区有数据,这个函数会读取串行数据缓冲区的第一个字节,数据读取位置移动到下一个数据缓冲区,也就是说如果继续读取的话会读取下一个数据缓冲区的第一个字节. 如果数据缓冲区没有数据,将返回-1. 2,发送函数 (val) (val, format) (val) 首先注意: print是一个打印函数,主要用于在上位机上显示,让数据可视化,它会将数据用字符的形式(ASCII码)逐个发送到串口. 一般不用这个函数来进行数据传输. 比如下面这段代码不会在串口助手上显示3个256,而会分别显示'2','5','6'的ASCII码值,50,53,54(分三次发送,有三个地址不同的数据缓冲区) void setup() { (val, format) 将val的值转换成format指定的形式发送,可为BIN,OCT,HEX,DEC. 3,发送函数 (str) str为字符串的首地址,buf为一个用来存放数据的数组的首地址. 这个函数会先发送字符串,然后返回字符串的长度. void setup(){ (9600); } void loop(){ (45); (buf, len) buf为要发送的数组的首地址(注意数组的类型为unsigned char),len为数组的长度. void setup(){ (9600); (9600); (9600); } void loop(){ unsigned char data[2] ={11,0}; (data,2); if()>0) ()); ()); } 回到开头的问题,如何从一个单片机的串口发送数据到Arduino上,然后用Arduino显示呢? 我们可以先用单片机的print函数把数据打印到串口,然后用(Serial的加强版,具体看官方参考手册)把数据从串口读取回来(以ASCII码的形式),然后把ASCII码转换成字符,然后发送. unsigned int send_data =1234; char rx_data[4]; void setup(){

相关文档