专栏文章

Arduino C++内置函数详解

算法·理论参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mipebow4
此快照首次捕获于
2025/12/03 10:36
3 个月前
此快照最后确认于
2025/12/03 10:36
3 个月前
查看原文

1. 基础 I/O 函数(Arduino 特有)

  • pinMode(pin, mode)
    设置引脚模式(INPUT, OUTPUT, INPUT_PULLUP)。
    CPP
    pinMode(13, OUTPUT); // 将13号引脚设为输出
    
  • digitalWrite(pin, value)
    向数字引脚写入高(HIGH)或低(LOW)电平。
    CPP
    digitalWrite(13, HIGH); // 点亮LED
    
  • digitalRead(pin)
    读取数字引脚的电平状态。
    CPP
    int val = digitalRead(2); // 读取2号引脚状态
    
  • analogRead(pin)
    读取模拟引脚的值(0-1023)。
    CPP
    int sensorValue = analogRead(A0); // 读取A0引脚
    
  • analogWrite(pin, value)
    输出 PWM 信号(0-255),支持 PWM 引脚。
    CPP
    analogWrite(9, 128); // 50%占空比
    

2. 时间控制(Arduino 特有)

  • delay(ms)
    阻塞延时(毫秒)。
    CPP
    delay(1000); // 等待1秒
    
  • delayMicroseconds(us)
    微秒级延时。
    CPP
    delayMicroseconds(500); // 500微秒
    
  • millis()
    返回系统运行时间(毫秒),非阻塞。
    CPP
    unsigned long time = millis();
    
  • micros()
    返回系统运行时间(微秒)。
    CPP
    unsigned long time = micros();
    

3. 数学与数据处理

  • 标准 C/C++ 函数(需包含 <math.h>
    • abs(x): 绝对值
    • min(a, b), max(a, b): 最小/最大值
    • pow(base, exp): 幂运算
    • sqrt(x): 平方根
    • sin(x), cos(x), tan(x): 三角函数(弧度)
  • Arduino 特有函数
    • map(value, fromLow, fromHigh, toLow, toHigh)
      线性映射数值范围。 CPP
      int mapped = map(analogRead(A0), 0, 1023, 0, 255);
      
    • constrain(value, min, max)
      限制数值在范围内。 CPP
      int limited = constrain(sensorValue, 0, 100);
      
    • random(min, max) / randomSeed(seed)
      生成伪随机数。 CPP
      randomSeed(analogRead(A0)); // 随机种子
      int num = random(1, 100);   // 1到99的随机数
      

4. 串口通信(Arduino 特有,需 Serial 对象)

  • Serial.begin(baudrate)
    初始化串口。
    CPP
    Serial.begin(9600);
    
  • Serial.print(data) / Serial.println(data)
    发送数据到串口。
    CPP
    Serial.print("Sensor: ");
    Serial.println(sensorValue);
    
  • Serial.read()
    读取串口数据。
    CPP
    if (Serial.available()) {
      char c = Serial.read();
    }
    

5. 中断函数(Arduino 特有)

  • attachInterrupt(digitalPin, ISR, mode)
    绑定中断服务函数。
    mode: RISING, FALLING, CHANGE, LOW
    CPP
    attachInterrupt(0, buttonPress, RISING);
    
  • detachInterrupt(digitalPin)
    禁用中断。

6. 存储器操作

  • EEPROM 操作(需 #include <EEPROM.h>
    • EEPROM.read(address)
    • EEPROM.write(address, value)
    • EEPROM.put(address, data) / EEPROM.get(address, data)(存储结构体)

7. 字符串处理

  • 标准 C/C++ 函数(需 <string.h>
    • strcpy(), strcat(): 字符串复制、拼接
    • strlen(): 字符串长度
  • Arduino String
    支持动态字符串操作: CPP
    String msg = "Hello";
    msg += " World!";
    

8. 其他实用函数

  • tone(pin, frequency) / noTone(pin)
    生成指定频率的方波(驱动蜂鸣器)。
    CPP
    tone(8, 1000); // 1kHz 声音
    delay(1000);
    noTone(8);
    
  • pulseIn(pin, state)
    测量引脚脉冲持续时间。
    CPP
    long duration = pulseIn(2, HIGH); // 高电平脉冲时长
    

总结

  • Arduino 特有函数:主要用于硬件交互(如 digitalWrite()analogRead())、时间控制(millis())和通信(Serial)。
  • 标准 C/C++ 函数:数学运算、字符串处理等,需包含对应头文件(如 <math.h><string.h>)。
使用时需注意 Arduino 的内存限制(如避免动态内存分配),并优先使用非阻塞函数(如 millis() 替代 delay())以提高效率。

评论

0 条评论,欢迎与作者交流。

正在加载评论...