arduino 笔记–常用语句

arduino语言

结构

void setup()

初始化变量,管脚模式,调用库函数等

**void loop() **

连续执行函数内的语句

功能

数字I/O

pinMode(pin, mode)

接口定义为输入或输出接口,用在setup()函数里。

数字 IO 口输入输出模式定义函数,

pin表示为 0~13, mode 表示为 INPUT 或 OUTPUT。

1
pinMode(7,INPUT); // 将脚位 7 设定为输入模式
digitalWrite(pin, value)

将数字接口值至高或 低。

数字 IO 口输出电平定义函数,pin表示为 0~13,value 表示为 HIGH 或 LOW。

比如定义 HIGH可以驱动 LED。

1
digitalWrite(8,HIGH); //将脚位 8 设定输出高电位
int digitalRead(pin)

读出数字接口的值。

数字 IO 口读输入电平函数,

pin 表示为 0~13,value 表示为 HIGH 或 LOW。比如可以读数字传感器。

1
val = digitalRead(7); // 读出脚位 7 的值并指定给 val

模拟I/O

int analogRead(pin)

从指定的模拟接口读取值,Arduino对该模拟值进行 10-bit 的数字转换,这个方法将输入的 0-5 电压值转换为 0 到 1023 间的整数值。

模拟 IO 口读函数,

pin 表示为 0~5 (Arduino Diecimila 为 0~5,Arduino nano 为 0~7)。

比如可以读模拟传感器(10 位 AD,0~5V 表示为 0~1023)。

1
val = analogRead(0); //读出类比脚位 0 的值并指定给 val 变数
analogWrite(pin, value) - PWM

给一个接口写入模拟值(PWM波)。对于 ATmega168 芯片的 Arduino(包括 Mini 或 BT),该函数 可以工作于 3, 5, 6, 9, 10 和 11 号接口。

数字IO口PWM输出函数,

Arduino 数字 IO 口标注了 PWM 的 IO 口可使用该函数,pin 表

示 3, 5, 6, 9, 10, 11,value 表示为 0~255。比如可用于电机

PWM 调速或音乐播放。

1
analogWrite(9,128); // 输出电压约 2.5 伏特(V)

扩展I/O

shiftOut(dataPin, clockPin, bitOrder, value)

把资料传给用来延伸数位输出的暂存器,函数使用一个脚位表示资 料、一个脚位表示时脉。bitOrder 用来表示位元间移动的方式(LSBFIRST 最低有效位元或是 MSBFIRST 最高有效位元),最后 value会以 byte 形式输出。此函式通常使用在延伸数位的输出。

SPI 外部 IO 扩展函数,

通常使用带 SPI 接口的 74HC595 做 8 个 IO 扩展,

dataPin 为数据口,clockPin 为时钟口,bitOrder 为数据传输方

向(MSBFIRST 高位在前,LSBFIRST 低位在前),value 表

示所要传送的数据(0~255),另外还需要一个 IO 口做

74HC595 的使能控制。

1
shiftOut(dataPin, clockPin, LSBFIRST, 255);
unsigned long pulseIn(pin, value)

设定读取脚位状态的持续时间,例如使用红外线、加速度感测器测得

某一项数值时,在时间单位内不会改变状态。

脉冲长度记录函数,

返回时间参数(us),pin 表示为 0~13,value 为 HIGH 或 LOW。

比如 value 为 HIGH,那么当 pin 输入为高电平时,开始计时,

当 pin 输入为低电平时,停止计时,然后返回该时间。

1
time = pulsein(7,HIGH); // 设定脚位 7 的状态在时间单位内保持 为 HIGH

时间函数

unsigned long millis()

返回时间函数(单位 ms),该函数是

指,当程序运行就开始计时并返回记录的参数,该参数溢出大

概需要 50 天时间。

1
duration = millis()-lastTime; // 表示自"lastTime"至当下的时 间
delay(ms)

延时函数(单位 ms)。

1
delay(500); //暂停半秒(500 毫秒)
delayMicroseconds(us)

延时函数(单位 us)。

1
delayMicroseconds(1000); //暂停 1 毫秒

随机数函数

randomSeed(seed)

随机数端口定义函数,

seed 表示读模拟口 analogRead(pin)函数 。

事实上在 Arduino 里的乱数是可以被预知的。所以如果需要一个真正的乱数,可以呼叫此函式重新设定产生乱数种子。你可以使用乱数当作乱数的种子,以确保数字以随机的方式出现,通常会使用类比输入当作乱数种子,藉此可以产生与环境有关的乱数(例如:无线电波、宇宙雷射线、电话和萤光灯发出的电磁波等)。

1
randomSeed(analogRead(5)); // 使用类比输入当作乱数种子
long random(max)

随机数函数,

返回数据大于等于 0,小于max。

1
long randnum = random(11); // 回传 0 -10 之间的数字
long random(min, max)

随机数函数,

返回数据大于等于min,小于 max。

1
long randnum = random(0, 100); // 回传 0 – 99 之间的数字

外部中断函数

attachInterrupt(interrupt, , mode)

外部中断只能用到数字IO 口 2 和 3,

interrupt 表示中断口初始 0 或 1,表示一个功能 函数,mode:LOW 低电平中断,CHANGE 有变化就中断,RISING 上升沿中断,FALLING 下降沿中断。

detachInterrupt(interrupt)

中断开关,

interrupt=1 开,interrupt=0 关。

中断使能函数

interrupts()

使能中断

noInterrupts()

禁止中断

串口收发函数

Serial.begin(speed)

串口定义波特率函数,speed 表示波特

率,如 9600,19200 等。

1
Serial.begin(9600);
int Serial.available()

回传有多少位元组(bytes)的资料尚未被 read()函式读取,如果回 传值是 0 代表所有序列埠上资料都已经被 read()函式读取。

判断缓冲器状态。

1
int count = Serial.available();
int Serial.read()

读取持续输入的数据。

读串口并返回收到参数。

Serial.flush()

有时候因为资料速度太快,超过程式处理资料的速度,你可以使用此 函式清除缓冲区内的资料。经过此函式可以确保缓冲区(buffer)内的资料都是最新的。

清空缓冲器。

1
Serial.flush();
Serial.print(data)

串口输出数据。

Serial.println(data)

串口输出数据并带回车符。

1
2
3
4
5
6
7
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
编码方式)