当前位置:首页Arduino > 正文

Arduino编程语言中常用的函数和方法

作者:野牛程序员:2023-06-11 16:54:46Arduino阅读 3291

在Arduino编程语言中,有一些常用的函数和方法可以帮助你进行各种操作。下面是一些常见的函数和方法:

  1. pinMode(pin, mode):设置指定引脚的模式,可以是输入(INPUT)、输出(OUTPUT)或输入上拉(PULLUP)。

  2. digitalWrite(pin, value):将指定引脚设置为高电平(HIGH)或低电平(LOW)。

  3. digitalRead(pin):读取指定引脚的电平状态,返回HIGH或LOW。

  4. analogRead(pin):读取指定引脚的模拟电压值,返回0到1023之间的整数。

  5. analogWrite(pin, value):向指定引脚写入模拟输出值,该引脚必须支持PWM功能,value范围为0到255。

  6. delay(ms):延迟指定毫秒数,暂停程序执行。

  7. millis():返回自程序开始以来的毫秒数,用于计时或时间戳。

  8. Serial.begin(baudrate):初始化串口通信,设置波特率。

  9. Serial.print(data):将数据打印到串口,可以是数字、字符或字符串。

  10. Serial.read():从串口读取一个字节的数据。

  11. attachInterrupt(digitalPin, ISR, mode):将中断处理函数(ISR)绑定到指定引脚的中断事件,mode可以是RISING(上升沿触发)、FALLING(下降沿触发)或CHANGE(任意电平变化触发)。

这只是一小部分Arduino编程语言中常用的函数和方法。还有很多其他功能和库可用于更高级的操作,如LCD显示、传感器读取、通信协议等。


以下是对每个函数的更详细说明:

  1. pinMode(pin, mode):

    • pin:要设置模式的引脚号。

    • mode:要设置的模式,可以是INPUT(输入模式)、OUTPUT(输出模式)或INPUT_PULLUP(输入上拉模式)。

    • 用法:pinMode(pin, mode)

    • 功能:设置指定引脚的工作模式。

    • 参数:

  2. digitalWrite(pin, value):

    • pin:要设置电平的引脚号。

    • value:要设置的电平,可以是HIGH(高电平)或LOW(低电平)。

    • 用法:digitalWrite(pin, value)

    • 功能:设置指定引脚的输出电平。

    • 参数:

  3. digitalRead(pin):

    • pin:要读取电平的引脚号。

    • 用法:digitalRead(pin)

    • 功能:读取指定引脚的输入电平。

    • 参数:

    • 返回值:返回引脚的电平状态,可以是HIGHLOW

  4. analogRead(pin):

    • pin:要读取的引脚号。

    • 用法:analogRead(pin)

    • 功能:读取指定引脚的模拟电压值。

    • 参数:

    • 返回值:返回0到1023之间的整数,表示引脚的模拟电压值。

  5. analogWrite(pin, value):

    • pin:要写入模拟输出的引脚号。

    • value:要写入的模拟输出值,范围为0到255。

    • 用法:analogWrite(pin, value)

    • 功能:向支持PWM(脉冲宽度调制)的引脚写入模拟输出值。

    • 参数:

  6. delay(ms):

    • ms:要延迟的毫秒数。

    • 用法:delay(ms)

    • 功能:暂停程序执行指定的毫秒数。

    • 参数:

  7. millis():

    • 用法:millis()

    • 功能:返回自程序开始以来经过的毫秒数。

    • 返回值:返回一个unsigned long类型的值,表示自程序开始以来的毫秒数。

  8. Serial.begin(baudrate):

    • baudrate:串口通信的波特率。

    • 用法:Serial.begin(baudrate)

    • 功能:初始化串口通信。

    • 参数:

  9. Serial.print(data):

    • data:要打印的数据,可以是数字、字符或字符串。

    • 用法:Serial.print(data)

    • 功能:将数据打印到串口。

    • 参数:

  10. Serial.read():

    • 用法:Serial.read()

    • 功能:从串口读取一个字节的数据。

    • 返回值:返回一个int类型的值,表示读取到的字节数据。

  11. attachInterrupt(digitalPin, ISR, mode):

    • digitalPin:要绑定中断的引脚号。

    • ISR:中断处理函数,是一个用户定义的函数。

    • mode:中断触发模式,可以是RISING(上升沿触发)、FALLING(下降沿触发)或CHANGE(任意电平变化触发)。

    • 用法:attachInterrupt(digitalPin, ISR, mode)

    • 功能:将中断处理函数(ISR)绑定到指定引脚的中断事件。

    • 参数:

  1. random(min, max):

    • min:生成的随机数的最小值。

    • max:生成的随机数的最大值。

    • 用法:random(min, max)

    • 功能:生成指定范围内的随机数。

    • 参数:

    • 返回值:返回一个介于minmax之间的随机数。

  2. map(value, fromMin, fromMax, toMin, toMax):

    • value:要映射的值。

    • fromMin:原始范围的最小值。

    • fromMax:原始范围的最大值。

    • toMin:目标范围的最小值。

    • toMax:目标范围的最大值。

    • 用法:map(value, fromMin, fromMax, toMin, toMax)

    • 功能:将一个值从一个范围映射到另一个范围。

    • 参数:

    • 返回值:返回映射后的值。

  3. tone(pin, frequency, duration):

    • pin:要生成音调的引脚号。

    • frequency:要生成的音调的频率。

    • duration:音调持续的时间(以毫秒为单位)。

    • 用法:tone(pin, frequency, duration)

    • 功能:在指定引脚上生成指定频率的方波音调。

    • 参数:

  4. noTone(pin):

    • 用法:noTone(pin)

    • 功能:停止在指定引脚上生成音调。

  5. delayMicroseconds(us):

    • us:要延迟的微秒数。

    • 用法:delayMicroseconds(us)

    • 功能:暂停程序执行指定的微秒数。

    • 参数:

  6. attachInterrupt(digitalPin, ISR, mode):

    • digitalPin:要绑定中断的引脚号。

    • ISR:中断处理函数,是一个用户定义的函数。

    • mode:中断触发模式,可以是RISING(上升沿触发)、FALLING(下降沿触发)或CHANGE(任意电平变化触发)。

    • 用法:attachInterrupt(digitalPin, ISR, mode)

    • 功能:将中断处理函数(ISR)绑定到指定引脚的中断事件。

    • 参数:

  7. detachInterrupt(digitalPin):

    • 用法:detachInterrupt(digitalPin)

    • 功能:解除指定引脚上的中断绑定。


以下是一些常见功能的示例:

  1. 控制LED灯的开关:

int ledPin = 13;

void setup() {
  pinMode(ledPin, OUTPUT);
}

void loop() {
  digitalWrite(ledPin, HIGH);  // 将LED引脚设置为高电平,点亮LED
  delay(1000);                 // 延迟1秒
  digitalWrite(ledPin, LOW);   // 将LED引脚设置为低电平,熄灭LED
  delay(1000);                 // 延迟1秒
}
  1. 使用模拟输入控制LED的亮度:

int ledPin = 9;
int potPin = A0;

void setup() {
  pinMode(ledPin, OUTPUT);
}

void loop() {
  int potValue = analogRead(potPin);    // 读取模拟输入值
  int brightness = map(potValue, 0, 1023, 0, 255);  // 映射到0-255范围
  analogWrite(ledPin, brightness);      // 设置LED亮度
}
  1. 使用超声波传感器测距并显示在串口:

const int trigPin = 9;   // 超声波传感器的触发引脚连接到Arduino的9号引脚
const int echoPin = 10;  // 超声波传感器的回声引脚连接到Arduino的10号引脚

void setup() {
  Serial.begin(9600);    // 初始化串口通信,波特率设置为9600
  pinMode(trigPin, OUTPUT);  // 设置超声波传感器的触发引脚为输出模式
  pinMode(echoPin, INPUT);   // 设置超声波传感器的回声引脚为输入模式
}

void loop() {
  digitalWrite(trigPin, LOW);    // 将超声波传感器的触发引脚设置为低电平
  delayMicroseconds(2);           // 延迟2微秒,确保触发信号低电平的持续时间足够短
  digitalWrite(trigPin, HIGH);   // 将超声波传感器的触发引脚设置为高电平
  delayMicroseconds(10);          // 延迟10微秒,产生一个短暂的触发脉冲
  digitalWrite(trigPin, LOW);    // 将超声波传感器的触发引脚设置为低电平

  long duration = pulseIn(echoPin, HIGH);  // 读取超声波传感器回声引脚的脉冲持续时间
  int distance = duration * 0.034 / 2;     // 将脉冲持续时间转换为距离(单位:厘米)

  Serial.print("Distance: ");     // 打印测量结果前的提示文本
  Serial.print(distance);         // 打印测量到的距离值
  Serial.println(" cm");          // 打印距离值的单位(厘米)
  
  delay(1000);                    // 延迟1秒,等待下一次测量
}

这些示例展示了一些常见的功能,包括控制LED灯的开关、使用模拟输入控制LED的亮度和使用超声波传感器测距。

超声波传感器通过发送超声波脉冲并测量脉冲的回声来实现距离测量。其工作原理如下:

  1. 发送脉冲:超声波传感器内部的发射器会发出一个高频超声波脉冲,通常在40kHz范围内。这个脉冲由传感器的触发引脚控制,通过将触发引脚置为高电平,传感器会发射一个短暂的超声波脉冲。

  2. 脉冲传播:超声波脉冲会以声速在空气中传播,沿途遇到物体时会发生反射。

  3. 接收回声:超声波传感器内部的接收器会监听回声信号。当脉冲遇到物体并被反射回来时,接收器会接收到回声信号。

  4. 计算时间差:传感器测量回声信号的到达时间,即脉冲从发射到接收的时间间隔。这个时间间隔可以用来计算物体与传感器之间的距离。

  5. 距离计算:基于声音在空气中的传播速度,通常约为 340 米/秒(在大气压力和温度下),可以将时间间隔转换为距离。通过将时间间隔乘以声速的一半,我们可以得到物体与传感器之间的距离。

需要注意的是,超声波传感器的测距原理基于声波的传播时间,因此适用于非接触式测距。它可以测量到物体与传感器之间的距离,无论物体是固体、液体还是可测量的表面。然而,超声波传感器对物体的形状、材质和表面特性可能会产生影响,并且在某些情况下可能存在测量误差。因此,在使用超声波传感器进行测距时,需要考虑这些因素以获得准确的测量结果。



delayMicroseconds(2); 是一个延迟函数,它会暂停程序的执行,使其休眠指定的微秒数。在这个例子中,delayMicroseconds(2); 的意思是要延迟程序执行 2 微秒。

Arduino 的 delayMicroseconds() 函数用于实现非常短的延迟,以微秒为单位。它在需要非常精确的时间控制或者需要与外部设备进行同步时非常有用。

需要注意的是,delayMicroseconds() 函数的参数是一个整数,表示要延迟的微秒数。它的最小延迟时间取决于所使用的 Arduino 板子和处理器的时钟频率,通常在几微秒到数百微秒之间。

在示例中,delayMicroseconds(2); 用于创建一个非常短的延迟,以确保触发超声波传感器的测距操作。在超声波传感器中,发送触发脉冲需要一定的时间,通常在几微秒的范围内。因此,通过使用 delayMicroseconds(2); 来实现一个短暂的延迟,以确保传感器可以准确地接收到触发信号。

需要根据具体的应用场景和硬件要求来决定是否需要使用 delayMicroseconds() 函数以及指定的延迟时间。


这个示例使用了一个超声波传感器来测量距离,并通过串口将测量结果显示出来。

  • setup() 函数中,我们初始化了串口通信,设置了触发引脚(trigPin)和回声引脚(echoPin)的模式。

  • loop() 函数中,我们执行以下操作:

    • 首先,将触发引脚设为低电平,延迟2微秒,然后将其设为高电平,延迟10微秒,再将其设为低电平。这样可以发送一个短暂的触发脉冲给超声波传感器。

    • 接下来,使用 pulseIn() 函数读取回声引脚上的高电平脉冲的持续时间。这个持续时间与声音从传感器发送到物体并返回的时间有关。

    • 根据声音在空气中的传播速度(约为 34 cm/毫秒),我们计算出物体与传感器的距离,将其存储在 distance 变量中。

    • 最后,通过串口打印距离信息,然后延迟1秒钟,以便观察结果。

请注意,这个示例假设你已经正确地连接了超声波传感器,并将其触发引脚和回声引脚连接到了正确的 Arduino 引脚。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击