Включение класса с файлами .h и .cpp
Я пытаюсь использовать класс в файле .ino. Код:
.ino-файл
#include <LED.h>
int Pin1 = 13;
int Pin2 = 12;
int Pin3 = 11;
LED led;
void setup() {
pinMode(Pin1,OUTPUT);
pinMode(Pin2,OUTPUT);
pinMode(Pin3,OUTPUT);
digitalWrite(Pin1,LOW);
digitalWrite(Pin2,LOW);
digitalWrite(Pin3,LOW);
}
void loop() {
led.on(Pin1);
delay(2);
led.on(Pin2);
delay(2);
led.on(Pin3);
delay(2);
}
Файл .h
#ifndef LED_h
#define LED_h
class LED{
public:
void on(int);
void off(int);
};
#endif
файл .cpp
#include <stdio.h>
#include <Arduino.h>
#include "LED.h"
void LED::on(int PIN){
digitalWrite(PIN,HIGH);
}
void LED::off(int PIN){
digitalWrite(PIN,LOW);
}
Компилятор Arduino выявляет ошибку объявления объекта:
LEDC:6: ошибка: "LED" не указывает тип
LEDC.ino: В функции 'void loop()':
LEDC:17: ошибка: "светодиод" не был объявлен в этой области
Как мне тогда объявить объекты в Arduino?
Способ, которым я помещаю файлы в папки, подобен прикрепленному изображению:
@Amin R., 👍1
Обсуждение2 ответа
Лучший ответ:
Эта версия IDE (похоже, она меняется от версии к версии) различается между включениями с <...>
и включениями с "..."
.
Если вы используете <...>
, он просматривает только области системы и библиотеки. Если вы используете "..."
, он также просматривает ваш скетч.
Итак, в вашем основном файле INO измените светодиод, включаемый с:
#include <LED.h>
Кому:
#include "LED.h"
и он должен скомпилироваться.
Все равно не компилируется. Может быть, я не так раскладываю файлы по папкам? Смотрите изображение в основном вопросе., @Amin R.
Я сделал это, добавив две новые вкладки — LED.cpp и LED.h и вставив в них ваш код., @Majenko
Все, что вам нужно сделать, это в файле (.ino)
#include <LED.h>
int Pin1 = 13;
int Pin2 = 12;
int Pin3 = 11;
LED led1;
LED led2;
LED led3;
void setup() {
pinMode(Pin1,OUTPUT);
pinMode(Pin2,OUTPUT);
pinMode(Pin3,OUTPUT);
digitalWrite(Pin1,LOW);
digitalWrite(Pin2,LOW);
digitalWrite(Pin3,LOW);
}
void loop() {
led1.on(Pin1);
delay(2);
led2.on(Pin2);
delay(2);
led3.on(Pin3);
delay(2);
}
- C++ против языка Arduino?
- Как использовать SPI на Arduino?
- Какие накладные расходы и другие соображения существуют при использовании структуры по сравнению с классом?
- Ошибка: expected unqualified-id before 'if'
- Что лучше использовать: #define или const int для констант?
- Функции со строковыми параметрами
- Библиотека DHT.h не импортируется
- ошибка: ожидаемое первичное выражение перед токеном ','
В вашей программе нет ничего синтаксически неправильного — она прекрасно компилируется в UECIDE. Я предполагаю, что это как-то связано с Arduino IDE. Какую версию IDE вы используете? Я знаю, что недавно они внесли некоторые изменения в то, как работает компиляция (или, может быть, *не* работает)., @Majenko
Это Ардуино 1.5.6., @Amin R.
Ваши файлы LED.cpp и LED.h находятся в подпапке LEDD. В вашем файле LEDC.ino вы должны использовать
#include "LEDD/LED.h"
, @AlwaysLearning