Я хочу сделать класс в cpp для Arduino Uno, который пишет на дисплее. Я использую библиотеку LiquidCrystal_I2C, но не могу использовать ее в своем классе. Я знаю, как это сделать без класса, но сейчас я хочу создать класс и не могу заставить его работать.
Мой .h файл:
// WriteDisplay.h
#ifndef _WRITEDISPLAY_h
#define _WRITEDISPLAY_h
#if defined(ARDUINO) && ARDUINO >= 100
#include "arduino.h"#else
#include "WProgram.h"#endif
#include <Wire/Wire.h>
#include <LiquidCrystal_I2C2004V1/LiquidCrystal_I2C.h>
class WriteDisplayClass
{
public:
WriteDisplayClass();
void write(String text);
private:
LiquidCrystal_I2C lcd(0x27,20,4);
};
extern WriteDisplayClass WriteDisplay;
#endif
Мой .cpp:
#include "WriteDisplay.h"
WriteDisplayClass::WriteDisplayClass()
{
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
}
WriteDisplayClass::write(String text)
{
lcd.clear();
lcd.print(text);
}WriteDisplayClass WriteDisplay;
Мой .ino:
#include "WriteDisplay.h"
WriteDisplayClass wdc;
void setup()
{
wdc.write("Hello World");
}
void loop()
{
}
Я использую AtmelStudio с Visual Micro. Я заставляю его работать, когда я использую только мой .ino-файл, но я не могу сделать то же самое в cpp. Я получаю ошибки, что LiquidCrystal_I2C.h не может быть найден и тому подобное. Как мне сделать так, чтобы это работало так, как я хочу? Или это вообще возможно?
Спасибо за ответ.
Извините, я неправильно понял вопрос в первый раз.
Чтобы использовать библиотеки в файле .cpp эскиза Arduino, вы также должны включить их в основной файл .ino. Они компилируются, только если найдены в .ino
Вы можете добавить включения вручную или использовать пункт меню «Проект> Добавить / импортировать библиотеку эскизов», который добавит их в .ino для вас.