2023-03-23
12kg舵機(jī)的驅(qū)動(dòng),
● bug?1線串口復(fù)用了Tx和Rx,
? ? debug 使用 2線串口轉(zhuǎn)1線串口的轉(zhuǎn)接板。
●??bug 舵機(jī) I/O 和Pc I/O洛退,復(fù)用了arduino 的串口
? ? debug瓣俯,使用虛擬串口?
#include <SoftwareSerial.h>
SoftwareSerial roboSerial(10, 11);? ? ? ? ? //定義虛擬串口名為serial,rx為10號(hào)端口,tx為11號(hào)端口
2kg,3kg舵機(jī)的驅(qū)動(dòng)兵怯,
12kg舵機(jī)的轉(zhuǎn)接板和虛擬串口驅(qū)動(dòng) 能夠很好的運(yùn)行彩匕,但是2kg,3kg舵機(jī)不能運(yùn)行
●?bug??2線串口轉(zhuǎn)1線串口的轉(zhuǎn)接板 的頻寬不夠媒区,劣化了信號(hào)
? ? debug? 購(gòu)買新的轉(zhuǎn)接板驼仪,或更換舊板上的芯片?袜漩? 電容绪爸?? 電阻宙攻?奠货?
●?bug 舵機(jī) I/O 和Pc I/O,復(fù)用了arduino 的虛擬串口粘优,虛擬串口的頻寬不夠仇味,劣化了信號(hào)
? ? debug,使用? Arduino Leonardo板雹顺,有2個(gè)串口。USB--Serial廊遍。pin0(RX)和pin1(TX)--Serial1
例如:
void setup() {
? Serial.begin(9600);? ? ? ? ? ? ??//設(shè)置PC串口 通信波特率
? Serial1.begin(9600);? ? ? ? ???//設(shè)置設(shè)備串口 通信波特率
? Serial.println("Hello Word");
? Serial1.println("TX:001");? //向數(shù)字引腳0嬉愧、1所連接的設(shè)備發(fā)送數(shù)據(jù)"TX:001"
}
void loop() {
}
Leonardo 板子的缺陷
// bug , 上傳本程序喉前,運(yùn)行正常没酣。 打開PCarduino軟件的串口監(jiān)視器,再關(guān)閉串口監(jiān)視器后卵迂,舵機(jī)異常裕便,舵機(jī)表現(xiàn)為一跳一跳的分段快速轉(zhuǎn)動(dòng)。
? ? // debug 這是 Leonardo 板子獨(dú)有的問題见咒,打開再關(guān)閉串口監(jiān)視器后偿衰, Leonardo的運(yùn)行速度大幅降低。?
? ? // debug 原因是:Leonardo 和 PC 之間的鏈接與 Uno 或 Mega 之間的鏈接工作方式不同改览,如果 PC 不接受數(shù)據(jù)下翎,它的輸出緩沖區(qū)可能會(huì)填滿并阻塞(https://forum.arduino.cc/t/serial-print-on-leonardo-very-slow-after-disconnection-from-serial/483017)。
? ? // debug? 通過? Serial.println(USB_EP_SIZE);可知 leonardo 板子宝当,usb的串口buffer size =64视事。(https://forum.arduino.cc/t/serial-print-on-leonardo-very-slow-after-disconnection-from-serial/483017/8)?
// debug 程序最后的 delay(2); 改成delay(20); 打開再關(guān)閉PC arduinoIDE軟件的串口監(jiān)視器后,經(jīng)過更長(zhǎng)時(shí)間庆揩,舵機(jī)才開始一跳一跳的分段快速轉(zhuǎn)動(dòng)俐东。說明PC串口有某種緩存跌穗。
?// debug 如果串口連接尚未建立,打印/寫入基本上會(huì)被忽略虏辫;當(dāng)再次關(guān)閉串口時(shí)蚌吸,問題就來了。 (https://forum.arduino.cc/t/serial-monitor-causes-lagging/954328/2)