1. pulseIn(pin, state):
用于测量一个脉冲的时长,返回脉冲的宽度(以微秒为单位)。pin 参数指定要测量的引脚,state 参数指定要测量的电平,可以是 HIGH 或 LOW。
unsigned long pulseDuration = pulseIn(7, HIGH); // 读取引脚 7 上的高电平脉冲时长
2. shiftIn(dataPin, clockPin, bitOrder) 和 shiftOut(dataPin, clockPin, bitOrder, value):
用于串行数据传输,常用于与移位寄存器(Shift Register)通信。shiftIn 从指定 dataPin 读取串行数据,shiftOut 将数据写入 dataPin。
// 从引脚 8 读取 8 位串行数据
byte inputData = shiftIn(8, 9, MSBFIRST);
// 将数值 170 通过引脚 8 以 MSBFIRST 顺序写入
shiftOut(8, 9, MSBFIRST, 170);
3. attachInterrupt(digitalPinToInterrupt(pin), ISR, mode) 和 detachInterrupt(digitalPinToInterrupt(pin)):
用于设置和取消中断服务例程(ISR)。pin 参数指定中断触发的引脚,ISR 参数是中断服务例程的函数名,mode 参数指定触发中断的条件,可以是 LOW、CHANGE、RISING 或 FALLING。
void myInterrupt() {
// 中断服务例程的代码
}
void setup() {
attachInterrupt(digitalPinToInterrupt(2), myInterrupt, FALLING); // 当引脚 2 下降沿时触发中断
}
void loop() {
// 主循环的代码
}
4. analogReference(type):
用于设置模拟参考电压。type 参数可以是 DEFAULT、INTERNAL 或 EXTERNAL,分别表示默认参考电压、内部参考电压(一般为 1.1V)或外部参考电压。
analogReference(EXTERNAL); // 设置外部参考电压
5. analogReadResolution(bits) 和 analogWriteResolution(bits):
用于设置模拟读取和模拟写入的位数分辨率。默认情况下,Arduino Uno 使用 10 位分辨率。
analogReadResolution(12); // 设置模拟读取分辨率为 12 位
analogWriteResolution(8); // 设置模拟写入分辨率为 8 位
这些高级 I/O 函数使得 Arduino 能够执行更复杂和高级的操作,适应不同的硬件需求和应用场景。在实际项目中,根据具体的任务和硬件特性,选择合适的高级 I/O 函数可以提高程序的效率和灵活性。
转载请注明出处:http://www.pingtaimeng.com/article/detail/10977/Arduino