Доброго времени суток.
С Arduino IDE решил перейти на PlatformIO. Но что то где то недопонимаю.
Переношу код из под Arduino. Если его просто импортировать, то всё работает и компилится. Если пытаться писать этот же код как С++, начинают лезть ошибки.
Сам текст ошибки:
.pio\build\nanoatmega328\src\main.cpp.o (symbol from plugin): In function `enc1':
(.text+0x0): multiple definition of `enc1'
.pio\build\nanoatmega328\src\MainEncoder.cpp.o (symbol from plugin): (.text+0x0): first defined here
И исходный код:
Main.cpp
#include <Arduino.h>
#include <MainEncoder.h>
void setup()
{
enc1.setTickMode(AUTO); // Запускаем опрос енкодера
Serial.begin(9600); // Временно. Для отладки
Serial.println("Test OK");
}
/*=========================================================
* Основной цикл *
* =======================================================*/
void loop()
{
enc1.tick();
if (enc1.isTurn()) Serial.println("Поворот");
if (enc1.isPress()) Serial.println("Нажатие");
}
MainEncoder.h
#ifndef MainEncoder_h
#define MainEncoder_h
#include <Arduino.h>
#include <GyverEncoder.h>
#define CLK 5
#define DT 4
#define SW 12
Encoder enc1(CLK, DT, SW, TYPE2);
void EncoderInit(void);
#endif
MainEncoder.cpp
#include <MainEncoder.h>
#include <Arduino.h>
void EncoderInit(void)
{
enc1.setTickMode(AUTO);
}
Может нужно указывать какие то другие опции компиляции или линковки. Или как то по другому описывать классы.
С Arduino IDE решил перейти на PlatformIO. Но что то где то недопонимаю.
Переношу код из под Arduino. Если его просто импортировать, то всё работает и компилится. Если пытаться писать этот же код как С++, начинают лезть ошибки.
Сам текст ошибки:
.pio\build\nanoatmega328\src\main.cpp.o (symbol from plugin): In function `enc1':
(.text+0x0): multiple definition of `enc1'
.pio\build\nanoatmega328\src\MainEncoder.cpp.o (symbol from plugin): (.text+0x0): first defined here
И исходный код:
Main.cpp
#include <Arduino.h>
#include <MainEncoder.h>
void setup()
{
enc1.setTickMode(AUTO); // Запускаем опрос енкодера
Serial.begin(9600); // Временно. Для отладки
Serial.println("Test OK");
}
/*=========================================================
* Основной цикл *
* =======================================================*/
void loop()
{
enc1.tick();
if (enc1.isTurn()) Serial.println("Поворот");
if (enc1.isPress()) Serial.println("Нажатие");
}
MainEncoder.h
#ifndef MainEncoder_h
#define MainEncoder_h
#include <Arduino.h>
#include <GyverEncoder.h>
#define CLK 5
#define DT 4
#define SW 12
Encoder enc1(CLK, DT, SW, TYPE2);
void EncoderInit(void);
#endif
MainEncoder.cpp
#include <MainEncoder.h>
#include <Arduino.h>
void EncoderInit(void)
{
enc1.setTickMode(AUTO);
}
Может нужно указывать какие то другие опции компиляции или линковки. Или как то по другому описывать классы.