我正在制作一个非常简单的C++程序,通过串口将一个角度发送到Arduino,然后Arduino将该角度应用于舵机。我知道Unix将串口设备视为文件,事实上这是C++代码:
#include <iostream>
#include <unistd.h>
using namespace std;
int main()
{
int angole;
FILE * arduino;
do
{
arduino = fopen("/dev/tty.usbmodem3a21","w");
cout<<"\n\give me the angle\n\n";
cin>>angole;
fprintf(arduino,"%d",angole);
sleep(1);
}while(angole>=0 && angole<=179);
}
这是Arduino的:
#include <Servo.h>
Servo servo;
const int pinServo = 2;
int angle;
void setup()
{
Serial.begin(9600);
servo.attach(pinServo);
servo.write(0);
}
void loop()
{
if(Serial.available()>0)
{
angle = Serial.read();
servo.write(angle);
}
}
我还检查了Arduino应用程序中的“工具>串行端口>/div/tty.usbmodem3a21”,确认它是正确的端口。
问题在于程序停在了"arduino = fopen("/dev/tty.usbmodem3a21","w");"这一句,因为它甚至没有写出"give me the angle"这个消息。
例如,当我在打开函数中输入错误的端口时,它会写出该消息。