Questions tagged «time»

使用此标签可查询有关如何在Arduino上获取时间,如何在Arduino上创建或使用时钟或任何将时间作为主要因素的问题。还可以考虑使用[programming]或其他更具体的标签。

4
如何处理millis()转换?
我需要每五分钟读取一次传感器,但是由于我的草图还需要执行其他任务,因此我不能只delay()在两次读数之间进行。有一个“ 无延迟闪烁”教程,建议我按照以下方式进行编码: void loop() { unsigned long currentMillis = millis(); // Read the sensor when needed. if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; readSensor(); } // Do other stuff... } 问题在于,millis()大约49.7天后,该值将回滚为零。由于我的草图打算运行更长的时间,因此我需要确保翻转不会使我的草图失败。我可以轻松检测到翻转条件(currentMillis < previousMillis),但不确定该怎么做。 因此,我的问题是:处理millis()过渡的正确/最简单方法是 什么?

5
如何获得准确的时间?
我已经使用Arduino制作了一个时钟,但是时间似乎在漂移。我知道过渡问题;一周内时钟似乎会偏移15分钟左右。 我正在为此 Digi-key的谐振器使用定制PCB 。该代码在每个循环的开头读取millis()函数,并从该值开始工作。 我的问题是:我该如何使用Arduino测量时间,准确到足以制作出可通过的台式时钟?
16 time  millis 

3
可以找到毫秒所花费的时间吗?
该功能millis将在100毫秒或更短的时间内运行。有没有一种可靠的方法来衡量一个毫秒呼叫所花费的时间? 我想到的一种方法是使用micros,但是,对的调用也micros将包括其micros自身的函数调用所花费的时间,因此,取决于micros花费的时间,测量millis可能会关闭。 我需要找到它作为正在处理的应用程序,它需要对代码中执行的每个步骤(包括)进行准确的时间测量millis。
13 time  millis 

3
Arduino上的高精度时序用于串行通信
我正在使用Arduino Uno通过串行端口将时间和电压信息发送到Python进行绘图。但是,连续时间戳之间的间隔时间似乎随着时间而增加,影响了我的绘图。当波特率设置为9600时尤其如此,我的初始时间差可能是1320,而在相对较短的时间后增加到16400。当此速率设置为最大115200 bps时,即使经过较长时间的发送,更改也较慢且不那么明显,从1340到1500。所有时间均以微秒为单位。 我想知道我是否可以减少或消除这种影响,以及是否不知道为什么存在。我已经阅读了有关引起这种情况的中断和延迟的内容,但是我不完全了解当前电子设备的复杂性,并且想知道: 我可以在时间上获得更高的精度吗? 是什么原因导致时间变化? 这是我目前拥有的: #include <eHealth.h> extern volatile unsigned long timer0_overflow_count; float fanalog0; int analog0; unsigned long time; byte serialByte; void setup() { Serial.begin(9600); } void loop() { while (Serial.available()>0){ serialByte=Serial.read(); if (serialByte=='S'){ while(1){ fanalog0=eHealth.getECG(); // Use the timer0 => 1 tick every 4 us time=(timer0_overflow_count << …

4
为什么我的实时时钟从PC收到错误的时间?
我希望我的实时时钟将其时间设置为PC上的时间。但是,当我运行以下草图时,实时时钟报告的时间比我的PC所说的时间早32-33秒。 #include <Wire.h> #include "RTClib.h" RTC_DS1307 RTC; void setup () { Serial.begin(57600); Wire.begin(); RTC.begin(); if (! RTC.isrunning()) { Serial.println("RTC is NOT running!"); // following line sets the RTC to the date & time this sketch was compiled // uncomment it & upload to set the time, date and start run …

4
Arduino时钟精度
我目前正在尝试使用PJRC时间库(http://www.pjrc.com/teensy/td_libs_Time.html)创建一个Arduino时钟。我知道,由于大多数Arduino开发板都以16MHz时钟和单个谐振器运行,因此经过一定时间后,时间可能会变得“不同步”。 但是,我想知道是否有人对带有84MHz时钟的Arduino DUE使用时库的准确性有所了解。我已经对其进行了测试,到目前为止,时钟已经同步了几个小时。谢谢!
10 time  arduino-due 

3
Arduino使用millis()的计时不正确或不正确?
我一直在使用Arduino记录一些数据。在我的Arduino草图中,我还使用了该millis()函数,以便可以跟踪我正在测量的每个值的获取时间。但是,我注意到时间不正确。例如,在现实生活中,30秒只能显示为10秒(虚构示例)。 我是否正确地说Arduino延迟功能会影响使用时间millis()?换句话说,假设我有一个50ms的延迟,这是否意味着该millis()函数在该持续时间内也停止,然后在连接持续时间内继续等等?当我尝试绘制一些数据并发现经过一定时间后,数据中的峰值频率过于频繁时,我注意到了这一点。因此,我想知道这是否是造成时间不匹配的原因,如果是,那么如何解决此问题,以便保留每个采样发生的时间? 这里给出一些背景是我的草图: #include <eHealth.h> unsigned long time; // The setup routine runs once when you press reset: void setup() { Serial.begin(9600); } // The loop routine runs over and over again forever: void loop() { float ECG = eHealth.getECG(); time = millis(); Serial.print(time); Serial.print(" "); Serial.print(ECG, 5); Serial.println(""); delay(50); …

4
与Unix时间戳转换
在Arduino中以毫秒为单位在日期,小时,分钟,秒之间转换为Unix时间戳的最佳方法是什么?我需要进行此转换,因为我正在使用RTC(日期,小时,分钟,秒等)并通过BLE传递Unix时间戳。 我在网上找到了一些代码片段,但尚未对其进行广泛的测试。 byte second = epoch%60; epoch /= 60; byte minute = epoch%60; epoch /= 60; byte hour = epoch%24; epoch /= 24; unsigned int years = epoch/(365*4+1)*4; epoch %= 365*4+1; unsigned int year; for (year=3; year>0; year--) { if (epoch >= days[year][0]) break; } unsigned int month; for (month=11; …
8 time  rtc  data-type 

5
我可以使delayMicroseconds更准确吗?
我正在尝试爆炸DMX数据,这需要4us脉冲。我正在检查结果是否运气不佳,以查看Arduino在延迟方面的表现如何……似乎非常糟糕。 我做了一个快速的小测试: unsigned long ptime; void setup() { Serial.begin(9600); } void loop() { ptime = micros(); delayMicroseconds(4); Serial.println(micros() - ptime); delay(1000); //just to keep the serial monitor from going nuts } 结果: 8 4 8 4 4 4 4 4 8 8 8 8 4 8 8 4 4 8 …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.