Помогите пожалуйста

Тема в разделе "Закажу проект", создана пользователем happyN00B, 18 янв 2015.

  1. happyN00B

    happyN00B Нуб

  2. Alex19

    Alex19 Гуру

    Если по простому, то на проект не тянет.

    Код для получения int через Serial монитор
    Код (Text):

    void setup()
    {
      Serial.begin(9600);
    }
    void loop()
    {
      if (Serial.available()>0)
      {
        int val = Serial.parseInt();

        Serial.println(val);
      }
    }
    В контексте эксперимента №17

    Код (Text):

    // управлять сервоприводами (англ. servo motor) самостоятельно
    // не так то просто, но в стандартной библиотеке уже всё
    // заготовлено, что делает задачу тривиальной
    #include <Servo.h>
    #define POT_MAX_ANGLE 270.0 // макс. угол поворота потенциометра
    // объявляем объект типа Servo с именем myServo. Ранее мы
    // использовали int, boolean, float, а теперь точно также
    // используем тип Servo, предоставляемый библиотекой. В случае
    // Serial мы использовали объект сразу же: он уже был создан
    // для нас, но в случае с Servo, мы должны сделать это явно.
    // Ведь в нашем проекте могут быть одновременно несколько
    // приводов, и нам понадобится различать их по именам
    Servo myServo;
    void setup()
    {
      // прикрепляем (англ. attach) нашу серву к 9-му пину. Явный
      // вызов pinMode не нужен: функция attach сделает всё за нас
      myServo.attach(9);

      // инициирует последовательное соединение и задает скорость передачи данных в бит/c (бод).
      Serial.begin(9600);
    }
    void loop()
    {
      // функция получает количество байт(символов) доступных для чтения из последовательного интерфейса связи.
      if (Serial.available()>0)
      {
        // получаем отправленные значения, и приводим к int, если число не найдено в течении 1 сек., вернет 0. Настраивается через Serial.setTimeout ()
        int val = Serial.parseInt();

        // на основе сигнала понимаем реальный угол поворота движка.
        // Используем вещественные числа в расчётах, но полученный
        // результат округляем обратно до целого числа
        int angle = int(val / 1024.0 * POT_MAX_ANGLE);
        // обычная серва не сможет повторить угол потенциометра на
        // всём диапазоне углов. Она умеет вставать в углы от 0° до
        // 180°. Ограничиваем угол соответствующе
        angle = constrain(angle, 0, 180);
        // и, наконец, подаём серве команду встать в указанный угол
        myServo.write(angle);

        // возвращаем полученное значение для проверки
        Serial.println(val);
      }
    }
    UPD. Что-то вчера заработался, чтобы сразу передавать угол
    Код (Text):

    // управлять сервоприводами (англ. servo motor) самостоятельно
    // не так то просто, но в стандартной библиотеке уже всё
    // заготовлено, что делает задачу тривиальной
    #include <Servo.h>
    #define POT_MAX_ANGLE 270.0 // макс. угол поворота потенциометра
    // объявляем объект типа Servo с именем myServo. Ранее мы
    // использовали int, boolean, float, а теперь точно также
    // используем тип Servo, предоставляемый библиотекой. В случае
    // Serial мы использовали объект сразу же: он уже был создан
    // для нас, но в случае с Servo, мы должны сделать это явно.
    // Ведь в нашем проекте могут быть одновременно несколько
    // приводов, и нам понадобится различать их по именам
    Servo myServo;
    void setup()
    {
      // прикрепляем (англ. attach) нашу серву к 9-му пину. Явный
      // вызов pinMode не нужен: функция attach сделает всё за нас
      myServo.attach(9);

      // инициирует последовательное соединение и задает скорость передачи данных в бит/c (бод).
      Serial.begin(9600);
    }
    void loop()
    {
      // функция получает количество байт(символов) доступных для чтения из последовательного интерфейса связи.
      if (Serial.available()>0)
      {
        // получаем отправленные значения, и приводим к int, если число не найдено в течении 1 сек., вернет 0. Настраивается через Serial.setTimeout ()
        int val = Serial.parseInt();
     
        // и, наконец, подаём серве команду встать в указанный угол
        myServo.write(val);

        // возвращаем полученное значение для проверки
        Serial.println(val);
      }
    }
    Сервы под рукой нет, проверить нет возможности.
     
    Последнее редактирование: 19 янв 2015
    happyN00B нравится это.