как загрузить класс из вложеной папки?

vde69
Offline
Зарегистрирован: 10.01.2016

в директории со скечем сделал папку "lib", положил в нее файлы, пробовал варианты типа

 #include "lib\LiquidCrystal_I2C.h"

- не грузит...

не верю, что сделать не возможно...

а надо, сейчас в проекте 16 файлов, будет штук 40 хочу хорошо отлаженые классы убрать в подпапку, но не хочу из них делать библиотеки (по тому, что они не универсальные а узкозаточеные под проект)

 

vde69
Offline
Зарегистрирован: 10.01.2016

полный путь нормально отррабатывает

  #include "E:\arduino152\mu_progect\bus_main\lib\LiquidCrystal_I2C.h"

как бы на относительный переделать?

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

vde69 пишет:

полный путь нормально отррабатывает

  #include "E:\arduino152\mu_progect\bus_main\lib\LiquidCrystal_I2C.h"

как бы на относительный переделать?

бросить файл библиотеки в папку со скетчем #include "LiquidCrystal_I2C.h"

vde69
Offline
Зарегистрирован: 10.01.2016

Клапауций 232 пишет:

vde69 пишет:

полный путь нормально отррабатывает

  #include "E:\arduino152\mu_progect\bus_main\lib\LiquidCrystal_I2C.h"

как бы на относительный переделать?

бросить файл библиотеки в папку со скетчем #include "LiquidCrystal_I2C.h"

сейчас там и лежит, проблемма в том, что файлов дофига и они все открываются во вкладках проекта, я хочу их убрать во вложеную папку что-бы в редакторе осталось 5-6 вкладок а не 40 как сейчас

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

ок. мне это нифига не понятно

vde69 пишет:

а надо, сейчас в проекте 16 файлов, будет штук 40 хочу хорошо отлаженые классы убрать в подпапку, но не хочу из них делать библиотеки (по тому, что они не универсальные а узкозаточеные под проект)

не хочешь делать библиотеки - не подключай библиотеки.

бросай всю хрень в папку с библиотеками и не трахай мозги.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Слеш в обратную сторону пробовал?

 #include "lib/LiquidCrystal_I2C.h"

Оно, бывает, решает.

Alipapa
Offline
Зарегистрирован: 26.05.2016

Можно так попробовать:

#include "./lib/LiquidCrystal_I2C.h"

 

vde69
Offline
Зарегистрирован: 10.01.2016

Пока нагугли:

Пути поиска для подключения заголовочных файлов (include path) включают

1. каталог скетча,

2. каталог target (%ARDUINO%/hardware/core/< CORE >/),

3. каталог variant платы (подкаталог hardware/arduino/variants, указанный в файле board.txt) 

4. каталог подключаемых файлов AVR (%ARDUINO%/hardware/tools/avr/avr/include/),

5. а также все любые каталоги библиотек (в каталоге %ARDUINO%/libraries/), которые содержат заголовочные файлы, подключаемые главным файлом скетча.

vde69
Offline
Зарегистрирован: 10.01.2016

пробовал кучу вариантов...

vde69
Offline
Зарегистрирован: 10.01.2016

кстати даже по полному пути - то же не работает... изначально вроде вышло из-за кеша

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Arduino IDE 1.6.8.

1. Создал проект tester_include, текст:

#include "include/header.h"

void setup() {
  // put your setup code here, to run once:
  Serial.begin(57600);
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println(VERSION);
  delay(1000);
  print();
  delay(1000);
}

2. В каталоге проекта создал подкаталог "include" (без кавычек, понятно). В нем создал два файла "header.h", исходник:

#pragma once


#define VERSION "1.0"

extern void print();

и файла "source.cpp", исходник:

#include <Arduino.h>

void print()
{
	Serial.println("Hello, World\n");
}

3. Всё собирается без ошибок. В IDE одна вкладка "tester_include".

4. Для чистоты эксперимента несколько раз выгружал и загружал проект (в IDE, в Ардуину не шил), всё работает нормально.

 

vde69
Offline
Зарегистрирован: 10.01.2016

версия 1.5.2

проверил (только номера строк другие, так как сократил тут):

#ifdef TEMPERATURE_DS18B20_ONE_WIRE 
  #include <DallasTemperature.h>
//  #include "ds18b20.h"
  #include "include/ds18b20.h"
  Sensors_DS18B20 sensors_DS18B20(&One_Wire, TEMPERATURE_DS18B20_COUNT); 
#endif 

 

bus_main.ino:42:31: error: include/ds18b20.h: No such file or directory

bus_main:86: error: 'Sensors_DS18B20' does not name a type

bus_main.ino: In function 'void loop()':

bus_main:150: error: 'ds18b20_poll' was not declared in this scope

 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Я написал номер версии, я привел исходники, мой проект собирается?

vde69
Offline
Зарегистрирован: 10.01.2016

на версии 1.6.9 - собирается,

на 1.5.2 - нет

 

видимо придется переползать на новую версию...

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Можно поставить несколько версий IDE и использовать нужную.