Jef*_*eff 2 c serial-port arduino
unsigned long current_millis_value = 0;
unsigned long previous_millis_value = 0;
unsigned long m = 0;
unsigned int seconds = 0;
unsigned int minutes = 0;
unsigned int hours = 0;
unsigned long clockTimeStart = 1800000; //30 Minutes
unsigned long currentClockTime;
void loop() {
current_millis_value = millis();
currentClockTime -= current_millis_value - previous_millis_value;
previous_millis_value = current_millis_value;
minutes = (currentClockTime / 1000 / 60);
seconds = (currentClockTime / 1000) % 60;
m = (currentClockTime % 100);
Serial.print(minutes);
Serial.print(":");
Serial.print(seconds);
Serial.print(":");
Serial.println(m);
}
Run Code Online (Sandbox Code Playgroud)
每写一条串行线,串行写之间的时间间隔为9-11毫秒。有没有一种方法可以优化该Serial.print()
方法,以允许在long和String值的类型之间写入多个值?
示例(这无效,但遵循我的想法):
Serial.print(minutes + ":" + seconds + ":" + m);
Run Code Online (Sandbox Code Playgroud)
我知道这不是我正在使用的JavaScript,只是在寻找编写过程的最佳可能性。我知道MOD可能会很昂贵,但是仅执行简单的减法并写出currentClockTime的值,就给我留出了6-7毫秒的间隔时间。
arduino具有类似于字符串连接的半Java语言。我不知道这是否可以加快速度,但是在发送之前它将所有内容连接到一个字符串中。
String package = "" + minutes;
package += ":"+seconds;
package += ":"+m;
Serial.print(package);
Run Code Online (Sandbox Code Playgroud)
如果您能够在另一端重构字符串,则更好的做法是使用Serial.Write
并发送原始数据,然后在接收端重构字符串。这样会将每个循环发送的数据量从5-10字节减少到3-4字节。