Arduino基本函数
pinMode(pin,mode)
数字I/O口
-
digitalWrite(pin,value)
-
digitalRead(pin)
模拟I/O口
-
analogReference() param:[DEFAULT,INTERNAL,EXTERNAL]
-
analogRead(pin) 读出引脚位的电压并回传一个0到1023之间的数值表示相对应的0到5的电压值
-
analogWrite(pin,value)
时间函数
-
millis() 计算程序开始执行到现在的毫秒时间 return unsign long型 单位毫秒ms 9小时溢出
-
micros() 单位微秒 us 70分钟溢出
-
delay(ms) 延时函数
-
delayMicroseconds(us)
数学函数
赋值运算符 =
算数操作符 -,+,*,/,%,--,++
关系操作符与逻辑操作符 > ,>= ,<,<=,==,!=,&&,||,!
复合运算符 +=,-=,*=,/=
常用的数学函数
-
min(x,y)
-
max(x,y)
-
abs(x)
-
constrain(x,a,b) 判断变量x位于a与b之间的状态,x若小于a回传a;介于a与b之间回传x本身;大于b回传b
-
map(value,fromLow,fromHigh,toLow,toHigh) 读取类比型号,转换至程序所需要的范围值
-
double pow(base,exponent) 回传一个数(base)的指数(exponent)值
-
double sqrt(x)
-
double sin(rad) 回传角度(radians)的三角函数sines值
-
double cos(rad)
-
double tan(rad)
随机数
-
randomSeed(seed)
-
long random(max)
-
long random(min,max)
字节和位操作
-
lowByte()
-
highByte()
-
bitRead()
-
bitWrite()
-
bitSet()
-
bitClear()
-
bit()
串口通信
这里只是介绍有关Arduino串口通信的相关函数
Serial.begin(int speed)//初始化串口比特率函数
输入相应的数值就把串口通信的寄存器设置为对应的比特率
一般常设置为4800、9600、14400
具体使用时,由所选择的器件决定,如使用蓝牙模块HC-06,串口的波特率应设为9600
Serial.available()//串口输入数据读取前的判断函数
返回值为1时说明串口缓存中有数据,返回值为0说明串口buff中无数据或者数据已经读取出来过。通常使用
if(Serial.available())
来询问或监视串口状态
Serial.read()//从串口buff中读取数据进来
information=Serial.read()
则buff中的数据会赋值给information变量
Serial.flush()//清空串口buff中的数据
Serial.print(data)//把数据data从串口发送出去
-
Serial.print(data)//把data对应的字符串asc2码发送出去
-
Serial.print(data,DEC)//发送的是data的10进制字符串。
-
Serial.print(data,HEX)//发送的是data的16进制字符串。
-
Serial.print(data,OCT)//发送的是data的8进制字符串。
-
Serial.print(data,BIN)//发送的是data的2进制字符串。
-
Serial.print(data,BYTE)//这样是把data作为asc2码对应的字符后发送
-
Serial.println(data)//加上换行符
中断函数
Arduino教程——外部中断的使用-Arduino中文社区 - Powered by Discuz!
-
中断的概念;解决资源竞争的有效方法
-
轮询和中断
注:中断发生时,串口收到的数据可能会丢失。因此我们应该预先声明一个变量,在未发生中断时提前存储重要的数据
外部中断函数
-
attachInterrupt(interrupt,function,mode)
interrupt中断引脚号码
function中断发生时调用的函数。此函数必须不带参数和不返回任何值;该函数有时被成为中断服务程序
mode定义何时发生中断,以下四个contsants预定有效值:
LOW--当引脚为低电平时,触发中断
CHANGE——改变中断
RISING——上升中断
FALLING——下降中断
High--高电平触发(该中断模式仅适用于Arduino due)
-
detachInterrupt(interrupt)//中断开关,interrupt=1开启,interrupt=0关闭
中断使能函数
-
interrupts()//使能中断
-
noInterrupts()//禁止中断
SPI接口
SPI(Serial Peripheral Interface)是串行外设接口的简称。
在arduino的应用中,SPI可作为Arduino控制板之间或者Arduino与带有SPI接口的模块之间通信的工具,
它一般是有6根线组成的:分别是MOSI,MISO,SCK,SS以及地线和电源线
-
MOSI( Master-Out-Slave-In,主出从入)主机数据输出、从机数据输入端
-
MISO(Master-In-Slave-Out,主入从出)主机数据输入、从机数据输出端
-
SCK/SCLK(Serial-Clock,串行时钟)提供串行通信时钟,控制数据的传输。上升沿发送,下降沿接收
-
SS(Slave-Select,从机选择)选择不同的从机设备进行通信,特别是接多个外围设备的时候,可以通过SS控制线,与不同的外围设备进行通信
通信模式
-
Arduino控制单个外围设备
-
Arduino控制多个外围设备
实现方法
通过SPIClass类来实现,能够方便地将Arduino作为主设备与其他从设备通信
SPI.begin()//用于初始化SPI总线
设置SCK,MOSI和SS为输出。把SCK和MOSI拉低,把SS线拉高
SPI.setBitOrder()//设置SPI串行数据传输时先传输低位还是先传输高位
该函数有一个type型的参数bitOrder,有LSBFIRST(最低位在前)和MSBFIRST(最高位在前)两种类型可选
SPI.setClockDivider()//设置SPI串行通信的时钟
通信时钟是由系统是时钟分频而得到的,分频值可选2、4、8、16、32、64、128
有一个type类型的参数rate,分别对应七个分频值,SPI_CLOCK_DIVXXX
函数的默认参数设置是SPI_CLOCK_DIV4,即设置SPI串行通信时钟为系统时钟的1/4
SPI.setDataMode()//设置SPI通信的数据模式
type类型参数有4种类型,分别是SPI_MODE0、SPI_MODE1、SPI_MODE2和SPI_MODE3
SPI.transfer()//用来传输一个字节
由于SPI是一种全双工、同步的通信总线,所以传输一个数据实际上会发送一个字节,同时接受一个字节。函数的参数为发送的数据值,返回的参数为接收的数据值