Помогите новичку.

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем NoViChok+, 27 мар 2019.

  1. NoViChok+

    NoViChok+ Нерд

    Здравствуйте!
    Помогите пожалуйста с кодом. Залил в ардуину нано, а он не работает. Код отсюда
    http://developer.alexanderklimov.ru/arduino/servo.php
    хочу разобраться, но в тупике :( ???
    Код (C++):
    int servoPin = 9; // сигнальный провод от серво на порт 9
    int val;

    void setup()
    {
        pinMode(servoPin, OUTPUT);
        Serial.begin(9600);
        Serial.println("Servo is ready");
    }

    void loop()
    {
        // convert number 0 to 9 to corresponding 0-180 degree angle
        val = Serial.read();
        if (val >= '0' && val <= '9')
        {
            val = val - '0'; // convert to numerical variable
            val = val * (180 / 9); // convert number to angle
            Serial.print("moving servo to ");
            Serial.print(val, DEC);
            Serial.println();
            // giving the servo time
            //to rotate to commanded position
            for (int i = 0; i <= 50; i++)
            {
                servoPulse(servoPin, val);
            }
        }
    }

    // define a servo pulse function
    void servoPulse(int pin, int angle)
    {
        // convert angle to 500-2480 pulse width
        int pulseWidth = (angle * 11) + 500;
        digitalWrite(pin, HIGH); // set the level of servo pin as high
        delayMicroseconds(pulseWidth); // delay microsecond of pulse width
        digitalWrite(pin, LOW); // set the level of servo pin as low
        delay(20 - pulseWidth / 1000);
    }
    компилится, а не работает. На 9 ноге никакого сигнала. Питание сервы отдельное, все как по схеме.
    рад буду любому совету. Натура чувствительная сильно не пинайте :).
     
  2. parovoZZ

    parovoZZ Гуру

    Александр Климов что говорит?
     
  3. Asper Daffy

    Asper Daffy Иксперд

    Ну, тогда извини, ничем помочь нельзя :(
     
  4. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Все работает (в симуляторе). После ввода значения, Ардуина 1-ну секунду шлет пачку импульсов. На мой взгляд - мало. Надо секунд 5-10. Серва не успеет отработать поворот.
    for (int i = 0; i <= 50; i++) ---> for (int i = 0; i <= 250; i++)
    Пришлось вынести подпрограмму перед setup()-ом. Иначе выдает ошибку компиляции.
     
    Последнее редактирование: 27 мар 2019
  5. NoViChok+

    NoViChok+ Нерд

    Два вопроса
    1-Куда вводить?
    2- это как?
    Пожалуйста, надо бы разжевать, а то не понимаю. Я же новичок в этом. Читаю и заодним пытаюсь
    на практике закрепить:).
     
  6. Ariadna-on-Line

    Ariadna-on-Line Гуру

    1. Главный цикл читает значение, пришедшее в последовательный порт. В случае Ардуины - это USB связь с компом. Если вы используете Arduino IDE - Инструменты - Монитор порта. Отправляйте цифры 0-9, читайте ответы Ардуины и смотрите на серву.
    2. Подпрограмму, начинающуюся со строчки
    void servoPulse(int pin, int angle)
    разместите перед строчкой
    void setup()
    3. Компилятор, встретив строку типа servoPulse(servoPin, val);
    часто не знает что с ней делать. Потому что объекта этой строки он еще не видел. И выдает ошибку компиляции. А если он уже видел void servoPulse(int pin, int angle), то знает что это - подпрограмма. Подобное бывает во многих языках. Запоминайте.
    4. Я программист такой же как вы, так что с меня тут спросу мало. Моя сфера - схемотехника.
     
  7. Airbus

    Airbus Радиохулиган Модератор

    Если Вы задаете такие вопросы то Вам надо читать не блоги неизвестных Эрнестов а ВИКИ Амперки там СПЕЦИАЛЬНО ДЛЯ ВАС все разжевано.ВИКИ Амперки сами найдете?
     
  8. NoViChok+

    NoViChok+ Нерд

    Большое спасибо за разьяснения. Виновата спешка. Пытался больше прочитать и сразу что то сделать. Видно спешка нужна в одном случаи при ловле блох :D. Когда копировал видно что то потерял. Повторно сделал и ввел цифру все работает. Ура!!!
    Кстати кто то должен на Югах уже пузико греть?! :cool:
     
    Последнее редактирование: 28 мар 2019
  9. DetSimen

    DetSimen Спамовредитель Модератор

    типичная ситуацыя, када руки поперед головы работают.
     
  10. Airbus

    Airbus Радиохулиган Модератор

    Как же у Вас тогда компилировалось?Или таки не компилировалось?IDE в таких случаях грязно ругается
     
  11. NoViChok+

    NoViChok+ Нерд

    Сам в шоке! Копию с оригиналом не сверял, тупо скопировал второе раз и вставил. Видно потерял что то не влияющее на компиляцию в первом случаи. Хорошо ставит на место такие ситуации, а то сразу и много. Впредь наука, буду внимательнее. Хорошо когда есть люди, которые могут наставить на путь истинный!, Спасибо.
     
  12. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Юга - югами, а я позавчера в солнечном Санкт-Петербурге по 39 рублей за штуку купил несколько веб-камер. Не бог весть какие - 300кпикс., но по 39 р. и с микрофоном. Работают вполне нормально. ЧуднОй однако город.
     
    Последнее редактирование: 28 мар 2019
  13. Bif+

    Bif+ Нерд

    Какая хорошая штука! Наверное подайдет для моего автопилота, а то моя дрожка завела в тупик - конфликтуют библиотеки servo и SoftwareSerial. Как только включаю myservo.attach, сразу на осциллограмме паразитный сигнал и серва начинает танцевать. Или это лечится другим способом? Пробовал Servo2, выдает ошибку загрузки в Nano. Что скажите, Гуру?
     
  14. Airbus

    Airbus Радиохулиган Модератор

    Зачем Вам SoftwareSerial?Когда есть родной аппаратный?Вот его и используйте
     
  15. Bif+

    Bif+ Нерд

  16. NoViChok+

    NoViChok+ Нерд

    Почитал. Мне до такого как вокруг китайской стены:(.
     
  17. Bif+

    Bif+ Нерд

    Вот я тоже хожу вокруг ее!
     
  18. Airbus

    Airbus Радиохулиган Модератор

    Немного не понял Эхолот и автопилот в одном устройстве?В чем проблема использования аппаратного Сериала?
     
  19. Bif+

    Bif+ Нерд

    Что-то у меня не получается склеить код эхолота с серводвигателем. Без Software выдает ошибку то загрузки, то не компилирует.