1.pinMode(pin,mode)
pinMode用以配置引脚为输出或输出模式,它是一个无返回值函数,函数有两个参数pin(表示所要配置的引脚)和Mode(参数表示设置的模式——INPUT或者OUTPUT)。
2.digitalWrite(pin,value)
设置引脚的电压为高电压或低电平。该函数也是一个无返回值的函数,函数有两个参数分别表示:
pin参数:要设置引脚;
value参数:表示输出的电压:HIGH或者LOW。
3.digitalRead(pin)
函数可以获取引脚的电压情况——HIGH或LOW,pin表示所要获取电压值的引脚,该函数返回值为int型。
1.analogReference(type)
配置模拟引脚的参考电压。在嵌入式应用中引脚获取模拟电压值之后,根据参考电压将模拟值转换到0~1023。该函数无返回值,参数为type类型。
2.analogRead(pin)
用于读取引脚的模拟量电压值,每读一次需要花μs的时间。参数pin表示所要获取模拟量电压值的引脚,该函数返回值为int型,表示引脚模拟量电压值,范围在0~1023。
analogWrite(pin,value)
anlogWrite函数通过PWM的方式在引脚上输出一个模拟量,较多的应用在LED亮度控制、电机转速等方面。
VCC:高电平值
T:PWM波的周期
D:是高电平宽度
D/T:PWM波的占空比,当上述PWM波通过一个低通滤波器后,波形中高频的部分被滤掉得到所需的波形,其平均电压为 V C C × D / T VCC×D/T VCC×D/T。
1.shiftOut(dataPin,clockPin,bitOrder,val)
2.pulse(pin,state,timeout)
用于读取引脚脉冲的时间函数;
脉冲为HIGH时:先将等引脚变为高电平,然后开始计时,直到变为低电平为止。返回脉冲持续时间长短,单位ms。如果超时还没有多大平的话,返回0;
返回值为无符号长整型(unsigned long),三个参数分别表示脉冲输入的引脚、脉冲响应的状态(高脉冲或者低脉冲)和超时时间。
1.mills()
应用mills函数可获取机器运行的时间长度,单位ms,系统最长记录时间为9小时22分,如果超出时间将从0开始,函数返回值unsigned long型,无参数。
如果用int型保存时间会得到错误结果
2.delay(ms)
延迟函数,单位是ms,无返回值。
3.delayMicroseconds(us)
延迟函数,单位是us。
min(x,y)
返回x,y中两者较小的。
max(x,y)
返回两者中较大的。
abs(x)
获取x的绝对值。
constrain(amt,low,high)
函数的工作过程是:如果amt小于low,则返回low;如果amt大于high,则返回high;否则,返回amt。
该函数一般可以用于将值归一化到某个区间内。
map(x,in_min,in_max,out_min,out_max)
将[in_min,in_max]范围内的x等比映射到[out_min,out_max]范围内。函数返回值为long型,原型为:
sin(rad)、cos(rad)、tan(rad)
三角函数
randomSeed(seed)
设置随机数种子,随机种子的设置对产生的随机序列有影响。函数无返回值。
random(howsmall,howbig)
函数可以生成一个随机数,两个参数howsmall和howbig决定了随机数的范围,函数的参数及返回值均为long型。
作用于设置或读取字节中某一位或几位,包括bitRead()、bitSet()、bitClear()等。
interrputs()和nolnterrupts
负责打开和关闭中断,函数无返回值,无参数。
attachIntterrupt(interrupt,function,mode)
设置外部中断
举例:通过外部引脚触发中断函数,然后控制13号引脚的LED的闪烁。
int pin=13;
volatile int state=LOW;
void setup()
{
pinMode(pin,OUTPUT);
attachInterrupt(0,blink,CHANGE);
//Z中断源:1
//中断处理函数:blink()
//触发模式:CHANGE(变化时触发)
}
void loop()
{
digitalWrite(pin,state);
}
//中断处理函数
void blink()
{
state=!state;
}
在使用attachInterrupt函数时要注意以下几点:
arduino中串口通信是通过HardwareSerial类来实现的,在头文件HardwareSerial类的对象Serial,直接使用类的成员函数就可以简单地实现串口通信。
串口调光器的程序为例子:
const int ledPin=9;
void setup()
{
//设置串口波特率
Serial.begin(9600);
//设置LED控制引脚
pinMode(ledPin,OUTPUT);
}
void loop()
{
byte brightness;
//查询串口是否收到数据
if(Serial.available())
//Serial.available()函数返回值为int型
{
//获取数据,将串口数据读入到变量bright中
//返回值是int型的串口数据
brightness=Serial.read();
//控制LED亮度
analogWrite(ledPin,brightness);
}
}
SPI:同步串行外设接口总线,它可以使MCU与各种外围设备以串行方式进行通信以及交换信息。
总线采用3根或4根数据线进行数据传输,常用的是4根线,即两条控制线(芯片选择CS和时钟SCLK)以及两条数据信号SDI和SDO。
在SPI通信中,数据是同步进行发送和接收的。数据传输的时钟基于来自主处理器产生的时钟脉冲。
SPI接口数据传输
SPI是以主从方式工作的,其允许一个主设备和多个设备进行通信,主折半通过不同的SS信号选择不同的从设备进行通信。
当主设备选中某一个设备后,MISO和MOSI用于串行数据的接收和发送,SCK提供串行通信时钟,上升沿发送,下降沿接收。
在实际应用中,未选中的从设备的MOSI信号线需要处于高阻状态,否则会影响主设备与选中的设备间的正常通信。
SPI类及其成员函数
Arduino中的SPI通信是通过SPIClass类来实现的,使用SPIclass类能够方便地将Arduino作为主设备与其他设备进行通信。SPIClass类提供了6个成员函数使用者调用: