我设置了Arduino Uno来感知光线水平,并在天黑时通过Processing绘制到文本文件。我想修改处理代码以中断绘制循环五秒钟,然后重新启动绘制循环。这将连续写入和覆盖.txt文件,但现在这并不重要。
这个练习的目的是了解如何在无尽的绘制循环中插入一个中断。我仍然是编程的新手,我正试图围绕命令如何与其他人进行交互。任何人都可以帮助我了解如何使这项工作? Eample代码会很棒,但我也会对它应该如何工作的概念性描述感到满意......通过实践和所有方法进行学习。
我已经尝试将void draw()循环放在一个void loop()中,但它错了。我在正确的道路上吗?
<setup...mySerial and createWriter to path/file.txt>{
}
void draw() { //this is what needs to terminate & restart
if (mySerial.available() > 0 ) {
String value = mySerial.readString();
if ( value != null ) {
output.println( value );
}
}
}
void keyPressed and end
答案 0 :(得分:0)
如果您不担心真正的时间紧迫,那么简单的解决方案就是使用延迟功能。 http://www.arduino.cc/en/Reference/Delay
以下可能是一个简单的草图,可以做你想要的。根据需要进行调整。
void setup()
{
Serial.begin(9600); // initialize serial routines
}
void loop()
{
int a = analogRead(0); // read the value of lightness
Serial.println(a); // tell processing what the value is
delay(5000); // wait for a 5 seconds
}
答案 1 :(得分:0)
我相信你所寻找的东西被称为“状态机”。
创建一个可用于存储时间值的变量,然后将其与当前时间进行比较,以查看是否已经过了5s。
uint32_t last_trigger = 0; // millis() returns an unsigned, 32-bit integer
void setup()
{
Serial.begin(9600);
}
void loop()
{
if (millis() - last_trigger > 5000) { // 5000 milliseconds
last_trigger = millis(); // update last_trigger
Serial.print("last triggered at "); // report findings
Serial.print(last_trigger);
Serial.println(" milliseconds");
}
}