Управление ARDUINO через USB в реальном времени

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем pskovrezka, 26 авг 2014.

  1. pskovrezka

    pskovrezka Нуб

    Здравствуйте. Подскажите пожалуйста может у кого есть ссылка на обучающий материал, где доступным языком написано как подключить контроллер к USB и реализовать через ПК управление контроллером. Например при нажатии кнопки на ПК в написанной на С++ программе получать логическую единицу на одном из выводов контроллера.
     
  2. NR55RU

    NR55RU Оракул

    На самом деле чтобы полноценно делать то что вы описали требуется знаний несколько больше чем может быть в одной статье с доступным языком :)

    Для начала, научитесь управлять пинами ардуина без всякой связи, если не умеете то тут есть хороший набор видео и статей.

    Далее, научитесь управлять арудином через монитор порта, что идет в составе Arduino IDE. Если вы совсем новичке, можете почитать эту серию статей.

    Далее, вам потребуется разобраться с работой с COM портом на вашем ПК, а точнее в вашей операционной системе, для этого придется использовать Яндекс или Гугл, материала вагон и телега. Именно через COM порт вы сможете из вашей программы на С++ обобщатся с ардуином.

    После чего в зависимости от вашей операционной системы придется научится следить за нажатиями кнопок и отправлять в COM порт соответствующие данные на ардуин.

    Если не лень покопаться в коде и С++ вы знаете достаточно, можете почитать о моем проекте, и заглянуть в исходный код, там как раз идет управление платформой с клавиатуры в реальном времени, правда я там использую XBee но суть одна. Стати тут. В частности вас там должно заинтересовать файл WinCom.cpp в котором как раз идет работа с COM портом и Main.cpp функция controlPlatform() там идет обработка нажатых кнопок ну и файл для собственно самой платформы. В целом это все базовый весьма простой код, для первой "черновой"стадии проекта, но думаю вполне понятен, конечно вы не буквально вчера взяли в руки книгу по С++, выкинув лишнее или взяв нужные куски можете спокойно сделать то что описали выше в самой простой форме :)
     
    Orangebox, Александр134 и acos нравится это.
  3. acos

    acos Официальный гик Команда форума

    arduino
    Код (C):

    void setup() {
      // put your setup code here, to run once:
      Serial.begin(9600);
      for (int i = 2; i < 10; ++i) {
        pinMode(i, OUTPUT);
      }
    }

    void loop() {
      // put your main code here, to run repeatedly:
      while (Serial.available() > 0)
      {
        char pin=Serial.read();
        if (pin>1 && pin<10)
            digitalWrite(pin, !digitalRead(pin));
      }
    }
     
    processing
    Код (Java):

    import processing.serial.*;
    Serial port;

    int pin;
    String s;

    void setup() {
      size(200, 200);
      noStroke();
      background(0);
      port = new Serial(this, "COM4", 9600);
      s = new String("no data");
      textSize(18);
    }

    void draw() {
      // keep draw() here to continue looping while waiting for keys
      background(0);
      stroke(255);

      text(s, 10, 30);
    }

    void keyPressed() {
      int keyIndex = -1;
      if (key >= '2' && key <= '9') {
        keyIndex = key - '0';
      }
      if (keyIndex == -1) {

        s="press a num key in 2..9";
      } else {
        pin=keyIndex;
        s=Integer.toString(pin);
        port.write(pin);
      }
    }

    void stop() {
      port.clear();
      port.stop();
    }
     
    P.S. Что конечно же не освобождает вас от изучения всего того, что посоветовал @NR55RU :)
     
  4. pskovrezka

    pskovrezka Нуб

    Да, огромное спасибо за информацию, уже начал изучение...
     
  5. Staticvoid

    Staticvoid Нерд

  6. zelayza

    zelayza Нуб

    Помогите разобраться , почему у меня при подключении , сервомотор запитываю от внешнего питания , а ардуино запитываю от USB и как только подцепляю общий минус GND У МЕНЯ ПРОИСХОДИТ ЗАМЫКАНИЕ, МЕЖДУ АРДУИНО И КОМПОМ? НА СЕРВОМОТОРЕ ПРОВОДА КОРИЧНЕВЫЙ МИНУС, ОРАНЖЕВЫЙ СИГНАЛЬНЫЙ,И КРАСНЫЙ ПЛЮС.Заранее благодарю, плата УНО
     
  7. parovoZZ

    parovoZZ Гуру

    ну нагородил, ну нагородил...
     
  8. zelayza

    zelayza Нуб

    почему что я такого нагородил, как и положенно общий минус между платой и питанием серво двигателя , что я не так что-то сделал?
    [​IMG]
     
    Последнее редактирование: 18 фев 2019
  9. zelayza

    zelayza Нуб

  10. parovoZZ

    parovoZZ Гуру

    Правильно говорить не минус, а ноль. Минус указывает на двухполярное питание, что в данном случае не так.
    И потом - чуть младше меня, а русский так и не осилил. Стыдно должно быть. Я ничего не понял. Либо схему давай, либо пиши правильно - со знаками препинания. Или другого попроси со слов написать.
     
  11. AlexU

    AlexU Гуру

    Замыкание у Вас происходит по той простой причине, что Вы соединяете проводником минус питания моторчика и минус от USB. Проще говоря Вы их замыкаете друг на друга.
    Но что-то (даже боюсь представить что) мне подсказывает, что под "ЗАМЫКАНИЕМ" Вы понимаете электрический пробой, который возникает при подключении USB кабеля от Ардуино к компьютеру. Т.е. Вы пытаетесь подключить USB кабель и возникает искра (вполне вероятно, что сильная).
    Правильно ли я перевел Вашу мысль на человеческий язык?

    PS: чужие темы лучше не трогать -- не хорошо...
     
  12. zelayza

    zelayza Нуб

    Подаем питание на серводвигатель то есть постоянное напряжение (это плюс и минус питание 5 вольт, так как другого там не положено только постоянное не какого двух полярного ни переменного ) от внешнего блока питания, а на ARDUINO UNO (это плата на которой расположено микроконтроллер)питание от usb.
    Да все верно.
    А как же подключать правильно его минус если например нужно мониторить через уезби
     
  13. AlexU

    AlexU Гуру

    Тогда следующая порция наводящих вопросов:
    1. есть ли заземление в розетке, в которую включен компьютер?
    2. что-за блок питания моторчика, предусмотрено ли в нём заземление?
    3. Если в БП моторчика есть заземление, то соединены или нет заземление БП моторчика и заземление БП компьютера?
    4. Если в БП моторчика заземления нет, есть ли гальваническая развязка между низковольтной частью и высоковольтной?
     
  14. zelayza

    zelayza Нуб

    не негде нету не там не там, все понял я Вашу мысль спасибо большое.Подключал к ноутбуку с включенным блок питанием , мысли были на это но уже времени много было не стал проверять, короче попробую отключить от питания ноутбук и моторчик подключу через крону.Спасибо еще раз
     
  15. parovoZZ

    parovoZZ Гуру

    в моем БП от ноута земля в ноут не заходит. Поэтому я без проблем соединяю всё в подряд.

    И дальше что? Каким образом образовывается цепь для протекания тока?
     
  16. zuko

    zuko Нерд

    Прочитав, немножко обалдел. И решил перевести с русского на русский.

    1. Отвинтите на розетке винтик и снимите крышечку. Посмотрите, сколько проводов подходит к розетке, если два, то она без заземления. Пальцами и отверткой туда не лазить! Этот вид спорта пока не для вас.
    2. Посмотрите на вилку от компьютера, которую втыкаете в розетку. На ней, прямо на корпусе, посередине, есть блестящая металлическая полоска. Это заземление, предназначенное для контакта с третьим проводом розетки. На вашем блоке питания мотора есть такая?
    3. Если есть, то переходим к третьему пункту - проверяем, есть ли контакт "земли" блока питания моторчика, и "земли" блока питания компьютера. Если они включены через примитивный удлинитель без контактов заземления, то от третьего провода нет никакого толка. И хотя на каждом блоке питания вольтметр покажет пять или сколько там у вас, вольт, разница между этими блоками питания может быть большой.
    4. Подключите один щуп омметра (если нет, то контакт низковольтной лампочки, подключенной к батарейке) к вилке блока питания, а другим потычьте в выводы. Если прибор что-то покажет (или лампа загорится) это плохо.
    Результаты - в студию.


    Вот так примерно. Эту инструкцию можнт понять и выполнить кто угодно. Гуглить же "гальваническую развязку" можно месяцами.