Не работает библиотека StepperAmperka для motor shield

Тема в разделе "Arduino & Shields", создана пользователем Сергекот, 23 мар 2014.

  1. При попытке скинуть программу выдаёт ошибку:
    In file included from sketch_mar23a.ino:1:
    C:\Program Files\Arduino\libraries\StepperAmperka/StepperAmperka.h:29: error: 'byte' has not been declared
    C:\Program Files\Arduino\libraries\StepperAmperka/StepperAmperka.h:30: error: 'byte' has not been declared
    C:\Program Files\Arduino\libraries\StepperAmperka/StepperAmperka.h:31: error: 'byte' has not been declared
    C:\Program Files\Arduino\libraries\StepperAmperka/StepperAmperka.h:32: error: 'byte' has not been declared
    C:\Program Files\Arduino\libraries\StepperAmperka/StepperAmperka.h:38: error: 'byte' has not been declared
    C:\Program Files\Arduino\libraries\StepperAmperka/StepperAmperka.h:41: error: 'byte' has not been declared
    C:\Program Files\Arduino\libraries\StepperAmperka/StepperAmperka.h:50: error: 'byte' does not name a type
    C:\Program Files\Arduino\libraries\StepperAmperka/StepperAmperka.h:51: error: 'byte' does not name a type
    C:\Program Files\Arduino\libraries\StepperAmperka/StepperAmperka.h:52: error: 'byte' does not name a type
    C:\Program Files\Arduino\libraries\StepperAmperka/StepperAmperka.h:53: error: 'byte' does not name a type
    кто-то знает что это такое ?
     
  2. atompost

    atompost Гик

    error: 'byte' has not been declared :)
     
  3. И как же его объявить ????
     
  4. atompost

    atompost Гик

    может быть для начала скетч разместите тут????
     
  5. скейч - пример из этой библиотеки

    Код (Text):
    #include <StepperAmperka.h>
    // Параметр конструктора — количество шагов на 1 оборот.
    // Фикированная характеристика используемого шагового двигателя
    StepperAmperka motor = StepperAmperka(200);
    // Если использовать Motor Shield на нестандартных пинах,
    // конструктор будет выглядеть иначе.
    // Например, для пинов 8, 9, 10, 11 конструктор будет таким:
    // StepperAmperka motor = StepperAmperka(200, 8, 9, 10, 11);
    void setup()
    {
      // Устанавливаем скорость вращения 30 оборотов в минуту.
      motor.setSpeed(30);
    }
    void loop()
    {
      // 180° по часовой стрелке в двуфазном режиме
      motor.step(100, FULL_STEP);
      delay(1000);
      // 180° против часовой стрелки в однофазном режиме
      motor.step(-100, WAVE_DRIVE);
      delay(1000);
      // 180° по часовой стрелке в полушаговом режиме
      motor.step(200, HALF_STEP);
      delay(1000);
      // 180° против часовой стрелки в двуфазном режиме
      // этот режим используется по умолчанию, если не передан
      // второй аргумент
      motor.step(-100);
      delay(1000);
    }
    тут явно не в скетче дело
     
  6. lerik2703

    lerik2703 Гик

  7. acos

    acos Официальный гик Администратор

    Очень странно. Попробуйте поменять в библиотеке все «byte» на «uint8_t».
    А какая у вас версия Arduino IDE?
     
  8. Megakoteyka

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

    Вижу косячок в библиотеке.
    Строчка
    Код (Text):
    #include "Arduino.h"
    находится в сишнике вместо хидера. А в хидере ее совсем нет, зато используется byte.
    И вместо этой строчки, видимо, есть смысл сунуть
    Код (Text):
    #ifndef DHT_H
    #define DHT_H

    #ifndef ARDUINO
    #error "Arduino version not defined"
    #endif

    #if ARDUINO >= 100
    #include <Arduino.h>
    #else
    #include <WProgram.h>
    #endif
     
    lerik2703 и acos нравится это.
  9. acos

    acos Официальный гик Администратор

    Согласен. Почикаем. Да, ещё забыли Alex19 в соавторах указать.
     
    Megakoteyka нравится это.
  10. Спасибо большое
     
  11. Climber

    Climber Нерд

  12. acos

    acos Официальный гик Администратор

    Нужно больше информации. Не компилируется скетч или просто мотор не крутится? Скетч из примера к библиотеке? Работаете с Motor Shield или с чем-то другим?
     
  13. Climber

    Climber Нерд

    Более подробно
    Плата arduino UNO R2
    Мотор шилд ваш
    Мотор такой

    Все железо работает, потому что скетч в котором не используются библиотеки компилируется и все крутится :)

    Однако если использовать библиотеку, то скетч из примера к библиотеке не компилируется
    Библиотека амперка.jpg
     
  14. Climber

    Climber Нерд

    Попробовал использовать более раннюю сборку arduino 0022
    результат похожий Библиотека амперка1.jpg
     
  15. Climber

    Climber Нерд

    Вообщем разобрался :)
    Рассказываю что надо сделать

    1) Надо точно узнать в каком месте должна быть библиотека. В моем случае она находилась докуменды\arduino\libraries\StepperAmperka
    2)Открыть толковым редактором, что бы все было понятно. Я использовал notepad++ http://www.3dnews.ru/220642
    3)В библиотеке должно быть

    #ifndef StepperAmperka_h
    #define StepperAmperka_h

    #ifndef ARDUINO
    #error "Arduino version not defined"
    #endif

    #if ARDUINO >= 100
    #include <Arduino.h>
    #else
    #include <WProgram.h>
    #endif

    4) надо все byte заменить на uint8_t

    после этого все заработало
     
    acos нравится это.
  16. Climber

    Climber Нерд

    вот как выглядит рабочий StepperAmperka.h (архив не смог прикрепить к сообщению)

    /*
    StepperAmperka.h - Fork of stepper library for Wiring/Arduino to
    make it compatible out of the box with Amperka Motor Shield
    Original library (0.1) by Tom Igoe.
    Two-wire modifications (0.2) by Sebastian Gassner
    Combination version (0.3) by Tom Igoe and David Mellis
    Bug fix for four-wire (0.4) by Tom Igoe, bug fix from Noah Shibley
    Half step mode (0.4a) by Vasily Basalaev

    */

    // ensure this library description is only included once
    #ifndef StepperAmperka_h
    #define StepperAmperka_h

    #ifndef ARDUINO
    #error "Arduino version not defined"
    #endif

    #if ARDUINO >= 100
    #include <Arduino.h>
    #else
    #include <WProgram.h>
    #endif

    enum STEP_TYPE {
    WAVE_DRIVE,
    FULL_STEP,
    HALF_STEP
    };

    // library interface description
    class StepperAmperka {
    public:
    // constructor:
    StepperAmperka(
    int number_of_steps,
    uint8_t motor_pin_1 = 4,
    uint8_t motor_pin_2 = 5,
    uint8_t motor_pin_3 = 6,
    uint8_t motor_pin_4 = 7);

    // speed setter method:
    void setSpeed(long revs_per_minute);

    // mover method:
    void step(int number_of_steps, uint8_t step_type=FULL_STEP);

    protected:
    void stepMotor(int this_step, uint8_t step_type);

    bool direction; // Direction of rotation
    int speed; // Speed in RPMs
    unsigned long step_delay; // delay between steps, in ms, based on speed
    int number_of_steps; // total number of steps this motor can take
    int step_number; // which step the motor is on

    // motor pin numbers:
    uint8_t motor_pin_1;
    uint8_t motor_pin_2;
    uint8_t motor_pin_3;
    uint8_t motor_pin_4;

    long last_step_time; // time stamp in ms of when the last step was taken
    };

    #endif
     
  17. acos

    acos Официальный гик Администратор

    Моя рукалицо) Это давным давно было исправлено, но оказалось, что я это всё исправлял в своём персональном репозитории, а не в https://github.com/amperka/stepper-amperka)
    Вы молодец, что разобрались. Теперь всё должно работать у всех.
     
  18. kallash

    kallash Нуб

    помогите плиз. не инклюдится step.JPG
     
  19. acos

    acos Официальный гик Администратор

  20. kallash

    kallash Нуб