Ошибка включения файла при использовании Arduino Nano

Я использую приведенный ниже код для сопряжения сотового телефона Arduino nano и Android, чтобы обеспечить последовательную связь через USB-порт. Я скачал библиотеку фильтров с GitHub https://github.com/JonHub/Filters

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

Вот мой код:

 //This code is for arduino communicating to android phone through USb serial port.
 //For arduino nano

 #include <Filters.h>   //implements digital filters which mimic the analog filter, keep track of variable statistics in realtime

char data_read; //character datatype takes up to 1 byte of memory
unsigned int analog_out;
unsigned long time;
float filterFrequency = 10.0;
FilterOnePole lowpassFilter( LOWPASS, filterFrequency );//implements digital RC type filter; both highpass and lowpass

 void setup()
 {
  Serial.begin(115200); //open the serial port and set the baud rate for communication
  // create a one pole (RC) lowpass filter

 }
 void loop()
 {
 }

 void serialEvent() { //Used when data is unavailable yet
 if (Serial.available()) //checks the number of bytes available for reading from the serial port
 {
data_read = Serial.read();

if (data_read == '0') {
  Serial.print("#");

  //Serial.print("10100");
  analog_out = lowpassFilter.input( analogRead(0) );
  Serial.print(analog_out + 10000);

  Serial.print(":");

  //Serial.print("20200");
  analog_out = lowpassFilter.input( analogRead(1) );
  Serial.print(analog_out + 20000);

  Serial.print(":");

  //Serial.print("30300");
  analog_out = lowpassFilter.input( analogRead(2) );
  Serial.print(analog_out + 30000);

  Serial.print("p");
}
/*if(data_read == '0' || data_read == '1' || data_read == '2' || data_read == '3' || data_read == '4' || data_read == '5'){
  analog_out = lowpassFilter.input( analogRead( data_read-48 ) );
  Serial.print((analog_out)+(data_read-48)*10000);
  Serial.print(":");
  }else if(data_read =='p'){
  Serial.print("p");
  }*/
   }
 }

Вот мое сообщение об ошибке:

  Arduino: 1.8.5 (Windows 10), Board: "Arduino Nano, ATmega328P"

  C:\Users\daphn\Documents\Arduino\Analog_Serial_out\Analog_Serial_out.ino:4:129: fatal error: Filters.h: No such file or directory

  #include <Filters.h>   //implements digital filters which mimic the analog filter, keep track of variable statistics in realtime

                                                                                                                                 ^

  compilation terminated.

  exit status 1
  Error compiling for board Arduino Nano.

  This report would have more information with
  "Show verbose output during compilation"
   option enabled in File -> Preferences.

, 👍0

Обсуждение

А где вы разместили библиотеку?, @gre_gor

Я включил библиотеку в ту же папку, где сохранил свой код, @DaphFab

Вы читали эти 2 страницы? https://gcc.gnu.org/onlinedocs/gcc-2.95.3/cpp_1.html#SEC6 , https://gcc.gnu.org/onlinedocs/cpp/Search-Path.html, @VE7JRO


2 ответа


-1

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

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

,

Я попробовал включить фильтры.файл заголовка h находится в папке main libraries, но я все равно получаю ту же ошибку. Мне интересно, есть ли какая - то ошибка с источником самого заголовочного файла. Обычно, когда я включаю внешние библиотеки, я помещаю их в ту же папку, что и сам код, и он работает., @DaphFab

Я протестировал его с вашим кодом и связанной библиотекой, и он работает для меня. Проверьте настройки IDEs, в которых установлена папка sketchbook, @chrisl

Библиотека-это нечто большее, чем файл .h. Вам нужны ВСЕ файлы, и все они помещены в папку с именем Filters в папке libraries в вашем sketchbook. Ничего другого не годится., @Majenko

@Majenko Что вы подразумеваете под ВСЕМИ файлами?, @DaphFab

@DaphFab Все файлы для библиотеки. Все в этом репозитории github. Все файлы .h, все файлы .cpp и т. Д. Их 11, плюс примеры., @Majenko

Ладно, понял. Я уже делал это раньше. Во всяком случае, я решил эту проблему, изменив "#include <Filters.h>" на " #include "Filters.h", @DaphFab

пожалуйста, объясните, почему вы это сделали, чтобы люди могли решать подобные проблемы в будущем, @jsotola


-1

Вот ваш окончательный ответ.

Вы должны сделать #include следующим образом (с двойными кавычками, а не < > скобками)

#включить "Filters.h"

Это заставит компилятор Arduino искать в папке проекта.

Использование скобок < > сообщает компилятору, что оно находится в области стандартной библиотеки.

Я только что протестировал это с помощью следующего скрипта.

#include "mytest.h"
void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

Файл mytest.h является пустым (в нем нет текста).

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

,