我使用Arduino Mega2560通过HX711电桥读取8个测压元件。在故障排除过程中,我意识到Arduino需要很长时间才能启动。我试着把一些消息放在调试上,比如:
void setup() {
// initialize communication
Serial.begin(115200);
Serial.println("Comm Started");
// initialize Pins
pinMode(30, INPUT); // Pin 30: Strain Gauge 1, DATA channel
pinMode(31, INPUT); // Pin 31: Strain Gauge 2, DATA channel
/* some other codes*/
Serial.println("Pin Mode Set");
/* some other codes*/
Serial.println("Starting init gauges");
}
当草图成功加载时,我打开了串行监视器,然后我需要等待100~120秒,然后显示"Comm Started“,随后显示另外两条消息。在此之后,其余的代码运行正常。
我不确定它是否正确,但我认为setup()
是Arduino在加载草图后启动时应该做的第一件事。既然setup()
的第一件事就是打开通信并打印消息,那么它应该不会有任何延迟,对吧?
导致这种2分钟延迟的问题可能是什么?会不会是硬件问题(例如,我连接到HX711s的电线或影响性能的电源/地),或者某些软件错误也会导致这种情况?
非常感谢。
新增信息:
我将打印millis()
的代码放在每个循环中,并将100ms的延迟放在loop()
中,我得到的结果是:
因此,它会在2分钟空白之后启动所有内容(包括内部时钟)。
发布于 2018-03-21 22:25:38
您需要了解这是从哪里来的,所以最简单的方法是从最简单的设置开始。
上传以下程序:
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(115200);
digitalWrite(LED_BUILTIN, HIGH);
Serial.println("Serial startup complete.");
}
void loop() {
}
然后断开Arduino USB或任何可能使用串行端口的外部设备的连接。
给Arduino供电(不是用USB接口,而是用电源连接器,所以你要确保你没有把任何东西连接到串行端口上),它会初始化端口,完成后会点亮13针中的LED作为指示器
在您给arduino通电后,LED应该会立即亮起,如果没有,说明您的主板有问题,请尝试其他主板。
否则,开始添加代码,直到看到延迟出现,并尝试找出导致延迟的原因。
https://stackoverflow.com/questions/49399292
复制相似问题