Arduino是一款以ATmega微控制器为核心的、开源电子原型平台,它的开源性可以保证每个用户都能够进行程序自定义,无论是新手还是高级用户。在Arduino中,有一个基础性的函数,它的名称就是delay函数,其实现原理及应用方法对于Arduino用户来说具有很大的意义。
一、delay函数的实现原理
delay函数是Arduino程序中最常用的程序之一,它的原理非常简单。当程序中调用此函数时,计时器会开始计时,Arduino板载时钟即为16MHz,即1微秒的时间,函数中传入的参数就是要等待的时间,当计时器计时的时间达到了传入参数定的时间,就可以停止计时器运作,并把程序进行到下一个步骤。在使用这个函数的时候要注意,delay函数是一个阻塞函数,它能够干扰设备的正常工作,不要在处理实时任务的芯片上使用。
二、delay函数的应用方法
1.定时亮灯
通过delay函数调控LED亮灭的时间,可以实现定时亮灯的功能。例如,将LED灯分别熄灭和点亮,用delay函数延时等待,保证LED灯在指定的时间内完成变化。
代码示例:
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(2000); // 2秒后LED亮
digitalWrite(LED_BUILTIN, LOW);
delay(1000); // 1秒后LED熄灭
}
2.控制舵机
舵机是一种常见的电子设备,通过delay函数延迟控制舵机的角度。如果需要让舵机在某个角度上停留,就需要使用delay函数,使程序暂停一段时间,然后才执行下一个任务。
代码示例:
#include
Servo myservo; // 定义一个Servo实例
void setup() {
myservo.attach(9); // 将舵机连接Arduino的引脚9
}
void loop() {
myservo.write(90);
delay(1000); // 延迟1秒
myservo.write(0);
delay(1000); // 延迟1秒
myservo.write(180);
delay(1000); // 延迟1秒
}
3.控制电机
电机是一个常见的设备,它通过delay函数延迟一定的时间,通过高或低电位控制引脚,来实现电机旋转方向的改变。
代码示例:
int motorPin1 = 2; // pin2连接L298N A接口
int motorPin2 = 3; // pin3连接L298N A接口
void setup(){
pinMode(motorPin1,OUTPUT);
pinMode(motorPin2,OUTPUT);
}
void loop(){
digitalWrite(motorPin1,HIGH); // 电机顺时针旋转
digitalWrite(motorPin2,LOW); // 停止旋转之前先让电机停止
delay(8000); // 电机运行8秒
digitalWrite(motorPin1,LOW); // 电机逆时针旋转
digitalWrite(motorPin2,HIGH);
delay(8000); // 电机运行8秒
}
4.倒计时程序
delay函数还可以用于倒计时计时程序中,可以帮助我们实现倒计时的功能。
代码示例:
void setup() {
Serial.begin(9600);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000); // 1 second delay
digitalWrite(LED_BUILTIN, LOW);
delay(1000); // 1 second delay
Serial.println("倒计时函数程序:");
for (int i = 10; i >= 0; i--) { //倒计时,从10逐渐递减到0
Serial.println(i);
delay(1000); //暂停1秒
}
Serial.println("倒计时结束!");
}
总结:
在日常的Arduino开发中,delay函数是一个基本的命令,它可以帮助我们实现各种不同的实用功能,如定时亮灯、控制舵机、控制电机和倒计时计时程序等。好的应用方法能让你的设计更加精细,更加聪明,更加高效。当然,在实现的过程中我们需要注意到delay函数的阻塞性,不要在处理实时任务的芯片上使用。