使用 millis() 函数作为延迟的替代方法(电位器控制延迟时间)

接线图:

代码:

unsigned long currentMillis =0;

unsigned long previousMillis_LED1  = 0;

unsigned long LED1_delay=0;

unsigned long previousMillis_LED2 =  0;

unsigned long LED2_delay=0;

#define LED1 3

#define LED2 9

#define P1 A2        //电位器1连接脚位,控制LED1灯延迟时间

#define P2 A1         //电位器2连接脚位,控制LED2灯延迟时间

void  setup() {

  pinMode(LED1, OUTPUT);

  pinMode(LED2, OUTPUT);

  pinMode(P1,  INPUT);

  pinMode(P2, INPUT);

}

void loop() {

   currentMillis= millis();   //开发板启动时到现在的毫秒数。

  LED1_delay=0;

  LED2_delay=0;

  for(int i=0;i<5;i++){

   LED1_delay=LED1_delay+map(analogRead(P1),0,1023,100,1000);//映射到100-1000

   LED2_delay=LED2_delay+map(analogRead(P2),0,1023,100,1000);

  }

  if (currentMillis-previousMillis_LED1>  LED1_delay){

//如果当前的‘启动毫秒数’比上次记录的‘启动毫秒数’大于设定的延迟时间

    previousMillis_LED1=currentMillis;

//将当前‘启动毫秒数’存入上次毫秒数变量中,以便与下一次的时间比较。

    digitalWrite(LED1,!digitalRead(LED1));

//颠倒led的显示状态

  }

  if (currentMillis-previousMillis_LED2> LED2_delay){

    previousMillis_LED2=currentMillis;

    digitalWrite(LED2,!digitalRead(LED2));

  }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: `millis()` 函数是 Arduino 的内置函数,可以返回自程序开始运行以来经过的毫秒数。它可以用来确定程序运行的时间,并在程序中进行计时操作。 例如,可以使用 `millis()` 函数在程序运行后的特定时间执行某些操作: ``` unsigned long startTime = millis(); unsigned long waitTime = 5000; void loop() { if (millis() - startTime >= waitTime) { //执行某些操作 startTime = millis(); } } ``` 这段代码会在程序运行后的 5 秒钟执行某些操作,并重置开始时间。 ### 回答2: Arduino中的millis()函数是一种计时器,可以帮助Arduino板执行程序的特定部分。这个函数返回自上次调用该函数以来经过的毫秒数。这是一个十分有用的函数,它可以在程序中进行任何需要计时的操作,例如储存时间、执行定时操作等等。 首先需要了解的是millis()函数返回的是一个长整型的数值,表示从上一次程序开始运行到当前时刻所经过的毫秒数。这个数值是一个无符号数,所以它能够存储的最大值是2^32(也就是4,294,967,295)。而且,当它达到最大值时,会从零开始重新计数,这就需要我们在使用millis()函数时进行特别处理。 在程序中使用millis()函数可以帮助我们执行以下操作: 1. 储存时间 使用millis()函数可以帮助我们计算执行某个操作所需要的时间。比如说,我们可以在程序开始时调用millis()函数,记录下当前时间。然后在程序的某个特定时刻再次调用millis()函数,记录下此时的时间。我们可以通过从两个时间值中各自减去起始时间,就可以计算出执行这段程序所需要的时间,这样就可以帮助我们更精确地计算程序的效率和速度。 2. 定时操作 millis()函数还可以用于实现定时操作。例如我们可以设置执行某个特定函数的时间间隔。首先定义一个计时器变量,然后调用millis()函数,然后根据需要的时间间隔更新计时器变量的值。然后我们可以根据这个计时器变量来执行所需的操作,这样就可以控制所需的操作执行的时间间隔。 此外,我们还可以使用 millis()函数来产生时间戳,来记录某些事件的发生时间。我们可以在程序中使用 millis() 函数来计算经过的时间。例如,你可以通过跟踪每次的按键事件记录下按键的次数以及按键的时间,然后通过比较不同按键事件的时间戳,可以计算出两次按键之间的时间差。 总之,Arduino中的 millis()函数是一个非常实用和灵活的计时器,可以用于跟踪时间、进行定时操作、进行周期性的事件等等。同时,需要特别注意,在使用函数时需要注意处理它从最大值周期重新计数的情况。 ### 回答3: Arduino millis 函数是一个非常有用的函数,它可以帮助我们实现时间控制,例如在特定的时间间隔内执行某个任务,控制LED闪烁的频率等等。在 Arduino 中,我们通常使用 delay() 函数来实现时间控制,但是 delay() 函数会阻塞程序的执行,这意味着在等待 delay() 执行完之前,不能同时进行其他的操作,这对某些需要同时进行多个操作的项目来说是不利的。 Milllis() 函数返回 Arduino 开始运行的时间,以毫秒为单位。它的精度非常高,可以准确计算出从开机到现在的毫秒数。我们可以利用 millis() 函数的返回值来判断时间是否已经到达了我们需要的时间。 下面让我们看看如何使用 millis() 函数来实现时间间隔控制。 以 LED 为例,我们要在每隔 1000ms (1s) 中切换 LED 的亮灭状态。我们可以使用如下的代码: ``` const int ledPin = 13; unsigned long previousMillis = 0; const long interval = 1000; void setup() { pinMode(ledPin, OUTPUT); } void loop() { unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; digitalWrite(ledPin, !digitalRead(ledPin)); } } ``` 这段代码的意思是,在循环中不断读取当前的毫秒数 currentMillis ,判断当前的时间是否已经超过 1000ms 。当当前时间超过 1000ms 时,就切换 LED 的状态,并更新 previousMillis 变量的值,以便下一次计算时间间隔。 在上面的代码中,我们使用了一个新的变量 previousMillis ,存储上一次 LED 亮灭状态切换的时间。在第一次执行时,previousMillis 的值为 0 。之后每一次循环中都会计算与当前时间的差值,如果差值超过了要求的时间间隔,就执行相应的任务。 需要注意的是,当程序运行到一定时间后,计算的时间值会超过 unsigned long 类型的最大值 (4,294,967,295ms,约为 49天),从而造成计算错误。如果需要程序长时间运行,建议在一定时间后进行重启。 总之,Arduino millis() 函数是非常有用的函数,可以帮助我们实现时间控制,并充分利用 Arduino 的多任务处理能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值