roboforum.ru

Технический форум по робототехнике.

Arduino C# управление двигателями с консоли ПК

Arduino C# управление двигателями с консоли ПК

getbraine » 22 июл 2010, 21:05

Возникла следующая задача : написать программу ,которая управляет электро-двигателями (обыкновенными),через консоль.

Что имеется : платка Arduino, MotorShiled

так же скрипт ,который читает данные с ком-порта и управляет двигателями:
Код: Выделить всёРазвернуть
#include <AFMotor.h>;
int outputPin = 13;                //здесь храним номер контакта
int val;
AF_DCMotor motorL(1);
AF_DCMotor motorR(2);

void setup()
{
  Serial.begin(9600);              //установка порта на скорость 9600 бит/сек
  pinMode(outputPin, OUTPUT);      //устанавливаем 13 контакт в режим вывода
}

void loop()
{
  if (Serial.available()) {         //если есть принятый символ,
    val = Serial.read();            //  то читаем его и сохраняем в val
    if (val == 'L') {               //  если принят симовол 'H',...
      motorL.run(FORWARD);
      motorL.setSpeed(128);
    }
    if (val == 'R') {               //  если принят симовол 'L',
      motorR.run(FORWARD);
      motorR.setSpeed(128);
    }
  }
}

сама программ на C# ,которая шлет данные в com-порт
Код: Выделить всёРазвернуть
static void Main(string[] args)
        {
            SerialPort port = new SerialPort("COM1", 9600);
            port.Open();
            while (true)
            {
                String s = Console.ReadLine();
                if (s.Equals("exit"))
                {
                    break;
                }
                port.Write(s + '\n');
            }
            port.Close();
        }


Что я сделал:
0)подключил платку к ПК, плату MotorShiled к Arduino , а двигатели к портам M1 и M2
1)загрузил скрипт в Arduino
2)запустил программу(C#)

4)..
5)нифига не вышло=)

Подскажите ,в чем проблема?Можно ли обойтись ,без загрузки скрипта в Arduino и просто слать необходимый набор байтов на com-порт ,чтобы управлять двигателями?Если да ,то какие байты нужно слать?

Заранее спасибо за ответы!

Re: Arduino C# управление двигателями с консоли ПК

avr123.nm.ru » 22 июл 2010, 21:57

Слаботочным мотором можно прямо с COM управлять, но так никто не делает.

Вы можете проверить прогой Com port tool kit что шлет ваша прога в COM а можете без проги из терминала посылать символы управления мотором.

Re: Arduino C# управление двигателями с консоли ПК

noonv » 22 июл 2010, 22:04

попробуйте сначала писать в порт команды не из своей программы, а через терминал.

Re: Arduino C# управление двигателями с консоли ПК

getbraine » 22 июл 2010, 22:14

Нашел ошибку в программе :

нужно было вместо COM1 СOM3 написать
но все равно не получилось

я пробовал напрямую в COM-порт слать данные через Arduino-IDE и получалось управлять двигателями.

Вот если бы слать ,напрямую ,из программы (на C#) управляющие инструкции ,было бы вообще шикарно=)Но в гугле не нашел таких вещей.

Re: Arduino C# управление двигателями с консоли ПК

avr123.nm.ru » 22 июл 2010, 22:50

Да и в прогое ардуины при обоих символах однаковое действие выполняется.

в Ардуине просто поверьте моторы вот так:

Код: Выделить всёРазвернуть
void loop()

motorL.run(FORWARD);     
motorL.setSpeed(128);

motorR.run(FORWARD);     
motorR.setSpeed(128);

}     


Если моторы заработают, то добавляейте управление.

Re: Arduino C# управление двигателями с консоли ПК

getbraine » 23 июл 2010, 00:02

спасибо за ответ!
все работает через консоль.

теперь займусь написание гуи на шарпах=)

Re: Arduino C# управление двигателями с консоли ПК

vadinator » 23 июл 2010, 09:36

Шлите символы управления, без перевода строки '\n'
просто port.Write('R');port.Write('L');
и учитывайте разницу между строчными и заглавными буковками...


Rambler\'s Top100 Mail.ru counter