Я делаю очень простую программу на C++, которая отправляет угол в arduino через последовательный порт, а затем arduino применяет этот угол к сервомотору. Я знаю, что Unix см последовательного порта устройства, как файл, на самом деле это C++ код:xcode, C++ последовательный порт с arduino
#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"); потому что он даже не пишет сообщение «дайте мне угол».
например, когда я пишу неправильный порт в открытой функции, он пишет сообщение.
Я до сих пор есть некоторые проблемы, смотреть комментарий ниже –