一、引脚

Arduino学习笔记-LMLPHP

二、函数介绍

1.pinMode(pin, mode)

引脚配置成输入或者输出,其中mode可以为INPUT或者OUTPUT

例如:
pinMode(7, INPUT); // 将引脚7定义为输入接口

2.digitalWrite(pin, value)

打开一个数值引脚并将其赋值高电平或者低电平,此引脚必须是前面定义过的输入或者输出模式,否则digitalWrite不生效。

value可以为HIGH或者LOW

例如:
digitalWrite(8, HIGH); // 给8号引脚高电平

3.digitalRead(pin)

读取一个输入状态的引脚值。当引脚处于高电平状态时返回HIGH,否则返回LOW。

例如:

val = digitalRead(7); // 读取7号引脚的值并赋值给val

4.analogRead(pin)

读取模拟输入引脚的值,并将其表示为0至1023之间的数值,对应0至5V的电压。

例如:
val = analogRead(0); // 读取模拟接口0的值,并赋值给val

5.analogWrite(pin, value)

改变该引脚的PWM输出数值,引脚(pin)可以是3、5、6、9、10、11。PWM值的改变范围是0至255,对应的电压输出值是0至5V。

例如:
analogWrite(9, 128); // 将9号引脚的LED点亮至50%亮度

6.Serial.begin(speed)

为与Arduino串口通信做准备,我们可以通过Arduino的上位机软件检测返回值,这里设置通信的波特率,我们通常使用9600,我们也可以使用其他的通信波特率,但最大值是115200.
例如:
Serial.begin(9600);

7.Serial.print(data)
   Serial.print(data, encoding)

将数据通过串口传回,encoding指明数据传回类型,默认为纯文本格式。
例如:
Serial.print(75); //显示75
Serial.print(75, DEC); //同上
Serial.print(75, HEX); //“4B”(75的十六进制表达)
Serial.print(75,OCT); //“113”(75的八进制表达)
Serial.print(75, BIN); //“1001011”(75的二进制表达)
Serial.print(75, BYTE); //“K”(K的ASCII码值是75)

8.Serial.println(data)
   Serial.println(data, encoding)

与Serial.print(data)相同,只是在传回数据的末尾多加一个换行符(\r\n)。换行符的意义就等于你在输入一些文字后敲入的回车键。
例如:
Serial.println(75); //显示“75\r\n”
Serial.println(75, DEC); //同上
Serial.println(75, HEX); //“4B\r\n”
Serial.println(75,OCT); //“113\r\n”
Serial.println(75, BIN); //“1001011\r\n”
Serial.println(75, BYTE); //“K\r\n”

9.pulseIn(pin, value)

读取一个引脚的脉冲持续时间,例如使用红外传感器或者加速度计时。它们都是利用单位时间不同的脉冲来获得状态值的传感器。
例如:
time = pulseIn(7,HIGH); // 读取7号引脚持续为高电平的时间

10.delay(ms)

延迟一定毫秒的时间。
例如:
delay(500); // 延迟500ms

11.delayMicroseconds(us)

延迟一定微秒的时间。
例如:
delayMicroseconds(1000); //延时1000us

12.min(x, y)

x和y中返回最小值。
例如:
val = min(10, 20); // val 的值为10

13.max(x, y)

x和y中返回最大值。
例如:
val = max(10, 20); // val 的值为20

14.abs(x)

传回x的绝对值,正数的绝对值是其本身,负数的绝对值是其相反的数。

例如:
val = abs(-5); // val 的值是5

15.map(value, fromLow, fromHigh, toLow, toHigh)

将value的值按照fromLow与fromHigh的范围,对等转换至toLow与toHigh的范围。通常应用于读取相似信号,并将其转换到程序中所需的范围。
例如:
val = map(analogRead(0), 0,1023, 100, 200);   //将模拟接口0读取的0~1023的值转换成0~100的值

16.pow(base, exponent)

传回一个数(base)的指数(exponent)的值
例如:
double x = pow(y, 32); //使x是y的32次方

17.sqrt(x)

去x的平方根。
例如:
double a = sqrt(1138); // 1138的平方根是33.73425674438

18.sin(rad)

传回某个角度(用弧度单位)的正弦值。
例如:
double sine = sin(2); // 2弧度的正弦值近似为0.90929737091

以此有cos(rad)、tan(rad)...

shiftOut(dataPin, clockPin, bitOrder, value)

发送数据到移位寄存器,用来扩大数字输出范围,此函数使用时有一个引脚作为数据输出,另一个引脚用来表示时钟,bitOrder用来表示字节的格式(LSBFIRST是最低有效位,MSBFIRST是最高有效位),value则要输出字节的值。

例如:
shiftOut(dataPin, clockPin, LSBFIRST, 255);

millis()

检测程序执行开始到当前的时间。
例如:
duration = millis()-lastTime; //表示从lastTime到当前的时间

constrain(x, a, b)

判断x与a和b的关系,若x小于a,则传回a;若x介于a与b之间,则传回x本身;若大于b,则传回b。
例如:
val = constrain(analogRead(0), 0, 255); // 忽略大于255的数

randomSeed(seed)

复位Arduino的随机数发生器,会产生一系列的随机数,虽然这些数字貌似是随机产生,但是它们的顺序其实还是可以被预测的。所以如果我们需要真正的一组随机数,我们就要重新设定随机数的种子。若我们没有连接一个模拟值引脚,它可以从周围环境(无线电波、宇宙射线、手机或者荧光灯的电磁干扰等)获得随机噪声。
例如:
randomSeed(analogRead(5)); // 利用5号引脚的噪声

long random(max)
long random(min, max)

传回指定区间的长整型随机数。如果没有规定最小值,则默认最小值为0。
例如:
long randnum = random(o, 100); //传回一个介于0~100之间的数
long randnum = random(11); //传回一个介于0~10之间的数

int Serial.available()

传回一个数值,告诉上位机有多少字节没有被read()函数读取,若Serial.available()返回值是0,则代表串行数据都已被read()读取。
例如:
int count = Serial.available();

int Serial.read()

读取一个字节的串行数据
例如:
int data = Serial.read();

Serial.flush()

因为数据传输的速度要大于Arduino程序处理速度,所以Arduino会将数据先存放在缓存区中。如果有需要,我们可以利用Serial.flush()函数来清空缓存区,以确保缓存区的数据是最新的。
例如:
Serial.flush();

三、程序运行

1.一个Arduino程序分为两部分:

void setup()

在这个函数里防止初始化Arduino的程序,使主循环程序在开始之前设置好相关参数。

void loop()

这是Arduino的主函数。这套程序会一直重复执行,直到电源被断开。

 

2.Arduino语言有一些特殊意义的关键字。

例如:

HIGH和LOW用来表示你打开或关闭(高电平或者低电平);

Arduino的一个引脚(pin),INPUT和OUTPUT用来设定某个特定引脚是输入接口还是输出接口;

INPUT_PULLUP用来设定某个引脚为输入,并且被拉高;

True和False,像它们的字面意思一样;表示一个条件或一个运算是真还是假。

3.语法规则如C语言

02-27 11:02