سلام
اگر منظورتون این است که شما یک فایل تکست در کامپیوتر دارید که توی آن تعدادی عدد نوشته شده است و می خواهید این اعداد را بصورت تک تک به آردوینو ارسال کنید و آردوینوهم آنها را دریافت کرده و بر طبق الگوریتمی که نوشتید بر اساس آن عددها تصمیم به انجام کاری کند. مثلا اگر عدد 8 را دریافت کرد استپ موتور را به مدت 20 میلی ثانیه بچرخاند. در این صورت شما بایستی 2 تا برنامه بنویسید. یکی از برنامه ها روی آردوینو باید آپلود بشه و دیگری روی کامپیوتر اجرا بشه.
برنامه ای که روی کامپیوتر اجرا میشه کارش اینه که عدد ها را از فایل تکست یکی یکی بخونه و به پورت USB بفرسته. میتونید این برنامه را به زبان های مختلف بنویسید. در زیر یک برنامه به زبان Processing (این زبان خیلی شبیه به زبان آردوینو هست) نوشته شده است:
import processing.serial.*;
Serial myPort;
int i;
int j=0;
String[] lines;
int index;
void setup(){
printArray(Serial.list());
myPort = new Serial(this, Serial.list()[0], 9600);
lines = loadStrings("data.txt");
}
void draw (){
for (index=0; index < lines.length ; index+=1){
i = Integer.parseInt (lines[index]);
println(j++);
myPort.write(i);
delay(100);
}
while(true);
}
که عدد ها در داخل یک فایلی به اسم data.txt نوشته شده است. فرمت نوشتن عدد ها به این صورت است که هر عدد در یک خط نوشته شده است. یعنی در خط اول مثلا عدد 2 نوشته شده است بعد اینتر خورده و رفته خط بعدی.
خب بعد از این کارنیاز است که یک کدی هم برای آردوینو بنویسید تا داده ها را دریافت کند. دقت کنید که baud rate هر دو برنامه مثل هم باشه. این هم برنامه برای آردوینو که برای سروو نوشته شده است. این برنامه بر اساس اینکه چه عددی از طرف کامپیوتر ارسال میشه تصمیم میگیرد سروو رو به همان مقدار بچرخاند که شما می توانید بجای آن تصمیمات دیگری را بگیرید.
#include <Servo.h>
Servo myservo;
int pos = 0;
void setup()
{
Serial.begin(9600);
myservo.attach(9);
myservo.write(0);
}
void loop()
{
while(!Serial.available());
myservo.write(Serial.read());
}