[решено]Arduino IDE не видит библиотеку I2Cdevlib

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

  1. DrZ91

    DrZ91 Нерд

    Скачал библиотеку i2cdevlib для работы с датчиком MPU 6050(MPU 6000). Папки MPU6050 и I2Cdev скопировал в C:\Users\Admin(RCMS)\Documents\Arduino\libraries
    Папка со скетчами расположена по адресу C:\Users\Admin(RCMS)\Documents\Arduino
    Использую Arduino IDE 1.0.3 for windows. Arduino IDE находится в папке C:\ArduPilot-Arduino-1.0.3-windows

    Пробовал скомпилировать пример MPU6050_DMP6, получил кучу ошибок:
    Код (Text):
    Building for ArduPilot Mega 2.x
    Excluding arduino core from include paths
    In file included from MPU6050_DMP6.ino:46:
    C:\Users\Admin(RCMS)\Documents\Arduino\libraries\I2Cdev/I2Cdev.h:77:29: error: Arduino.h: No such file or directory
    In file included from C:\Users\Admin(RCMS)\Documents\Arduino\libraries\I2Cdev/I2Cdev.h:80,
                     from MPU6050_DMP6.ino:46:
    C:\ArduPilot-Arduino-1.0.3-windows\libraries\Wire/Wire.h:26:20: error: Stream.h: No such file or directory
    In file included from C:\Users\Admin(RCMS)\Documents\Arduino\libraries\I2Cdev/I2Cdev.h:80,
                     from MPU6050_DMP6.ino:46:
    C:\ArduPilot-Arduino-1.0.3-windows\libraries\Wire/Wire.h:31: error: expected class-name before '{' token
    C:\ArduPilot-Arduino-1.0.3-windows\libraries\Wire/Wire.h:60: error: 'size_t' does not name a type
    C:\ArduPilot-Arduino-1.0.3-windows\libraries\Wire/Wire.h:61: error: 'size_t' does not name a type
    C:\ArduPilot-Arduino-1.0.3-windows\libraries\Wire/Wire.h:69: error: 'size_t' does not name a type
    C:\ArduPilot-Arduino-1.0.3-windows\libraries\Wire/Wire.h:70: error: 'size_t' does not name a type
    C:\ArduPilot-Arduino-1.0.3-windows\libraries\Wire/Wire.h:71: error: 'size_t' does not name a type
    C:\ArduPilot-Arduino-1.0.3-windows\libraries\Wire/Wire.h:72: error: 'size_t' does not name a type
    C:\ArduPilot-Arduino-1.0.3-windows\libraries\Wire/Wire.h:73: error: 'Print' has not been declared
    In file included from C:\Users\Admin(RCMS)\Documents\Arduino\libraries\MPU6050/MPU6050_6Axis_MotionApps20.h:37,
                     from MPU6050_DMP6.ino:48:
    C:\Users\Admin(RCMS)\Documents\Arduino\libraries\MPU6050/helper_3dmath.h: In member function 'float Quaternion::getMagnitude()':
    C:\Users\Admin(RCMS)\Documents\Arduino\libraries\MPU6050/helper_3dmath.h:74: error: 'sqrt' was not declared in this scope
    C:\Users\Admin(RCMS)\Documents\Arduino\libraries\MPU6050/helper_3dmath.h: In member function 'float VectorInt16::getMagnitude()':
    C:\Users\Admin(RCMS)\Documents\Arduino\libraries\MPU6050/helper_3dmath.h:111: error: 'sqrt' was not declared in this scope
    C:\Users\Admin(RCMS)\Documents\Arduino\libraries\MPU6050/helper_3dmath.h: In member function 'float VectorFloat::getMagnitude()':
    C:\Users\Admin(RCMS)\Documents\Arduino\libraries\MPU6050/helper_3dmath.h:178: error: 'sqrt' was not declared in this scope
    In file included from C:\Users\Admin(RCMS)\Documents\Arduino\libraries\MPU6050/MPU6050_6Axis_MotionApps20.h:42,
                     from MPU6050_DMP6.ino:48:
    C:\Users\Admin(RCMS)\Documents\Arduino\libraries\MPU6050/MPU6050.h: At global scope:
    C:\Users\Admin(RCMS)\Documents\Arduino\libraries\MPU6050/MPU6050.h:876: error: 'NULL' was not declared in this scope
    In file included from MPU6050_DMP6.ino:48:
    C:\Users\Admin(RCMS)\Documents\Arduino\libraries\MPU6050/MPU6050_6Axis_MotionApps20.h: In member function 'uint8_t MPU6050::dmpInitialize()':
    C:\Users\Admin(RCMS)\Documents\Arduino\libraries\MPU6050/MPU6050_6Axis_MotionApps20.h:329: error: 'delay' was not declared in this scope
    C:\Users\Admin(RCMS)\Documents\Arduino\libraries\MPU6050/MPU6050_6Axis_MotionApps20.h: In member function 'uint8_t MPU6050::dmpGetLinearAccelInWorld(VectorInt16*, VectorInt16*, Quaternion*)':
    C:\Users\Admin(RCMS)\Documents\Arduino\libraries\MPU6050/MPU6050_6Axis_MotionApps20.h:663: error: 'memcpy' was not declared in this scope
    C:\Users\Admin(RCMS)\Documents\Arduino\libraries\MPU6050/MPU6050_6Axis_MotionApps20.h: In member function 'uint8_t MPU6050::dmpGetEuler(float*, Quaternion*)':
    C:\Users\Admin(RCMS)\Documents\Arduino\libraries\MPU6050/MPU6050_6Axis_MotionApps20.h:684: error: 'atan2' was not declared in this scope
    C:\Users\Admin(RCMS)\Documents\Arduino\libraries\MPU6050/MPU6050_6Axis_MotionApps20.h:685: error: 'asin' was not declared in this scope
    C:\Users\Admin(RCMS)\Documents\Arduino\libraries\MPU6050/MPU6050_6Axis_MotionApps20.h: In member function 'uint8_t MPU6050::dmpGetYawPitchRoll(float*, Quaternion*, VectorFloat*)':
    C:\Users\Admin(RCMS)\Documents\Arduino\libraries\MPU6050/MPU6050_6Axis_MotionApps20.h:691: error: 'atan2' was not declared in this scope
    C:\Users\Admin(RCMS)\Documents\Arduino\libraries\MPU6050/MPU6050_6Axis_MotionApps20.h:693: error: 'sqrt' was not declared in this scope
    C:\Users\Admin(RCMS)\Documents\Arduino\libraries\MPU6050/MPU6050_6Axis_MotionApps20.h:693: error: 'atan' was not declared in this scope
    MPU6050_DMP6.ino: In function 'void setup()':
    MPU6050_DMP6:173: error: 'Serial' was not declared in this scope
    MPU6050_DMP6:183: error: 'F' was not declared in this scope
    MPU6050_DMP6:214: error: 'RISING' was not declared in this scope
    MPU6050_DMP6:214: error: 'attachInterrupt' was not declared in this scope
    MPU6050_DMP6:234: error: 'OUTPUT' was not declared in this scope
    MPU6050_DMP6:234: error: 'pinMode' was not declared in this scope
    MPU6050_DMP6.ino: In function 'void loop()':
    MPU6050_DMP6:272: error: 'Serial' was not declared in this scope
    MPU6050_DMP6:272: error: 'F' was not declared in this scope
    MPU6050_DMP6:316: error: 'Serial' was not declared in this scope
    MPU6050_DMP6:317: error: 'M_PI' was not declared in this scope
    MPU6050_DMP6:370: error: 'digitalWrite' was not declared in this scope
    Подскажите, что я неправильно делаю?
    Спасибо.
     
  2. vvr

    vvr Инженерище

    Папки с либами должны быть в Arduino IDE
     
  3. DrZ91

    DrZ91 Нерд

    Скопировал абсолютно все библиотеки(эти тоже MPU6050 и I2Cdev) из папки C:\Users\Admin(RCMS)\Documents\Arduino\libraries в C:\ArduPilot-Arduino-1.0.3-windows\libraries

    Не помогло. Есть идеи?
     
  4. vvr

    vvr Инженерище

    Идей валом. Хотя и не телепат, но первая навскидку - раз не знаете, где библиотека должна лежать, то смело могли её и не правильно установить
     
  5. DrZ91

    DrZ91 Нерд

    Что вы имеете в виду под словом "установить"? Почти во всех мануалах (например http://arduino.ua/ru/guide/Libraries или http://www.freeduino.ru/arduino/libraries.html) установка описывается простым копированием файлов .cpp и .h (т.е папки в которой они находятся) в директорию, где хранятся библиотеки. Это либо пользовательские библиотеки C:\Users\<имя пользователя>\Documents\Arduino\libraries, либо Ардуиновские (подкаталог libraries каталога Arduino IDE).
    В моём случае они есть в обоих директориях и всё равно есть ошибки.
    Кстати, данные библиотеки также появились в Скетч -> Импортировать библиотеку. Я импортировал MPU6050 и всё равно получил ошибки.

    Вот теперь пора включать телепатию.
     
    funyfizik нравится это.
  6. DrZ91

    DrZ91 Нерд

    Решение найдено! Всё дело в версии компилятора(в версии Arduino IDE). Скачал с офф сайта Arduino IDE версии 1.5.8, загрузил библиотеки, немного потанцевал с бубном и всё скомпилилось(правда на другом компе). Тему можно закрывать.