Как удалить эту ошибку библиотеки в Arduino IDE?

Итак, я использую Raspberry pi и Arduino Uno, взаимодействуя с ними через последовательную связь. Я получаю последовательные данные в Rpi через библиотеку Python pySerial. Я успешно получил общие данные ввода-вывода, такие как действие переключения светодиода.

Теперь я взаимодействую с MPU9250 (9-осевой компас), который работает по протоколам I2C и SPI, я скачал zip-библиотеку с github. .

Я знаю, что могу напрямую управлять датчиком с помощью пи через связь I2C, но я хотел попробовать, полностью используя Arduino IDE. код, который я загрузил на доску, таков:

/*
Basic_I2C.ino
Brian R Taylor
[email protected]
Copyright (c) 2017 Bolder Flight Systems
Permission is hereby granted, free of charge, to any person obtaining a copy of this software 
and associated documentation files (the "Software"), to deal in the Software without restriction, 
including without limitation the rights to use, copy, modify, merge, publish, distribute, 
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or 
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

#include "MPU9250.h"

// an MPU9250 object with the MPU-9250 sensor on I2C bus 0 with address 0x68
MPU9250 IMU(Wire,0x68);
int status;

void setup() {
  // serial to display data
  Serial.begin(115200);
  while(!Serial) {}

  // start communication with IMU 
  status = IMU.begin();
  if (status < 0) {
    Serial.println("IMU initialization unsuccessful");
    Serial.println("Check IMU wiring or try cycling power");
    Serial.print("Status: ");
    Serial.println(status);
    while(1) {}
  }
}

void loop() {
  // read the sensor
  IMU.readSensor();
  // display the data
  Serial.print(IMU.getAccelX_mss(),6);
  Serial.print("\t");
  Serial.print(IMU.getAccelY_mss(),6);
  Serial.print("\t");
  Serial.print(IMU.getAccelZ_mss(),6);
  Serial.print("\t");
  Serial.print(IMU.getGyroX_rads(),6);
  Serial.print("\t");
  Serial.print(IMU.getGyroY_rads(),6);
  Serial.print("\t");
  Serial.print(IMU.getGyroZ_rads(),6);
  Serial.print("\t");
  Serial.print(IMU.getMagX_uT(),6);
  Serial.print("\t");
  Serial.print(IMU.getMagY_uT(),6);
  Serial.print("\t");
  Serial.print(IMU.getMagZ_uT(),6);
  Serial.print("\t");
  Serial.println(IMU.getTemperature_C(),6);
  delay(100);
}

Здесь я получаю сообщение об успешном импорте библиотеки, но когда я компилирую код, я получаю эту ошибку:

MPU9250.h:28:36: fatal error: Wire.h: No such file or directory

Несмотря на то, что файл существует в zip-файле и находится в библиотеке, я столкнулся с этой проблемой. Кто-нибудь может мне с этим помочь? ваша помощь будет высоко оценена. Дайте мне знать, если у вас возникнут какие-либо проблемы с любым из разъяснений, которые я дал. Также я успешно скомпилировал библиотеку в своих окнах и получил правильные результаты.


person Shivam Sahil    schedule 14.09.2018    source источник


Ответы (1)


Вы используете очень устаревшую версию Arduino IDE на Raspberry Pi. Скорее всего, это потому, что вы использовали apt-get для установки Arduino IDE. Вы никогда не должны использовать менеджер пакетов для установки Arduino IDE, потому что это приведет к тому, что вы получите устаревшую и/или модифицированную версию программного обеспечения. Вы всегда должны устанавливать официальную среду разработки Arduino IDE, загруженную с:

https://www.arduino.cc/en/Main/Software

Для Raspberry Pi вам понадобится загрузка «Linux ARM».


Если по какой-то причине вы абсолютно настроены на использование такой старой версии IDE, вам нужно будет добавить #include директив в скетч для всех внешних зависимостей библиотек. В таком случае:

#include <Wire.h>

За годы, прошедшие с момента выпуска используемой вами версии IDE, разрешение зависимостей было улучшено, так что в этом больше нет необходимости. Таким образом, большинство современных скетчей Arduino не заморачиваются этими ненужными директивами #include.


Если вам интересно, почему у менеджеров пакетов есть версии IDE, которые устарели на несколько лет:

https://github.com/arduino/Arduino/pull/2703

person per1234    schedule 14.09.2018
comment
Вы никогда не должны использовать менеджер пакетов для установки Arduino IDE Это утверждение очень неверно. Ваш менеджер пакетов берет на себя все зависимости и другие вещи, так что не запускайте его. - person hellow; 14.09.2018
comment
@hellow, вы имеете право использовать программное обеспечение, которое устарело на 4,5 года. Проблема в том, что тогда вы будете просить сообщество Arduino помочь вам заставить современный код работать с устаревшей IDE и набором инструментов или исправить ошибки, которые уже были исправлены. Все потому, что вы слишком упрямы, чтобы просто скачать IDE. Менеджеры пакетов прекрасно работают, когда пакет обслуживается должным образом, но в данном конкретном случае этого просто не может быть. Так что нам нужно адаптироваться, а не быть упрямым. - person per1234; 14.09.2018