arduino語言.doc

上传人:hw****26 文档编号:3550255 上传时间:2019-06-04 格式:DOC 页数:13 大小:202.50KB
下载 相关 举报
arduino語言.doc_第1页
第1页 / 共13页
arduino語言.doc_第2页
第2页 / 共13页
arduino語言.doc_第3页
第3页 / 共13页
arduino語言.doc_第4页
第4页 / 共13页
arduino語言.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、Arduino 语 言Arduino 语言是建立在 C/C+基础上的,其 实也就是基 础的 C 语言,Arduino 语言只不过把 AVR 单片机(微控制器)相关的一些参数设置都函数化,不用我们去了解他的底层, 让我们不了解 AVR 单片机(微控制器)的朋友也能轻松上手。 在与 Arduino DIYER 接触的 这段时间里,发现有些朋友对 Arduino 语言还是比较难入手,那么这里我就简单 的注释一下 Arduino 语言(本人也是半罐子水,有错的地方还请各位指正)。基础 C 语言关键字:if.else 必须紧接着一个问题表示式(expression),若 这个表示式 为真, 紧连着表示式

2、后的代码就会被执行。若这个表示式为假, 则执行紧接着 else 之后的代码. 只使用 if 不搭配 else 是被允许的。范例:if (val = 1) digitalWrite(LED,HIGH);for 用来明定一段区域代码重复指行的次数。范例:for (int i = 0; i 140) 整数变量是 Arduino 内最常用到的数据型态。unsigned int 无符号整数(绝对值)5无号整数同样利用 2 字节的内存空间,无号意谓着它不能储存负的数值,因此无号整数可表示的整数范围为 0 到 65,535。long 长整数长整数利用到的内存大小是整数的两倍,因此它可表示的整数范围从 2,1

3、47,483,648 到 2,147,483,647。unsigned long 无符号长整数无号长整数可表示的整数范围为 0 到 4,294,967,295。float 浮点数浮点数就是用来表达有小数点的数值,每个浮点数会用掉四字节的 RAM,注意芯片内存空间的限制,谨慎的使用浮点数double 双字节浮点也叫双精度浮点数,可表达最大值为 1.7976931348623157 x 10308。string 字符串字符串用来表达文字信息,它是由多个 ASCII 字符组成(你可以透过序串端口发送一个文字讯息或者将之显示在液晶显示器上)。字符串中的每一个字符都用一个组元组空间储存,并且在字符串的最

4、尾端加上一个空字符以提示 Ardunio 处理器字符串的结束。下面两种宣告方式是相同的。例如:char string1 = “Arduino“;/7 字符+1 空字符char string28 = “Arduino“; / 与上行相同array 数组一串变量可以透过索引去直接取得。假如你想要储存不同程度的 LED 亮度时,你可以宣告六个变量 light01,light02,light03,light04,light05,light06,但其实你有更好的选择,例如宣告一个整数数 组变量如下:int light6 = 0 , 20 , 50 , 75 , 100“array“ 这个字为没有直接用在

5、 变量宣告,而是 和 宣告数组。控制指令数据类型转换:char() byte() int() long() float() 常量:在 Arduino 语言中事先定义了一些具特殊用途的保留字。HIGH | LOW 表示数字 IO 口的电平,HIGH 表示高电平(1),LOW 表示低电平(0)。 HIGH 和 LOW 也用来表示你开启或是关 闭了一个 Arduino 的脚位(pin)INPUT | OUTPUT 表示数字 IO 口的方向, INPUT 表示输入(高阻态),OUTPUT 表示输出(AVR能提供 5V 电压 40mA 电流)。true | false 6true 表示真(1),fals

6、e 表示假( 0)。变数:变量用来指定 Arduino 内存中的一个位置,变量可以用来储存数据,程序人员可以透过脚本代码去不限次数的操作变数的值。因为 Arduino 是一个非常简易的微处理器,但你要宣告一个变量时必须先定义他的数据型态,好让微处理器知道准备多大的空间以储存这个变量值。以上为基础 c 语言的关键字和符号,有 c 语言基础的都应该了解其含义,这里也不作过多的解释。Arduino 语言结构 1、声明变量及接口名称(int val;int ledPin=13;)。2、void setup()在程序开始时使用,在这个函数范围内放置初始化 Arduino 板子的程式,主要程式开始撰写前,

7、 使 Arduino 板子装置妥当的指令可以初始化变量、管脚接口模式、启用库等(例如:pinMode(ledPin,OUTPUT);)。3、void loop()在 setup()函数之后,即初始化之后, loop() 让你的程序循环地被执行。使用它来运转 Arduino。连续执行函数内的语句, 这部份的程式会一直重复的被 执行,直到Arduino 板子被关闭。功能数字 I/OpinMode(pin, mode) 数字 IO 口输入输出模式定义函数,将接口定义为输 入或输出接口,用在 setup()函数里,pin 表示为 013 接口名称, mode 表示为 INPUT 或 OUTPUT。即“

8、 pinMode(接口名称 ,OUTPUT 或 INPUT)”。范例 :pinMode(7,INPUT); / 将脚位 7 设定为输入模式digitalWrite(pin, value) 数字 IO 口输出电平定义函数,将数字接口值至高或低、开或关,pin 表示为013, value 表示为 HIGH 或 LOW,即 digitalWrite(接口名称, HIGH 或 LOW)。但脚位必须先透过 pinMode 明示为输入或输出模式 digitalWrite 才能生效。 比如定义HIGH 可以驱动 LED。范例 :digitalWrite(8,HIGH); /将脚位 8 设定输出高电位int

9、digitalRead(pin) 数字 IO 口读输入电平函数, 读出数字接口的值, pin 表示为 013, value 表示为HIGH 或 LOW,即 digitalRead(接口名称)。比如可以读数字传感器。当感测到脚位处于高电位时时回传 HIGH,否 则回传 LOW。7范例 :val = digitalRead(7); / 读出脚位 7 的值并指定给 val模拟 I/Oint analogRead(pin) 模拟 IO 口读函数, 从指定的模拟接口读取值, Arduino 对该模拟值进行 10-bit 的数字转换, 这个方法将输入的 0-5 电压值转换为 0 到 1023 间的整数值。

10、pin 表示为05(Arduino Diecimila 为 05, Arduino nano 为 07)。即“analogRead(接口名称)”,比如可以读模拟传感器(10 位 AD,05V 表示为 01023)。范例 :val = analogRead(0); /读出类比脚位 0 的值并指定给 val 变数analogWrite(pin, value)数字 IO 口 PWM 输出函数,给一个接口写入模拟值(PWM 波)。改变 PWM 脚位的输出电压值。对于 ATmega168 芯片的 Arduino(包括 Mini 或 BT),该函数可以工作于 3, 5, 6, 9, 10 和 11 号接口

11、,即“analogWrite(接口名称, 数值)”,pin 表示 3, 5, 6, 9, 10, 11,value 表示为 0255。比如可用于 电机 PWM 调速或音乐播放。例如:输出电压 2.5 伏特(V),该值大约是 128。范例 :analogWrite(9,128); / 输出电压约 2.5 伏特(V)扩展 I/OshiftOut(dataPin, clockPin, bitOrder, value) SPI 外部 IO 扩展函数,通常使用带 SPI 接口的 74HC595 做 8 个 IO 扩展,把资料传给用来延伸数位输出的暂存器,此函式通常使用在延伸数位的输出。函式使用一个脚位表

12、示资料、一个脚位表示 时脉。 dataPin 为数据口,clockPin 为时钟口, bitOrder 用来表示位元间移动的方式, 为数据传输方向(MSBFIRST 高位在前, LSBFIRST 低位在前),value 会以 byte 形式 输出,表示所要传送的数据( 0255),另外还需要一个 IO口做 74HC595 的使能控制。范例 :shiftOut(dataPin, clockPin, LSBFIRST, 255);unsigned long pulseIn(pin, value)脉冲长度记录函数,设定读取脚位状态的持续时间,返回时间参数(us),例如使用红外线、加速度感测器测得某一

13、项数值时,在 时间单位内不会改变状态。 pin 表示为013,value 为 HIGH 或 LOW。比如 value 为 HIGH,那么当 pin 输入为高电平时,开始计时,当 pin 输入为低电 平时,停止 计时,然后返回该时间。范例 :time = pulsein(7,HIGH); / 设定脚位 7 的状态在时间单位内保持为 HIGH时间函数unsigned long millis()返回时间函数(单位 ms), 回传晶片开始执行到目前的毫秒, 该函数是指,当程序运行就开始计时并返回记录的参数,该参数溢出大概需要 50 天时间。 范例:8duration = millis()-lastTi

14、me; / 表示自“lastTime“ 至当下的时间delay(ms) 延 时函数(单位 ms),延时一段时间,暂停晶片执行多少毫秒,delay(1000)为 一秒。范例:delay(500); /暂停半秒(500 毫秒)delayMicroseconds(us) 延 时函数(单位 us)暂停晶片执行多少微秒。delayMicroseconds(1000); /暂停 1 豪秒数学函数min(x, y) 求最小值 ,回传两数之间较小者范例:val = min(10,20); / 回传 10max(x, y) 求最大值 ,回传两数之间较大者范例:val = max(10,20); / 回传 20a

15、bs(x) 计算绝对值 ,回传该数的绝对值,可以将 负数转正数。范例:val = abs(-5); / 回传 5constrain(x, a, b) 约束函数,下限 a,上限 b,判断 x 变数位于 a 与 b 之间的状态。x 若小于 a 回传 a;介于 a 与 b 之间回传 x 本身;大于 b 回传 b范例:val = constrain(analogRead(0), 0, 255); / 忽略大于 255 的数map(value, fromLow, fromHigh, toLow, toHigh)约束函数,value 必须在 fromLow 与 toLow 之间和 fromHigh 与 t

16、oHigh 之间。将value 变数依照 fromLow 与 fromHigh 范围,对等转换至 toLow 与 toHigh 范围。时常使用于读取类比讯号,转换 至程式所需要的范围值。例如:val = map(analogRead(0),0,1023,100, 200); / 将 analog0 所读取到的讯号对等转换至100,200 之间的数值。pow(base, exponent) 开方函数,base 的 exponent 次方。 回传一个数(base)的指数(exponent)值。范例:double x = pow(y, 32); / 设定 x 为 y 的 32 次方sq(x) 平方

17、sqrt(x) 开根号 回传 double 型态的取平方根值。范例:double a = sqrt(1138); / 回传 1138 平方根的近似值 33.734256744389三角函数sin (rad) 回传角度(radians)的三角函数 sine 值。范例:double sine = sin(2); / 近似值 0.90929737091cos(rad) 回传角度(radians)的三角函数 cosine 值。范例:double cosine = cos(2); /近似值-0.41614685058tan(rad) 回传角度(radians)的三角函数 tangent 值。范例:dou

18、ble tangent = tan(2); /近似 值-2.18503975868随机数函数randomSeed(seed) 随机数端口定义函数,seed 表示读模拟口 analogRead(pin)函数 。事实上在 Arduino 里的乱数是可以被预知的。所以如果需要一个真正的乱数,可以呼叫此函式重新设定产生乱数种子。你可以使用乱数当作乱数的种子,以确保数字以随机的方式出现,通常会使用类比输入当作乱数种子,藉此可以产生与环境有关的乱数(例如:无线电波、宇宙雷射线、 电话和萤光灯发出的电磁波等)。范例:randomSeed(analogRead(5); / 使用类比输入当作乱数种子long r

19、andom(max) 随机数函数,返回数据大于等于 0,小于 max。范例:long randnum = random(11); / 回传 0 -10 之间的数字long random(min, max) 随机数函数,返回数据大于等于 min,小于 max。 范例:long randnum = random(0, 100); / 回传 0 99 之间 的数字外部中断函数attachInterrupt(interrupt, , mode)外部中断只能用到数字 IO 口 2 和 3,interrupt 表示中断口初始 0 或 1,表示一个功能函数,mode:LOW 低 电平中断,CHANGE 有

20、变化就中断, RISING 上升沿中断,FALLING 下降沿中断。 detachInterrupt(interrupt) 中断开关,interrupt=1 开,interrupt=0 关。 中断使能函数interrupts() 使能中断 noInterrupts() 禁止中断 串口收发函数10Serial.begin(speed)串口定义波特率函数,设置串行每秒传输数据的速率(波特率),可以指定Arduino 从电脑 交换讯息的速率,通常我们使用 9600 bps。,speed 表示波特率,如9600,19200 等。在同计算机通讯时,使用下面 这些 值:300, 1200, 2400, 4

21、800, 9600, 14400, 19200, 28800, 38400, 57600 或 115200 bps(每秒位元 组)。你也可以在任何 时候使用其它的值,比如,与 0 号或 1 号插口通信就要求特殊的波特率。用在 setup()函数里范例:Serial.begin(9600)int Serial.available()判断缓冲器状态。回传有多少位元组(bytes)的资料尚未被 read()函式读取,如果回传值是 0 代表所有序列埠上资料都已经被 read()函式读取。范例:int count = Serial.available();int Serial.read()读串口并返回收

22、到参数。Serial.read() 读取持续输入的数据。读取 1byte 的序列资料范例:int data = Serial.read();Serial.flush() 清空缓冲器。 有时候因为资料速度太快,超 过程式处理资料的速度,你可以使用此函式清除缓冲区内的资料。经过此函式可以确保缓冲区(buffer)内的资料都是最新的。范例:Serial.flush();Serial.print(data)从串行端口输出数据。Serial.print(数据)默认为十进制等于 Serial.print(数据,DEC)。Serial.print(data, encoding) 经序列埠传送资料,提供编码方

23、式的选项。 Serial.print(数据,数据的进制)如果没有指定,预设以一般文字传 送。范例:Serial.print(75); / 列印出 “75“Serial.print(75, DEC); /列印出 “75“Serial.print(75, HEX); / “4B“ (75 的十六进位)Serial.print(75, OCT); / “113“ (75 in 的八进位)Serial.print(75, BIN); / “1001011“ (75 的二进位)Serial.print(75, BYTE); / “K“ (以 byte 进行传送,显 示以 ASCII 编码方式)Serial.println(data) 从串行端口输出数据,跟随一个回车和一个换行符。这个函数所取得的值与 Serial.print()一 样。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。