arduino uno + servo == звуки USB подключения

Тема в разделе "Arduino & Shields", создана пользователем d00m, 19 ноя 2012.

  1. d00m

    d00m Гик

    преподы..
    ниче личного, просто я решил сделать сам. ваш предыдущий код, кстати сподвигнул на это.
    теперь вот думаю как бы скармливать серию команд..
     
  2. Для тестов:
    Код (Text):
    //#include <Servo.h>
    //Servo servo1, servo2;
    int t;
    String readString;
     
    void setup()
    {
      //servo1.attach(10);
      //servo2.attach(9);
      Serial.begin(9600);
    }
    void loop()
    {
     
    while (Serial.available()) {
    char c = Serial.read(); //gets one byte from serial buffer
    if(c=='l'){int l = t; Serial.println("Left:"); Serial.println(l); readString=""; t=0; l=0; break;}
    if(c=='r'){int r = t; Serial.println("Right:"); Serial.println(r); t=0; readString=""; r=0; break;}
    readString += c; //makes the string readString
    delay(2);
    t = readString.toInt();
    //servo2.write(t);
    }
    }
    Для работы:
    Код (Text):
    #include <Servo.h>
    Servo servo1, servo2;
    int t;
    String readString;
    void setup()
    {
    servo1.attach(10);
    servo2.attach(9);
    Serial.begin(9600);
    }
    void loop()
    {
    while (Serial.available()) {
    char c = Serial.read(); //gets one byte from serial buffer
    if(c=='l'){int l = t; servo1.write(l); readString=""; t=0; l=0; break;}
    if(c=='r'){int r = t; servo2.write(r); t=0; readString=""; r=0; break;}
    readString += c; //makes the string readString
    delay(2);
    t = readString.toInt();
    }
    }
    Мой код тоже хороший.
    Серию команд кормите так: 10l180r
    или 180l80r
    или 80r76l
     
  3. Пробуйте!
    Код (Text):
    //#include <Servo.h>
    //Servo servo1, servo2;
    int t;
    String readString;
     
    void setup()
    {
      //servo1.attach(10);
      //servo2.attach(9);
      Serial.begin(9600);
    }
    void loop()
    {
     
    while (Serial.available()) {
    char c = Serial.read(); //gets one byte from serial buffer
    if(c=='l'){int l = t; Serial.println("Left:"); Serial.println(l); readString=""; t=0; l=0; break;}
    if(c=='r'){int r = t; Serial.println("Right:"); Serial.println(r); t=0; readString=""; r=0; break;}
    readString += c; //makes the string readString
    delay(2);
    t = readString.toInt();
    //servo2.write(t);
    }
    }
     
  4. d00m

    d00m Гик

    да.. похоже с буквой в конце все проще сделать..
     
  5. Да, проще. И принимает двойные команды! (10l67r , 78r67l)
     
  6. Делать вам вебстраничку?
     
  7. d00m

    d00m Гик

    если не трудно ) спасибо !
     
  8. не трудно! пожалуйста ;)
     
  9. Почти готово...
     
  10. Пока готова только веб-страничка, управляющая часть ещё не готова.
    Можете пока играться - http://khimki-forest.ru/serva.php , пароль testpass .
     
  11. Готово! ;)
    Управляющая часть: http://khimki-forest.ru/download/50f513d8be9b6
    Веб-страничка: http://khimki-forest.ru/serva.php (пароль testpass)
    Скетч для Arduino для тестов:
    Код (Text):
    //#include <Servo.h>
    //Servo servo1, servo2;
    int t;
    String readString;
     
    void setup()
    {
      //servo1.attach(10);
      //servo2.attach(9);
      Serial.begin(9600);
    }
    void loop()
    {
     
    while (Serial.available()) {
    char c = Serial.read(); //gets one byte from serial buffer
    if(c=='l'){int l = t; Serial.println("Left:"); Serial.println(l); readString=""; t=0; l=0; break;}
    if(c=='r'){int r = t; Serial.println("Right:"); Serial.println(r); t=0; readString=""; r=0; break;}
    readString += c; //makes the string readString
    delay(2);
    t = readString.toInt();
    //servo2.write(t);
    }
    }
    Для работы:
    Код (Text):
    #include <Servo.h>
    Servo servo1, servo2;
    int t;
    String readString;
    void setup()
    {
    servo1.attach(10);
    servo2.attach(9);
    Serial.begin(9600);
    }
    void loop()
    {
    while (Serial.available()) {
    char c = Serial.read(); //gets one byte from serial buffer
    if(c=='l'){int l = t; servo1.write(l); readString=""; t=0; l=0; break;}
    if(c=='r'){int r = t; servo2.write(r); t=0; readString=""; r=0; break;}
    readString += c; //makes the string readString
    delay(2);
    t = readString.toInt();
    }
    }
    Как пользоваться управляющей частью:

    0)Если на Arduino не закачан необходимый скетч(ссылка вверху), закачиваете его.
    1) Скачиваете и запускаете управляющую часть.
    2) Указываете COM-порт(жмёте на стрелочку, выбираете) на котором висит Arduino
    3) Нажимаете "Открыть".
    4) Программа сворачивается в трей, она готова к приёму команд!
    5) Открываете веб-страничку, вводите пароль
    6) Вводите значения углов, жмёте ОК
    7) ...........
    8) PROFIT!!!

    Видео, как пользоваться управляющей частью(смотреть в HD 720p):



    C# исходники:

    Исходники в txt формате
    Исходники в zip формате
     
  12. Unixon

    Unixon Оракул Модератор

    Не могли бы вы в следующий раз, когда публикуете свои труды, давать сылку, например, на GitHub, где лежат исходники проекта, а не на черный ящик, работоспособный под одной единственной системой ;)
     
  13. Unixon

    Unixon Оракул Модератор

    Взять за правило всегда вперед кидать исходники. :)
     
  14. Добавлены исходники C# в формате zip и txt.
    http://forum.amperka.ru/threads/arduino-uno-servo-звуки-usb-подключения.959/page-3#post-6204

    И всё перезалито на мой сервер.
    Всё необходимое для работы системы ►здесь

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

    Ссылка для скачивания "сервопроги" обновлена.
     
  15. d00m, давайте, проверяйте.
     
  16. d00m

    d00m Гик

    спасибо ! раньше проверить не мог, был занят.
     
  17. пожалуйста ;)
     
  18. Люди заходят, качают :)
    Видимо полезная программка ;)
     
  19. А если одна серва и USB 3.0 (900 мА)?
     
  20. nailxx

    nailxx Официальный Нерд Администратор

    На USB 3.0 лично не пробовал, но формально, да, должно давать 900 мА чего хватит с головой.