Имеете дело с отключением USB?
Следующий код отлаживает собственный порт SerialUSB, подключенный к ПК и подключенный через монитор терминала (например, Termite, с любым bps, 8N1, RTS/CTS).
При запуске порты ищут связь, и вы видите быстрые мигания.
Если SerialUSB
подключен и подключен, происходит связь, она же медленное мигание.
Но если USB отключен после SerialUSB
, даже если вы отключили его раньше, код переходит в состояние остановки, т. е. не мигает.
Если вы снова подключите USB, он вернется в !SerialUSB
, поэтому, если вы отключите (если он был подключен) и снова подключите терминал, он восстановит состояние SerialUSB, не без
реакции линии reset ().
Похоже, то же самое происходит и с
сериалом
.
Есть какие-нибудь подсказки о том, почему Arduino переходит в такое состояние остановки после отключения USB?
Как мы должны с этим бороться? Как можно предотвратить это состояние?
Большинство людей утверждают, что это проблема с источником питания. Это происходит как с источником питания 5 В, так и без него.
// ARDUINO DUE BLINK LED
void setup(){
pinMode(13,OUTPUT);
Serial.begin(115200);
SerialUSB.begin(115200);
while(!Serial){
digitalWrite(13,HIGH);delay(500);
digitalWrite(13,LOW);delay(500);
}
Serial.println("System Reset");
}
void loop(){
int n=0;
while(!SerialUSB){
Serial.println("USB Unplugged or Terminal Disconnected");
digitalWrite(13,HIGH);delay(50);
digitalWrite(13,LOW);delay(450);
n=n+1;
if (n>=5){
Serial.println("Resetting to Connect if Disconnected");
digitalWrite(13,HIGH);delay(450);
digitalWrite(13,LOW);delay(50);
rstc_start_software_reset(RSTC);
}
}
SerialUSB.println("USB Plugged and Terminal Connected");
Serial.println("USB Plugged and Terminal Connected");
digitalWrite(13,HIGH);delay(50);
digitalWrite(13,LOW);delay(50);
}
@Brethlosze, 👍1
1 ответ
Это невозможно сделать, потому что протокол CDC/ACM не отправляет информацию такого типа, поэтому вы не можете определить, подключен Arduino или нет, поэтому он останавливается. (Вы могли бы создать функцию поддержания жизни, но я не знаю, возможно ли это с тем, что вы делаете)
- Построение графика на Python с использованием Tkinter Canvas
- Что является более быстрой альтернативой parseInt()?
- SerialUSB на Arduino Due
- Использование экрана SD-карты на Arduino Due
- Связь между Python и Arduino ненадежна
- Serial.availableForWrite против Serial.flush
- Проблемы с I2C и Wire.Available()
- Протокол связи Arduino с python — помимо примера pyserial и Arduino