Есть ли открытые программы для прямого управления с ПК Arduino-подобными платами?
Необходимо управлять гусеничным вездеходом (2 электромотора) с web-камерой на двух сервоприводах, в общем все как на видео.
Ни одного ответа :(
Я понимаю, раздавать готовую программу над которой сам кропотливо работал ни кто не будет, сбился с ног в поисках такой.
Давайте тогда разбираться вместе с самого низа?
Вот например такой простой скетч для Arduino:
Serial.flush(); //это я не знаю для чего, не стал удалять
}
Скетч писал сам, из подобных примеров, поэтому сильно палками не бейте, лучше поправьте. Суть в том что при отправке (по СериалМонитору) "1" – горит один светодиод, "2" – другой, "3" - оба. Ничего не отправляешь - ничего не горит!
Ну вот и первый пример: нужна визуализация трех кнопок, при нажатии и удержании которых (без фиксации) будут отправляться циферки в COM.
1. В соседней теме разбирались очень не плохие примеры с кнопками на Processing.
2. Куда еще стоит начать копать? Delphi?
14.04.2012, 21:38
Kitam1n
Вложений: 1
Re: Arduino <=> PC: прямое удобное управление
Опять тишина, ну ладно, может кому будет интересно: значит нашел работующий пример с кнопками, надобовлял своих, вроде ничего получается :p. Вот не знаю как сделать управление сервами ползунками :(
Подскажите? Ни одного примера с исходником не найду :(
Если кому нужны исходники для экспериментов говорите! :rolleyes:
15.04.2012, 21:41
Kitam1n
Вложений: 1
Re: Arduino <=> PC: прямое удобное управление
И по прежнему тишина :( Люди, HELP!!! Помогите сделать управление сервами при помощи ползунка plz!!!
А то кнопками это очень уж грубо и не удобно.
Выкладываю исходники и видушку того что есть! Подтягивайтесь!
int val = 0; // variable to store the data from the serial port
int ledPin1 = 2; // LED connected to digital pin 2
int ledPin2 = 3; // LED connected to digital pin 3
int ledPin3 = 4; // LED connected to digital pin 4
int ledPin4 = 5; // LED connected to digital pin 5
int ledPin5 = 6; // LED connected to digital pin 6
void setup()
{
myservo.attach(9); //присваиваем myservo 9-й пин
myservo2.attach(10); //присваиваем myservo2 10-й пин
pinMode(ledPin1,OUTPUT); // declare the LED's pin as output
pinMode(ledPin2,OUTPUT); // declare the LED's pin as output
pinMode(ledPin3,OUTPUT); // declare the LED's pin as output
pinMode(ledPin4,OUTPUT); // declare the LED's pin as output
pinMode(ledPin5,OUTPUT); // declare the LED's pin as output
Serial.begin(9600); // connect to the serial port
}
void loop ()
{
if (Serial.available() > 1)
{
a = Serial.read();
b = Serial.read();
с = Serial.read();
if(a==255)//управляем сервами
{
if(b==0) myservo.write(c);
if(b==1) myservo2.write(c);
}
if(a==127)//управляем диодами
{
switch (b)
{
case 0:
digitalWrite(ledPin1,HIGH); //левый двигатель
digitalWrite(ledPin2,HIGH); //правый двигатель
break;
case 1:
digitalWrite(ledPin1,LOW);// оба стоп
digitalWrite(ledPin2,LOW);
break;
case 2:
//ну и так далее
break;
}
}
}
}
С делфи ничем помочь не могу. Есть вариант на С. В архиве.
16.04.2012, 00:33
Kitam1n
Re: Arduino <=> PC: прямое удобное управление
manu_245, спасибо, но при верификации IDE ругается :eek: А я не врубаю в чем дело.:confused:
Курю инструкции по программированию Aurdino.:(
16.04.2012, 00:49
manu_245
Re: Arduino <=> PC: прямое удобное управление
а, точно:o
1. if (Serial.available() > 2)
2.byte a,b,c; в этой же функции
3. еще ругается на строку с = Serial.read(); там "c" на анлгийском надо вписать. совсем плох я, забыл раскладку переключить.
После этого должно нормально компилироваться.
16.04.2012, 09:40
Kitam1n
Re: Arduino <=> PC: прямое удобное управление
Спасибо!
1. поменял
2.что такое byte? в скетче этого вообще нет
3. с английскую поставил
Теперь ругается на то что a, b и c was not declared in this scope :mad:
int val = 0; // variable to store the data from the serial port
int ledPin1 = 2; // LED connected to digital pin 2
int ledPin2 = 3; // LED connected to digital pin 3
int ledPin3 = 4; // LED connected to digital pin 4
int ledPin4 = 5; // LED connected to digital pin 5
int ledPin5 = 6; // LED connected to digital pin 6
void setup()
{
myservo.attach(9); //присваиваем myservo 9-й пин
myservo2.attach(10); //присваиваем myservo2 10-й пин
pinMode(ledPin1,OUTPUT); // declare the LED's pin as output
pinMode(ledPin2,OUTPUT); // declare the LED's pin as output
pinMode(ledPin3,OUTPUT); // declare the LED's pin as output
pinMode(ledPin4,OUTPUT); // declare the LED's pin as output
pinMode(ledPin5,OUTPUT); // declare the LED's pin as output
Serial.begin(9600); // connect to the serial port
}
void loop ()
{
if (Serial.available() > 2)
{
a = Serial.read();
b = Serial.read();
c = Serial.read();
if(a==255)//управляем сервами
{
if(b==0) myservo.write(c);
if(b==1) myservo2.write(c);
}
if(a==127)//управляем диодами
{
switch (b)
{
case 0:
digitalWrite(ledPin1,HIGH); //левый двигатель
digitalWrite(ledPin2,HIGH); //правый двигатель
break;
case 1:
digitalWrite(ledPin1,LOW);// оба стоп
digitalWrite(ledPin2,LOW);
break;
case 2:
//ну и так далее
break;
}
}
}
}
16.04.2012, 11:46
manu_245
Re: Arduino <=> PC: прямое удобное управление
надо объявить переменные.
После
if (Serial.available() > 2)
{
вставить строку byte a,b,c;
16.04.2012, 12:03
Kitam1n
Re: Arduino <=> PC: прямое удобное управление
manu_245, спасибо что на пальцах!!!
компиляция прошла, залил! Теперь думаю, а что это дало? управлять то как теперь? что слать на Arduino? :confused:
int val = 0; // variable to store the data from the serial port
int ledPin1 = 2; // LED connected to digital pin 2
int ledPin2 = 3; // LED connected to digital pin 3
int ledPin3 = 4; // LED connected to digital pin 4
int ledPin4 = 5; // LED connected to digital pin 5
int ledPin5 = 6; // LED connected to digital pin 6
void setup()
{
myservo.attach(9); //присваиваем myservo 9-й пин
myservo2.attach(10); //присваиваем myservo2 10-й пин
pinMode(ledPin1,OUTPUT); // declare the LED's pin as output
pinMode(ledPin2,OUTPUT); // declare the LED's pin as output
pinMode(ledPin3,OUTPUT); // declare the LED's pin as output
pinMode(ledPin4,OUTPUT); // declare the LED's pin as output
pinMode(ledPin5,OUTPUT); // declare the LED's pin as output
Serial.begin(9600); // connect to the serial port
}
void loop ()
{
if (Serial.available() > 2)
{
byte a,b,c;
a = Serial.read();
b = Serial.read();
c = Serial.read();
if(a==255)//управляем сервами
{
if(b==0) myservo.write(c);
if(b==1) myservo2.write(c);
}
if(a==127)//управляем диодами
{
switch (b)
{
case 0:
digitalWrite(ledPin1,HIGH); //левый двигатель
digitalWrite(ledPin2,HIGH); //правый двигатель
break;
case 1:
digitalWrite(ledPin1,LOW);// оба стоп
digitalWrite(ledPin2,LOW);
break;
case 2:
//ну и так далее
break;
}
}
}
}