Проблема с MotorSheild от ADAFruit

NazarovAlexandr
Offline
Зарегистрирован: 27.08.2014

Добрый день! Вопрос по Leonardo:

Купил мотор-шилд, вот такой -https://learn.adafruit.com/adafruit-motor-shield/overview, скачал у них же библиотеку для него и накак не могу с ним поработать: скопировал с сайта простейший скетч:

#include <AFMotor.h>


AF_DCMotor motor(2, MOTOR12_64KHZ); // create motor #2, 64KHz pwm

void setup() {
  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("Motor test!");
  
  motor.setSpeed(200);     // set the speed to 200/255
}

void loop() {
  Serial.print("tick");
  
  motor.run(FORWARD);      // turn it on going forward
  delay(1000);

  Serial.print("tock");
  motor.run(BACKWARD);     // the other way
  delay(1000);
  
  Serial.print("tack");
  motor.run(RELEASE);      // stopped
  delay(1000);
}

но при проверке вылезает ошибка "'CS20' was not declared in this scope". Что не так?

 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Ай... какое несчастье... что именно вам неясно в сообщении компилятора?

NazarovAlexandr
Offline
Зарегистрирован: 27.08.2014

сообщение-то мне понятно, мне нужен ответ, как сделать чтобы оно работало

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Наверное нужно исправить то что просит компилятор

NazarovAlexandr
Offline
Зарегистрирован: 27.08.2014

блин, перестаньне говорить загадками - как видно в приведенном мною коде, я нигде не использую переменную CS20, откуда он берет, что она не определена в области? Я прошу просто рецепта из серии "сделай так-то и моторчики закрутяться".

art100
Offline
Зарегистрирован: 09.03.2014

NazarovAlexandr пишет:

блин, перестаньне говорить загадками - как видно в приведенном мною коде, я нигде не использую переменную CS20, откуда он берет, что она не определена в области? Я прошу просто рецепта из серии "сделай так-то и моторчики закрутяться".

а кто тебя знает где ты эту хрень выкопал CS20

суслика видишь?

нет

а суслик есть

У  меня такого не было

https://yadi.sk/i/tikT5q0NaFQuP

переименуй старый компилятор

разверни с чистого листа компилятор

добавь только библиотечку АдовыхФруктов

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

все просто. в либе не прописаны условия для вашего микроконтроллера. если бы была другая ардуина запустилась бы без проблем. если есть что нибудь на 328 меге используйте ее

или напишите код сами

art100
Offline
Зарегистрирован: 09.03.2014

jeka_tm пишет:

все просто. в либе не прописаны условия для вашего микроконтроллера. если бы была другая ардуина запустилась бы без проблем. если есть что нибудь на 328 меге используйте ее

или напишите код сами

А что Леонардо в Ад за Фруктами не ходит?

помнится эих адовыхфруктов несколько версий у меняна диске валяется

Я на L298 врукопашную драйвера спаял стало дешевле за 4 штуки всего 2 изАдаФруктаи забил и забыл.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

art100 ты что снова выпил. успокойся. тебя как будто за живое задели или тупо энергию девать некуда. так есть такая фишка видеочат рулетка. люди незнакомые общайся о чем хочешь, расскажи им про 298 и леонардо

а насчет спаял. порой проще купить чем заморачиваться с изготовлением платы, трассировкой, пайкой и тп

 

art100
Offline
Зарегистрирован: 09.03.2014

jeka_tm пишет:

art100 ты что снова выпил. успокойся. тебя как будто за живое задели или тупо энергию девать некуда. так есть такая фишка видеочат рулетка. люди незнакомые общайся о чем хочешь, расскажи им про 298 и леонардо

а насчет спаял. порой проще купить чем заморачиваться с изготовлением платы, трассировкой, пайкой и тп

 

щас гляну адовфрукт на диске

на adf не нашел пйду по нужде в тырнет

ага буквочку упустил

                                                                            ╔══════════════════════

    ╔════════════════════════════════════════════════════════════ Find file: adaf*.* ══════════════
    ║  H:\workarduino\steppermotors\
    ║       16.06.2014│     <Folder>│           │Adafruitgavnorevolutions
    ║ ─────────────────────────────────────────────────────────────────────────────────────────────
    ║  H:\workarduino\steppermotors\Adafruitgavnorevolutions\
    ║       10.02.2014│        11819│   A       │Adafruit-Motor-Shield-library-master.zip
    ║       10.02.2014│       261413│   A       │Adafruit.jpg
    ║       10.02.2014│       231715│   A       │Adafruit2.jpg
    ║       16.06.2014│     <Folder>│           │Adafruit-Motor-Shield-library-master
    ║ ─────────────────────────────────────────────────────────────────────────────────────────────
    ║  H:\workarduino\steppermotors\Adafruitgavnorevolutions\Adafruit-Motor-Shield-library-master\
    ║       16.06.2014│     <Folder>│           │Adafruit-Motor-Shield-library-master
    ║ ─────────────────────────────────────────────────────────────────────────────────────────────
    ║  H:\workarduino\steppermotors\Adafruitgavnorevolutions\
    ║       16.06.2014│     <Folder>│           │adafruit2
    ║ ─────────────────────────────────────────────────────────────────────────────────────────────
    ║  H:\workarduino\steppermotors\Adafruitgavnorevolutions\adafruit2\
    ║       10.02.2014│         1648│   A       │adafruit2.ino
    ║ ─────────────────────────────────────────────────────────────────────────────────────────────
    ║  H:\workarduino\steppermotors\Adafruitgavnorevolutions\
    ║       16.06.2014│     <Folder>│           │adafruit_ino
    ║ ─────────────────────────────────────────────────────────────────────────────────────────────
    ║  H:\workarduino\steppermotors\Adafruitgavnorevolutions\adafruit_ino\
F   ║       10.02.2014│         1648│   A       │adafruit_ino.ino
C   ║ ─────────────────────────────────────────────────────────────────────────────────────────────
    ║  H:\workarduino\steppermotors\
D   ╠══════════════════════════════════════════════════════════════════════════════════════════════
    ║ Search done. Found files: 12, folders: 8

так вроде все февральские

и похоже одно и тоже друг у друга таскают и переименовывают

так последнее что они написали это маские каке-то трех цветные светодиоди NeoPixel

такс где тут моторы

такс моторы получается 4 года не менялись


  ╔════════════════════════ Find file: AFm*.* ═════════════════════════╗
  ║  D:\workarduino\robot\6\microrobot\                     <Folder>   ║
  ║    AFMotor                            Folder    28.12.13   20:12   ║
  ║                                                                    ║
  ║  D:\workarduino\robot\6\microrobot\AFMotor\             <Folder>   ║
  ║    AFMotor.cpp                         18521    09.10.12   05:08   ║
  ║    AFMotor.h                            5982    09.10.12   05:08   ║
  ║                                                                    ║
  ║  D:\...arduino\robot\6\microrobot\AFMotor\examples\     <Folder>   ║
  ║    AFMotor_ConstantSpeed              Folder    28.12.13   20:12   ║
  ║                                                                    ║
  ║  D:\...obot\AFMotor\examples\AFMotor_ConstantSpeed\     <Folder>   ║
  ║    AFMotor_ConstantSpeed.pde             865    09.10.12   05:08   ║
  ║                                                                    ║
  ║  D:\...arduino\robot\6\microrobot\AFMotor\examples\     <Folder>   ║
  ║    AFMotor_MultiStepper               Folder    28.12.13   20:12   ║
  ║                                                                    ║
  ║  D:\...robot\AFMotor\examples\AFMotor_MultiStepper\     <Folder>   ║
  ║    AFMotor_MultiStepper.pde             1440    09.10.12   05:08   ║
  ║                                                                    ║
  ║  D:\...0426easydriver\gavno_ADFruitontworevolution\     <Folder>   ║
  ║    AFMotor_ConstantSpeed              Folder    18.07.14   08:02   ║
  ║                                                                    ║
  ║  D:\...DFruitontworevolution\AFMotor_ConstantSpeed\     <Folder>   ║
  ║    AFMotor_ConstantSpeed.ino             805    25.04.14   10:42   ║
  ║                                                                    ║
  ║  D:\...master\Adafruit-Motor-Shield-library-master\     <Folder>   ║
  ║    AFMotor.cpp                         18521    09.10.12   13:08   ║
  ║    AFMotor.h                            5982    09.10.12   13:08   ║
  ║                                                                    ║
  ║  D:\...afruit-Motor-Shield-library-master\examples\     <Folder>   ║
  ║    AFMotor_ConstantSpeed              Folder    18.07.14   08:02   ║
  ║                                                                    ║
  ║  D:\...brary-master\examples\AFMotor_ConstantSpeed\     <Folder>   ║
  ║    AFMotor_ConstantSpeed.pde             865    09.10.12   13:08   ║
  ║                                                                    ║
  ║  D:\...afruit-Motor-Shield-library-master\examples\     <Folder>   ║
  ║    AFMotor_MultiStepper               Folder    18.07.14   08:02   ║
  ║                                                                    ║
  ║  D:\...ibrary-master\examples\AFMotor_MultiStepper\     <Folder>   ║
  ║    AFMotor_MultiStepper.pde             1440    09.10.12   13:08   ║
  ║                                                                    ║
  ║  D:\...ermotors\Adafruitgavnorevolutions\adafruit2\     <Folder>   ║
  ║    AFMotor.cpp                         18521    09.10.12   13:08   ║
  ║    AFMotor.h                            5982    09.10.12   13:08   ║
  ║                                                                    ║
  ║                                                                    ║
  ║                                                                    ║
  ║                                                                    ║
  ║                                                                    ║
  ║                                                                    ║
  ╟────────────────────────────────────────────────────────────────────╢
  ║ Search done. Found 11 file(s) and 6 folder(s)                      ║

 

ТестМоторов из АдаФруктов компилируется на ура

щас поробуем для Леонардо порисовать

 

корректно посылает на хутор бабочек ловить

C:\Arduino\libraries\AFMotor\AFMotor.cpp:136:5: error: #error "This chip is not supported!"
C:\Arduino\libraries\AFMotor\AFMotor.cpp:173:5: error: #error "This chip is not supported!"
C:\Arduino\libraries\AFMotor\AFMotor.cpp:205:5: error: #error "This chip is not supported!"
C:\Arduino\libraries\AFMotor\AFMotor.cpp:226:5: error: #error "This chip is not supported!"
C:\Arduino\libraries\AFMotor\AFMotor.cpp:259:5: error: #error "This chip is not supported!"
C:\Arduino\libraries\AFMotor\AFMotor.cpp:279:5: error: #error "This chip is not supported!"
C:\Arduino\libraries\AFMotor\AFMotor.cpp:314:5: error: #error "This chip is not supported!"
C:\Arduino\libraries\AFMotor\AFMotor.cpp:334:5: error: #error "This chip is not supported!"
C:\Arduino\libraries\AFMotor\AFMotor.cpp: In constructor 'AF_Stepper::AF_Stepper(uint16_t, uint8_t)':
C:\Arduino\libraries\AFMotor\AFMotor.cpp:438: error: 'CS20' was not declared in this scope

 

 

откуда CS20 мне не ведомо

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

вот тут написано типы микроконтроллеров поддерживаемых

inline void initPWM1(uint8_t freq) {
#if defined(__AVR_ATmega8__) || \
    defined(__AVR_ATmega48__) || \
    defined(__AVR_ATmega88__) || \
    defined(__AVR_ATmega168__) || \
    defined(__AVR_ATmega328P__)
    // use PWM from timer2A on PB3 (Arduino pin #11)
    TCCR2A |= _BV(COM2A1) | _BV(WGM20) | _BV(WGM21); // fast PWM, turn on oc2a
    TCCR2B = freq & 0x7;
    OCR2A = 0;
#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
    // on arduino mega, pin 11 is now PB5 (OC1A)
    TCCR1A |= _BV(COM1A1) | _BV(WGM10); // fast PWM, turn on oc1a
    TCCR1B = (freq & 0x7) | _BV(WGM12);
    OCR1A = 0;
#elif defined(__PIC32MX__)
    #if defined(PIC32_USE_PIN9_FOR_M1_PWM)
        // Make sure that pin 11 is an input, since we have tied together 9 and 11
        pinMode(9, OUTPUT);
        pinMode(11, INPUT);
        if (!MC.TimerInitalized)
        {   // Set up Timer2 for 80MHz counting fro 0 to 256
            T2CON = 0x8000 | ((freq & 0x07) << 4); // ON=1, FRZ=0, SIDL=0, TGATE=0, TCKPS=<freq>, T32=0, TCS=0; // ON=1, FRZ=0, SIDL=0, TGATE=0, TCKPS=0, T32=0, TCS=0
            TMR2 = 0x0000;
            PR2 = 0x0100;
            MC.TimerInitalized = true;
        }
         // Setup OC4 (pin 9) in PWM mode, with Timer2 as timebase
        OC4CON = 0x8006;    // OC32 = 0, OCTSEL=0, OCM=6
        OC4RS = 0x0000;
        OC4R = 0x0000;
    #elif defined(PIC32_USE_PIN10_FOR_M1_PWM)
        // Make sure that pin 11 is an input, since we have tied together 9 and 11
        pinMode(10, OUTPUT);
        pinMode(11, INPUT);
        if (!MC.TimerInitalized)
        {   // Set up Timer2 for 80MHz counting fro 0 to 256
            T2CON = 0x8000 | ((freq & 0x07) << 4); // ON=1, FRZ=0, SIDL=0, TGATE=0, TCKPS=<freq>, T32=0, TCS=0; // ON=1, FRZ=0, SIDL=0, TGATE=0, TCKPS=0, T32=0, TCS=0
            TMR2 = 0x0000;
            PR2 = 0x0100;
            MC.TimerInitalized = true;
        }
         // Setup OC5 (pin 10) in PWM mode, with Timer2 as timebase
        OC5CON = 0x8006;    // OC32 = 0, OCTSEL=0, OCM=6
        OC5RS = 0x0000;
        OC5R = 0x0000;
    #else
        // If we are not using PWM for pin 11, then just do digital
        digitalWrite(11, LOW);
    #endif
#else
   #error "This chip is not supported!"
#endif
    #if !defined(PIC32_USE_PIN9_FOR_M1_PWM) && !defined(PIC32_USE_PIN10_FOR_M1_PWM)
        pinMode(11, OUTPUT);
    #endif

34U4 там нет

art100
Offline
Зарегистрирован: 09.03.2014

а ТС код да ругнулся дибильно

библиотечный как я советовал коррктно чип не нравится

а это неизвестно из какой помойки взяты хню несет

вообще непонятно откуда он его выкопал

ATmega32U4 работает с ICS20

C:\Arduino\hardware\arduino\cores\arduino\WInterrupts.c
    // to the configuration bits in the hardware register, so we simply shift
    // the mode into place.

    // Enable the interrupt.

    switch (interruptNum) {
#if defined(__AVR_ATmega32U4__)
        // I hate doing this, but the register assignment differs between the 1280/2560
        // and the 32U4.  Since avrlib defines registers PCMSK1 and PCMSK2 that aren't
        // even present on the 32U4 this is the only way to distinguish between them.
    case 0:
        EICRA = (EICRA & ~((1<<ISC00) | (1<<ISC01))) | (mode << ISC00);
        EIMSK |= (1<<INT0);
        break;
    case 1:
        EICRA = (EICRA & ~((1<<ISC10) | (1<<ISC11))) | (mode << ISC10);
        EIMSK |= (1<<INT1);
        break;
    case 2:
        EICRA = (EICRA & ~((1<<ISC20) | (1<<ISC21))) | (mode << ISC20);
        EIMSK |= (1<<INT2);
        break;

 

Проблема пустая из-за крывых ручек

Пример библиотечный с чситого листа ругается корректо НЕ ЗНАЮ ЧИП

Купить классическую Arduino Uno R3 и не кому дурить головую

 

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

я понимаю. но я же писал в самой либе не прописано, тс здесь не виноват, он этого не знал

а насчет сменить ардуину я уже советовал, но он куда то пропал

NazarovAlexandr
Offline
Зарегистрирован: 27.08.2014

Да, вы были абсолютно правы - эта библа не работает с Леонардой. В компиляторе сменил плату на Uno и все скомпилировалось :) Буду теперь ее покупать.

Следующий вопрос - а может ну ее эту библиотеку, просто подавать что-то на какие-то пины? Обошелся же я без библиотеки к ультразвуковому датчику расстояния. Может кто-то подскажет что и куда подавать для работы с DC Motors?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

представляете на такой задачи либа не нужна. но сами через поиск на форуме посмотрите как управлять двигателем. инфы много

Motto
Offline
Зарегистрирован: 05.06.2014

Мотор шилд от Адафрукта хорош тем, что может шимить аппаратно, в отличии от дешевых мотор шилдов на L293/298 и иже с ними, где ШИМ подается от Ардуины, угрёбищный 8-ми битный ШИМ.

Стоит только такая плата негуманно, даже китайские клоны.

Сейчаскто нибудь скажет, что на Ардуине можно сделать и 16 битный ШИМ с большой частотой.

Ну да, можно, если низкоуровневое проргаммирование хорошо знаешь.

Или поискать в инете библиотеки техногиков, которые этим вопросом уже заморачивались.

art100
Offline
Зарегистрирован: 09.03.2014

Motto пишет:

Мотор шилд от Адафрукта хорош тем, что может шимить аппаратно, в отличии от дешевых мотор шилдов на L293/298 и иже с ними, где ШИМ подается от Ардуины, угрёбищный 8-ми битный ШИМ.

Стоит только такая плата негуманно, даже китайские клоны.

Сейчаскто нибудь скажет, что на Ардуине можно сделать и 16 битный ШИМ с большой частотой.

Ну да, можно, если низкоуровневое проргаммирование хорошо знаешь.

Или поискать в инете библиотеки техногиков, которые этим вопросом уже заморачивались.

а зачем мотор регулировать больше чем на 3 бита?

обьясните мне пожалусто?

 

art100
Offline
Зарегистрирован: 09.03.2014

NazarovAlexandr пишет:

Да, вы были абсолютно правы - эта библа не работает с Леонардой. В компиляторе сменил плату на Uno и все скомпилировалось :) Буду теперь ее покупать.

Следующий вопрос - а может ну ее эту библиотеку, просто подавать что-то на какие-то пины? Обошелся же я без библиотеки к ультразвуковому датчику расстояния. Может кто-то подскажет что и куда подавать для работы с DC Motors?

очень помогает по форуму поискать 

безплатно я тут кода навалил как грязи

Angbor
Angbor аватар
Offline
Зарегистрирован: 26.10.2015

Решение проблемы:

Товарищ Michael Margolis сделал версию AFMotor library как часть книги "Arduino for robotics".
Издатель выложил код в свободный доступ:
http://examples.oreilly.com/0636920028024/

Либа находится ./libraries֭/AFMotor

Проверил на своей Леонардо - работает

оригинальный англицкий пост тут

https://forums.adafruit.com/viewtopic.php?f=31&t=37201#p197352