📜  Arduino-到期和归零(1)

📅  最后修改于: 2023-12-03 15:13:28.054000             🧑  作者: Mango

Arduino-到期和归零

Arduino是一款广泛使用的开源硬件平台,通过简单易学的编程语言,可以方便地控制和监测各种电子设备。这里将介绍Arduino中到期和归零两种重要概念。

到期

在Arduino中,到期指的是计时器到达预定时间后所触发的事件。计时器是一种硬件设备,可以按照预定的时间间隔来计数,并在到达一定的计数值后触发相应的事件。Arduino中常用的计时器有两种,分别是Millis计时器和Micros计时器。

Millis计时器

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计时器

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中各种电子设备的行为。