我一直在研究一個項目,我需要根據保存在SD卡上的數據來控制伺服電機。到目前爲止它進展順利,但是我在控制伺服電機運動的時間和速度方面存在問題。我會解釋我想要完成的事情和一些示例代碼。帶有SD卡數據的Arduino伺服電機控制
我正在使用Arduino Mega並附加了一個SD模塊。在SD卡上,我有四個不同的.txt文件。每個文件包含30個整數值,每行包含一個整數,並以(,)結尾。這僅僅是測試數據,所以我可以掃描一系列角度來檢查我正在閱讀並將值轉換得很好。但是當我嘗試使用定時器,延遲等來減慢伺服器時,它會像代碼一樣在代碼中加速。在我的情況下,代碼如下所示:
string dataRead =""; // String object to read bytes from
unsigned long int motorTime = 250; // Refresh time of the motor (250 ms)
unsigned long int lastMotor = (long) micros();
while (entry.available()) { // While there are bytes in the file to be read
dataRead = entry.readStringUntil(',');
while((long) micros() - lastMotor <= (motorTime * 1000)); // Do nothing until refresh time has elapsed
myServo.write(dataRead.toInt());
lastMotor = (long) micros();
}
的數據讀取罰款和電機根據數據移動,但顯示時間代碼只是似乎是否定的某些原因。我懷疑這是因爲在Arduino IDE中的所有抽象層下都會啓用和禁用各種硬件功能,並且由於某些原因導致延遲被取消。
有沒有人有過這方面的經驗?任何提示以設定的速度驅動伺服器?我的替代解決方案是將數據加載到數組中;但我不想冒着燒燬所有RAM的風險並導致其他問題。
在此先感謝!