Мне нужно использовать классы в Arduino для многозадачности. Я нашел пример класса в here, но я хотел, чтобы мой основной код был чистым, поэтому я решил поместить класс в .h и .cpp файлов. После того, как немного прибегая к помощи это то, что я придумал: Work.h файл:Использование классов C++ в Arduino
/*
* Work.h
*
* Created on: 2016-05-09
* Author: Secret
*/
#ifndef WORK_H_
#define WORK_H_
int ledPin; // the number of the LED pin
unsigned long OnTime; // milliseconds of on-time
unsigned long OffTime; // milliseconds of off-time
int ledState; // ledState used to set the LED
unsigned long previousMillis; // will store last time LED was updated
class Work {
public:
Work(int pin, long on, long off);
void Update();
};
#endif /* WORK_H_ */
Work.cpp файл:
/*
* Work.cpp
*
* Created on: 2016-05-09
* Author: Secret
*/
#include "Work.h"
#include <Arduino.h>
Work::Work(int pin, long on, long off) {
ledPin = pin;
pinMode(ledPin, OUTPUT);
OnTime = on;
OffTime = off;
ledState = LOW;
previousMillis = 0;
}
void Update() {
// check to see if it's time to change the state of the LED
unsigned long currentMillis = millis();
if ((ledState == HIGH) && (currentMillis - previousMillis >= OnTime)) {
ledState = LOW; // Turn it off
previousMillis = currentMillis; // Remember the time
digitalWrite(ledPin, ledState); // Update the actual LED
} else if ((ledState == LOW)
&& (currentMillis - previousMillis >= OffTime)) {
ledState = HIGH; // turn it on
previousMillis = currentMillis; // Remember the time
digitalWrite(ledPin, ledState); // Update the actual LED
}
}
Когда я попытался компиляции, я были получены ошибки в Work.cpp, метод Update() У меня есть несколько определений OnTime, OffTime, ledState, предыдущийMillis.
Что я делаю неправильно здесь и как это решить?
Почему вы * определяете * эти переменные в файле заголовка глобально? Почему переменные * член * переменные в классе не являются? –
A) вам не нужны классы для многозадачности, B) ваша проблема не связана с классами. – immibis
A) насколько я читал, мне нужны классы для многозадачности. Проверьте статью, которую я связал. B) Как это не связано с классами, если я пишу класс C++ для Arduino? – Justin