Здравствуйте,
Есть ли открытые программы для прямого управления с ПК Arduino-подобными платами?
Необходимо управлять гусеничным вездеходом (2 электромотора) с web-камерой на двух сервоприводах, в общем все как на видео.
Здравствуйте,
Есть ли открытые программы для прямого управления с ПК Arduino-подобными платами?
Необходимо управлять гусеничным вездеходом (2 электромотора) с web-камерой на двух сервоприводах, в общем все как на видео.
Ни одного ответа
Я понимаю, раздавать готовую программу над которой сам кропотливо работал ни кто не будет, сбился с ног в поисках такой.
Давайте тогда разбираться вместе с самого низа?
Вот например такой простой скетч для Arduino:
Скетч писал сам, из подобных примеров, поэтому сильно палками не бейте, лучше поправьте. Суть в том что при отправке (по СериалМонитору) "1" – горит один светодиод, "2" – другой, "3" - оба. Ничего не отправляешь - ничего не горит!PHP код:
int ledPin = 13;
int ledPin2 = 12;
void setup()
{
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
pinMode(ledPin2, OUTPUT);
}
void loop()
{
while (Serial.available() == 0);
int val = Serial.read() - '0';
if (val == 1)
{
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
}
if (val == 2)
{
digitalWrite(ledPin2, HIGH);
delay(1000);
digitalWrite(ledPin2, LOW);
}
if (val == 3)
{
digitalWrite(ledPin, HIGH);
digitalWrite(ledPin2, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
digitalWrite(ledPin2, LOW);
}
Serial.flush(); //это я не знаю для чего, не стал удалять
}
Ну вот и первый пример: нужна визуализация трех кнопок, при нажатии и удержании которых (без фиксации) будут отправляться циферки в COM.
1. В соседней теме разбирались очень не плохие примеры с кнопками на Processing.
2. Куда еще стоит начать копать? Delphi?
Последний раз редактировалось Kitam1n; 13.04.2012 в 15:37.
Опять тишина, ну ладно, может кому будет интересно: значит нашел работующий пример с кнопками, надобовлял своих, вроде ничего получается . Вот не знаю как сделать управление сервами ползунками
Подскажите? Ни одного примера с исходником не найду
Если кому нужны исходники для экспериментов говорите!
И по прежнему тишина
Люди, HELP!!! Помогите сделать управление сервами при помощи ползунка plz!!!
А то кнопками это очень уж грубо и не удобно.
Выкладываю исходники и видушку того что есть! Подтягивайтесь!
Сорри за качество, но под рукой только телефон
Я бы как-то так сделал:
С делфи ничем помочь не могу. Есть вариант на С. В архиве.PHP код:
#include <Servo.h> // включаем библиотеку Серво
Servo myservo; // вводим myservo
Servo myservo2; // вводим myservo2
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;
}
}
}
}
manu_245, спасибо, но при верификации IDE ругается А я не врубаю в чем дело.
Курю инструкции по программированию Aurdino.
а, точно
1. if (Serial.available() > 2)
2.byte a,b,c; в этой же функции
3. еще ругается на строку с = Serial.read(); там "c" на анлгийском надо вписать. совсем плох я, забыл раскладку переключить.
После этого должно нормально компилироваться.
Последний раз редактировалось manu_245; 16.04.2012 в 01:44.
Спасибо!
1. поменял
2.что такое byte? в скетче этого вообще нет
3. с английскую поставил
Теперь ругается на то что a, b и c was not declared in this scope
PHP код:
#include <Servo.h> // включаем библиотеку Серво
Servo myservo; // вводим myservo
Servo myservo2; // вводим myservo2
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;
}
}
}
}
надо объявить переменные.
После
if (Serial.available() > 2)
{
вставить строку byte a,b,c;
manu_245, спасибо что на пальцах!!!
компиляция прошла, залил! Теперь думаю, а что это дало? управлять то как теперь? что слать на Arduino?
Ушел курить инфу о byte, switch и case...
PHP код:
#include <Servo.h> // включаем библиотеку Серво
Servo myservo; // вводим myservo
Servo myservo2; // вводим myservo2
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;
}
}
}
}
Последний раз редактировалось Kitam1n; 16.04.2012 в 12:12.
Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)