Добра всем. Пробую в Platformio создать отдельные файлы для функций с использованием классов.
использую библиотеки
#include <GyverEncoder.h>
#include <LiquidCrystal_I2C.h>
Выношу в отдельный файл *.h класс либо функцию (по разному пробовал) в которой есть строки :
if (enc.isTurn() or enc.isPress())
lcd.setBacklight(_flag)
Platformio ругается, что:
error: 'enc' was not declared in this scope
if (enc.isTurn() or enc.isPress())
Compiling .pio\build\nanoatmega328\FrameworkArduino\hooks.c.o
^~~
src\BackLightState.h:14:5: note: suggested alternative: 'getc'
if (enc.isTurn() or enc.isPress())
^~~
getc
и так же
lcd' was not declared in this scope
lcd.setBacklight(_flag);
^~~
подчеркивает enc и lcd
и в файле main.cpp и BackLightState.h обе библиотеки подключены
если в обоих файлах добавить
LiquidCrystal_I2C lcd(0x27, 16, 2);
то lcd уже не подчеркивает, но
At global scope:
src\main.cpp:10:22: error: redefinition of 'LiquidCrystal_I2C lcd'
LiquidCrystal_I2C lcd(0x27, 16, 2);
^
In file included from src\main.cpp:4:0:
src\BackLightState.h:6:19: note: 'LiquidCrystal_I2C lcd' previously declared here
LiquidCrystal_I2C lcd(0x27, 16, 2);
^~~
собственно вопрос, как правильно написать чтобы в дочернем файле не было таких ошибок, когда используются функции из других библиотек
извиняюсь за возможный сумбур в вопросе
использую библиотеки
#include <GyverEncoder.h>
#include <LiquidCrystal_I2C.h>
Выношу в отдельный файл *.h класс либо функцию (по разному пробовал) в которой есть строки :
if (enc.isTurn() or enc.isPress())
lcd.setBacklight(_flag)
Platformio ругается, что:
error: 'enc' was not declared in this scope
if (enc.isTurn() or enc.isPress())
Compiling .pio\build\nanoatmega328\FrameworkArduino\hooks.c.o
^~~
src\BackLightState.h:14:5: note: suggested alternative: 'getc'
if (enc.isTurn() or enc.isPress())
^~~
getc
и так же
lcd' was not declared in this scope
lcd.setBacklight(_flag);
^~~
подчеркивает enc и lcd
и в файле main.cpp и BackLightState.h обе библиотеки подключены
если в обоих файлах добавить
LiquidCrystal_I2C lcd(0x27, 16, 2);
то lcd уже не подчеркивает, но
At global scope:
src\main.cpp:10:22: error: redefinition of 'LiquidCrystal_I2C lcd'
LiquidCrystal_I2C lcd(0x27, 16, 2);
^
In file included from src\main.cpp:4:0:
src\BackLightState.h:6:19: note: 'LiquidCrystal_I2C lcd' previously declared here
LiquidCrystal_I2C lcd(0x27, 16, 2);
^~~
собственно вопрос, как правильно написать чтобы в дочернем файле не было таких ошибок, когда используются функции из других библиотек
извиняюсь за возможный сумбур в вопросе
C++:
class BackLightState {
public:
BackLightState (uint32_t prd) {
_prd = prd;
}
void BL_St(){
if (enc.isTurn() or enc.isPress())
{
_flag = true;
_tmr = millis();
}
if (_flag && millis() - _tmr >= _prd)
{
_flag = false;
}
lcd.setBacklight(_flag);
digitalWrite(13,LOW);
}
private:
bool _flag;
unsigned long _tmr;
uint32_t _prd;
};