Arduino 语言基础&函数

数据类型

int,unsigned int,long,unsigned long,float,double,char,unsigned char,int arr[],char str[],String str,boolean,byte,word

基本数据类型

int: 整型数据类型,表示整数。范围为 -32,768 到 32,767。

1
int a = 10;

unsigned int: 无符号整型数据类型,表示非负整数。范围为 0 到 65,535。

1
unsigned int b = 10;

long: 长整型数据类型,表示较大的整数。范围为 -2,147,483,648 到 2,147,483,647。

1
long c = 100000L;

unsigned long: 无符号长整型数据类型,表示较大的非负整数。范围为 0 到 4,294,967,295。

1
unsigned long d = 100000UL;

float: 浮点型数据类型,用于表示小数。范围约为 -3.4028235E+38 到 3.4028235E+38。

1
float e = 3.14;

double: 双精度浮点型数据类型,在 Arduino 中与 float 相同。

1
double f = 6.28;

char: 字符型数据类型,用于存储单个字符。范围为 -128 到 127。

1
char g = 'A';

unsigned char: 无符号字符型数据类型,表示非负字符值。范围为 0 到 255。

1
unsigned char h = 'B';

数组和字符串

数组: 可以存储多个相同类型的值。数组中的元素通过索引访问。

1
int arr[5] = {1, 2, 3, 4, 5}; // 定义一个包含 5 个整数的数组

字符串: 在 Arduino 中,字符串可以用字符数组或 String 类表示。

字符数组:

1
char str[] = "Hello";

String 类:

1
String str = "Hello";

布尔类型

boolean: 布尔型数据类型,表示 true 或 false。

1
boolean flag = true;

特殊类型

byte: 无符号 8 位整型数据类型,范围为 0 到 255。

1
byte i = 255;

word: 无符号 16 位数据类型,范围为 0 到 65,535。

1
word j = 1024;

变量修饰符

const: 表示常量,值不能被修改。

1
const int k = 10;

volatile: 告诉编译器变量的值可能会被外部事件改变,不要优化代码。

1
volatile int l = 0;

static: 表示变量在函数间共享,只初始化一次。

1
static int m = 0;

基本函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// pinMode(pin, mode): 设置指定引脚的模式(输入或输出)。
// mode: INPUT,OUTPUT
pinMode(13, OUTPUT); // 将引脚 13 设置为输出模式

// digitalWrite(pin, value): 将高或低电平写入指定的数字引脚。
digitalWrite(13, HIGH); // 将引脚 13 设置为高电平

// digitalRead(pin): 从指定的数字引脚读取高或低电平。
int buttonState = digitalRead(2); // 从引脚 2 读取电平状态

//analogWrite(pin, value): 将模拟值(0-255)写入指定的 PWM 引脚。
analogWrite(9, 128); // 在引脚 9 上输出 50% 占空比的 PWM 信号

// analogRead(pin): 从指定的模拟引脚读取值(0-1023)。
int sensorValue = analogRead(A0); // 从引脚 A0 读取模拟值

时间函数

1
2
3
4
5
6
7
8
// delay(ms): 暂停程序指定的时间(毫秒)。
delay(1000); // 暂停程序 1 秒

//millis(): 返回自 Arduino 板上电或复位以来经过的时间(毫秒)。
unsigned long currentTime = millis();

//delayMicroseconds(us): 暂停程序指定的时间(微秒)。
delayMicroseconds(10); // 暂停程序 10 微秒

串口通信函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Serial.begin(baudRate): 初始化串口通信,并设置波特率。
Serial.begin(9600); // 初始化串口通信,波特率为 9600

// Serial.print(data): 通过串口发送数据。
Serial.print("Hello, world!"); // 发送字符串

// Serial.println(data): 通过串口发送数据,并换行。
Serial.println(123); // 发送数字并换行

// Serial.read(): 从串口读取一个字节的数据。
int incomingByte = Serial.read(); // 读取串口数据

//Serial.available(): 返回可读取的字节数。
if (Serial.available() > 0) {
int incomingByte = Serial.read();
}

数学函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// min(x, y): 返回 x 和 y 中的最小值。
int minimum = min(5, 10); // 最小值为 5

//max(x, y): 返回 x 和 y 中的最大值。
int maximum = max(5, 10); // 最大值为 10

//abs(x): 返回 x 的绝对值。
int absoluteValue = abs(-10); // 绝对值为 10

///constrain(x, a, b): 将 x 限制在 a 和 b 之间。
int constrainedValue = constrain(15, 10, 20); // 限制后的值为 15

//map(value, fromLow, fromHigh, toLow, toHigh): 将一个数从一个范围映射到另一个范围。
int mappedValue = map(50, 0, 100, 0, 255); // 映射后的值为 127