Arduino 语法参考

程序功能

用于控制 Arduino 板和执行计算。

数字输入/输出

  • digitalRead(pin)

参数
pin:Arduino 引脚编号。

描述 读取指定的数字引脚的值,无论是HIGH或LOW。

句法 digitalRead(pin)

参数 pin:您要读取的 Arduino 引脚编号

返回 HIGH 或者 LOW

  • digitalWrite(pin, value)

参数
pin:Arduino 引脚编号。
value:HIGH或LOW。

描述 将一个HIGH或一个LOW值写入数字引脚。

如果引脚已配置为OUTPUT带pinMode(),则其电压将设置为相应的值:5V(或 3.3V 板上的
3.3V)代表HIGH,0V(接地)代表LOW。

如果引脚配置为INPUT,digitalWrite()将启用 ( HIGH) 或禁用 ( LOW)
输入引脚上的内部上拉。建议设置pinMode()以INPUT_PULLUP使能内部上拉电阻。

  • pinMode(pin, mode)

参数 pin:要设置模式的 Arduino 引脚号。
mode: INPUT, OUTPUT, 或INPUT_PULLUP

描述 配置指定的引脚作为输入或输出 句法 pinMode(pin, mode)

模拟输入/输出

  • analogRead(pin)

参数
pin:要读取的模拟输入引脚的名称

返回值
引脚上的模拟读数

从指定的模拟引脚读取值。Arduino 板包含一个多通道、10 位模数转换器。这意味着它会将 0 和工作电压(5V 或
3.3V)之间的输入电压映射为 0 和 1023 之间的整数值

  • analogReference(type)

配置用于模拟输入的参考电压(即用作输入范围顶部的值)

注意事项和警告
更改模拟参考后,前几个读数analogRead()可能不准确。

不要使用任何低于 0V 或高于 5V 的电压作为 AREF 引脚上的外部参考电压!如果您在 AREF 引脚上使用外部参考,则必须在调用之前将模拟参考设置为 EXTERNAL analogRead()。否则,您会将有效参考电压(内部生成)和 AREF 引脚短路,可能会损坏 Arduino 板上的微控制器

  • analogWrite(pin, value)

参数
pin:要写入的 Arduino 引脚。允许的数据类型:int.
value:占空比:介于 0(始终关闭)和 255(始终打开)之间。允许的数据类型:int.

将模拟值(PWM 波)写入引脚。可用于以不同的亮度点亮 LED 或以不同的速度驱动电机。调用 后analogWrite(),该引脚将生成指定占空比的稳定矩形波,直到在同一引脚上下一次调用analogWrite()

示例代码
将输出设置为与从电位计读取的值成比例的 LED。

int ledPin = 9;      // LED connected to digital pin 9
int analogPin = 3;   // potentiometer connected to analog pin 3
int val = 0;         // variable to store the read value

void setup() {
  pinMode(ledPin, OUTPUT);  // sets the pin as output
}

void loop() {
  val = analogRead(analogPin);  // read the input pin
  analogWrite(ledPin, val / 4); // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
}

Zero、Due、MKR 系列、Nano 33(BLE 和 IoT)和 Portenta 的模拟 API 的扩展

  • analogReadResolution()
  • analogWriteResolution()

高级输入/输出

  • noTone(pin)

参数
pin:停止生成音调的 Arduino 引脚

停止生成由 触发的方波tone()。如果没有产生音调,则无效。

注意事项和警告
如果您想在多个引脚上演奏不同的音高,则需要先调用noTone()一个引脚,然后再调用tone()下一个引脚

  • pulseIn(pin, value)
  • pulseIn(pin, value, timeout)

参数
pin:要读取脉冲的 Arduino 引脚编号。允许的数据类型:int.
value:要读取的脉冲类型:HIGH或LOW。允许的数据类型:int.
timeout(可选):等待脉冲开始的微秒数;默认为一秒。允许的数据类型:unsigned long.

读取引脚上的脉冲(HIGH或LOW)。例如,如果value是HIGH,则pulseIn()等待引脚从LOW到HIGH,开始计时,然后等待引脚离开LOW并停止计时。以微秒为单位返回脉冲的长度,如果在超时内没有收到完整的脉冲,则放弃并返回
0

  • pulseInLong(pin, value)
  • pulseInLong(pin, value, timeout)

参数
pin:要读取脉冲的 Arduino 引脚编号。允许的数据类型:int.
value:要读取的脉冲类型:HIGH或LOW。允许的数据类型:int.
timeout(可选):等待脉冲开始的微秒数;默认为一秒。允许的数据类型:unsigned long.

返回值

脉冲的长度(以微秒为单位),如果在超时之前没有脉冲开始,则为 0。数据类型:unsigned long

pulseInLong()是pulseIn()的替代方法,它更擅长处理长脉冲和中断受影响的场景。

读取引脚上的脉冲(HIGH或LOW)。例如,如果value是HIGH,则pulseInLong()等待引脚从LOW到HIGH,开始计时,然后等待引脚离开LOW并停止计时。以微秒为单位返回脉冲的长度,如果在超时内没有收到完整的脉冲,则放弃并返回
0。

此功能的时序已根据经验确定,并且可能会在较短的脉冲中显示错误。适用于长度从 10 微秒到 3
分钟的脉冲。只有在激活中断时才能使用该例程。此外,以大间隔获得最高分辨率

注意事项和警告
此函数依赖于micros()所以不能在noInterrupts()上下文中使用

  • byte incoming = shiftIn(dataPin, clockPin, bitOrder)

参数
dataPin:输入每一位的引脚。允许的数据类型:int.
clockPin:切换到从dataPin读取信号的引脚。
bitOrder: 在位中移动的顺序;要么MSBFIRST或LSBFIRST。(最高有效位在前,或最低有效位在前)

返回值

读取的值。数据类型:byte.

一次一位地移入一个字节的数据。从最高(即最左侧)或最低(最右侧)有效位开始。对于每一位,时钟引脚被拉高,从数据线读取下一位,然后时钟引脚被拉低。

如果您与由上升沿计时的设备接口,则需要确保在第一次调用
之前时钟引脚为低电平shiftIn(),例如调用digitalWrite(clockPin, LOW)。

注意:这是一个软件实现;Arduino 还提供了一个使用硬件实现的SPI 库,该库速度更快但仅适用于特定引脚

  • shiftOut(dataPin, clockPin, bitOrder, value)

参数
dataPin:输出每一位的引脚。允许的数据类型:int.
clockPin:一旦 dataPin 被设置为正确的值就切换的引脚。允许的数据类型:int.
bitOrder: 移出位的顺序;MSBFIRST 或 LSBFIRST。(最高有效位在前,或最低有效位在前)。
value: 要移出的数据。允许的数据类型:byte.

一次一位地移出一个字节的数据。从最高(即最左侧)或最低(最右侧)有效位开始。每个位依次写入数据引脚,之后时钟引脚发出脉冲信号(先变为高电平,然后变为低电平)以指示该位可用。

注意 - 如果您与由上升沿计时的设备接口,则需要确保在调用
之前时钟引脚为低电平shiftOut(),例如调用digitalWrite(clockPin, LOW)。

这是一个软件实现;另请参阅SPI 库,它提供了一个更快但仅适用于特定引脚的硬件实现

  • tone(pin, frequency)
  • tone(pin, frequency, duration)

参数
pin:在其上生成音调的 Arduino 引脚。
frequency:以赫兹为单位的音调频率。允许的数据类型:unsigned int.
duration:以毫秒为单位的音调持续时间(可选)。允许的数据类型:unsigned long.

在引脚上生成指定频率(和 50%
占空比)的方波。可以指定持续时间,否则波形将继续直到调用noTone()。该引脚可以连接到压电蜂鸣器或其他扬声器以播放音调。

一次只能产生一种音调。如果音调已经在不同的引脚上播放,则呼叫tone()将无效。如果音调在同一引脚上播放,则呼叫将设置其频率

延时函数

  • delay(ms)

参数
ms:暂停的毫秒数。允许的数据类型:unsigned long.

暂停程序指定为参数的时间量(以毫秒为单位)。(一秒钟有 1000 毫秒。)

  • delayMicroseconds(us)

参数
us:暂停的微秒数。允许的数据类型:unsigned int

暂停程序由参数指定的时间量(以微秒为单位)。一毫秒有一千微秒,一秒有一百万微秒

  • time = micros()

返回值
返回自 Arduino 板开始运行当前程序以来的微秒数

返回自 Arduino 板开始运行当前程序以来的微秒数。该数字将在大约 70 分钟后溢出(返回零)。

  • time = millis()

返回值
自程序启动以来经过的毫秒数。数据类型:unsigned long.

返回自 Arduino 板开始运行当前程序以来经过的毫秒数。该数字将在大约 50 天后溢出(返回零)

数学运算

  • abs(x)

返回值
x: 如果 x 大于或等于 0。
-x: 如果 x 小于 0。

计算一个数的绝对值

  • constrain(x, a, b)

参数
x: 限制数量允许的数据类型:所有数据类型。
a: 范围的下限。允许的数据类型:所有数据类型。
b: 范围的上限。允许的数据类型:所有数据类型

返回值

x:如果 x 在 a 和 b 之间。
a:如果 x 小于 a。
b:如果 x 大于 b。

将数字限制在一个范围内

map()
max()
min()
pow()
sq()
sqrt()

三角运算

cos()
sin()
tan()

字符处理

isAlpha()
isAlphaNumeric()
isAscii()
isControl()
isDigit()
isGraph()
isHexadecimalDigit()
isLowerCase()
isPrintable()
isPunct()
isSpace()
isUpperCase()
isWhitespace()

随机数

random()
randomSeed()

位和字节

bit()
bitClear()
bitRead()
bitSet()
bitWrite()
highByte()
lowByte()

外部中断

attachInterrupt()
detachInterrupt()

通信端口

Serial
Stream

USB设备

Keyboard
Mouse

数据类型

Arduino 数据类型和常量。

常数

HIGH | LOW
INPUT | OUTPUT | INPUT_PULLUP
LED_BUILTIN
true | false
Floating Point Constants
Integer Constants

类型转换

(unsigned int)
(unsigned long)
byte()
char()
float()
int()
long()
word()

数据类型

array
bool
boolean
byte
char
double
float
int
long
short
size_t
string
String()
unsigned char
unsigned int
unsigned long
void
word

变量范围和限定符

const
scope
static
volatile

类型工具

PROGMEM
sizeof()

程序结构

Arduino (C++) 代码的结构

程序框架

loop()
setup()

程序流程

break
continue
do…while
else
for
goto
if
return
switch…case
while

算术运算符

%(余数)
*(乘法)
+(加法)
-(减法)
/(除法)
=(赋值运算符)

比较运算符

!=(不等于)
<(小于)
<=(小于或等于)
==(等于)
>(大于)
>=(大于或等于)

布尔运算符

!(逻辑非)
&& (逻辑与)
|| (逻辑或)

指针访问运算符

&(引用运算符)
*(解引用运算符)

按位运算符

&(按位与)
<<(左移)
>>(右移)
^(按位异或)
| (按位或)
~(按位不)

复合运算符

%=(复合余数)
&=(复合按位和)
*=(复合乘法)
++(递增)
+=(复合加法)
–(递减)
-=(复合减法)
/=(复合除法)
^=(复合按位异或)
|=(复合按位或)

其他语法

#define (define)
#include (include)
/* */ (块注释)
// (单行注释)
; (分号)
{}(花括号)

资料来自于:https://www.arduino.cc/reference/en/

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值