Arduino與ROS通訊過程中"Lost sync with device, restarting..."錯誤
阿新 • • 發佈:2018-11-01
對於這個問題的一種可能的解決方案,在回撥函式中使用了while(1)迴圈,當註釋掉迴圈後,這個問題得到了解決。
程式如下:測試的目的是:當得到話題的資料時,則Arduino控制蜂鳴器一直以該頻率發出鈴聲;但後來發現當存在while(1)迴圈時,一直會報錯,註釋掉之後,解決這個問題;大概時回撥函式沒有執行完畢,新的回撥又來了的緣故。
#include <ros.h> #include <std_msgs/Int8.h> int buzzer = 11; int delay_time = 1; ros::NodeHandle nh; void messageCb(std_msgs::Int8 message) { delay_time = message.data; unsigned char i; //while(1) //{ for(i=0;i<80;i++) { digitalWrite(buzzer,HIGH); delay(delay_time); digitalWrite(buzzer,LOW); delay(delay_time); } //} } ros::Subscriber<std_msgs::Int8> sub("buzzer",&messageCb); void setup() { nh.initNode(); nh.subscribe(sub); pinMode(buzzer,OUTPUT); } void loop() { nh.spinOnce(); }