📅  最后修改于: 2023-12-03 15:13:28.054000             🧑  作者: Mango
Arduino是一款广泛使用的开源硬件平台,通过简单易学的编程语言,可以方便地控制和监测各种电子设备。这里将介绍Arduino中到期和归零两种重要概念。
在Arduino中,到期指的是计时器到达预定时间后所触发的事件。计时器是一种硬件设备,可以按照预定的时间间隔来计数,并在到达一定的计数值后触发相应的事件。Arduino中常用的计时器有两种,分别是Millis计时器和Micros计时器。
Millis计时器可以测量Arduino从启动开始所经过的毫秒数,并在到达预定时间后执行相应的代码。下面是一个简单的示例,当Arduino启动3秒后,LED灯开始闪烁:
int led = 13;
unsigned long previousMillis = 0;
const long interval = 1000;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
digitalWrite(led, !digitalRead(led));
}
}
在这个示例中,我们使用了一个变量previousMillis
来记录上一次LED灯闪烁的时间点,如果当前时间点与上一次时间点相差1秒或以上,则LED灯状态进行一次取反。通过调整interval
变量的值,可以改变LED灯闪烁的频率。
Micros计时器可以测量Arduino从启动开始所经过的微秒数,精度更高。下面是一个简单的示例,当Arduino启动500毫秒后,LED灯开始闪烁,并持续100微秒:
int led = 13;
unsigned long previousMicros = 0;
const long interval = 100000;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
unsigned long currentMicros = micros();
if (currentMicros - previousMicros >= interval) {
previousMicros = currentMicros;
digitalWrite(led, HIGH);
delayMicroseconds(100);
digitalWrite(led, LOW);
}
}
在这个示例中,我们使用了一个变量previousMicros
来记录上一次LED灯闪烁的时间点,如果当前时间点与上一次时间点相差100毫秒或以上,则LED灯状态进行一次变化。使用delayMicroseconds()
函数可以使LED灯持续亮100微秒。
在Arduino中,归零指的是将变量重置为初始值。有时候我们需要将变量的值在运行过程中归零,以便重新开始某个操作。下面是一个简单的示例,当按钮被按下时,将计数器变量重置为0:
int buttonPin = 2;
int counter = 0;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
if (digitalRead(buttonPin) == LOW) {
counter = 0;
Serial.println("Counter has been reset.");
}
else {
Serial.print("Counter value: ");
Serial.println(counter);
counter++;
delay(500);
}
}
在这个示例中,我们使用了一个变量counter
来记录按钮被按下的次数。当按钮被按下时,将counter
变量重置为0,并打印一条消息。当按钮没有被按下时,打印counter
变量的值,并将其增加1。使用delay()
函数可以使程序等待0.5秒后再进行下一次循环。
以上就是Arduino中到期和归零两种重要概念的介绍。通过使用计时器和归零操作,可以更好地控制Arduino中各种电子设备的行为。