Я использую библиотеку таймера, которая имеет функцию, которая принимает функцию void как параметр для ее выполнения через определенное время. Я хочу использовать функцию, которая записывает значение на цифровой ПИН в зависимости от инициализации устройства я в переменной.
Я думал, что могу использовать класс для хранения определенного вывода, а из класса - прочитать вывод и использовать функцию, которая считывает вывод из класса, вместо того, чтобы передавать параметр функции, поскольку библиотека таймера не принимает функции void с параметры.
class output_control{
int pin;
void output_on();
};
void output_control::output_on(){
digitalWrite(pin,HIGH); //Just an example
}
У меня возникают проблемы с объявлением массива с 10 "устройствами" с этим классом, а затем присваиванием значения целочисленной переменной "pin", которую я сделал в классе.
output_control device[10];
device.pin[1]=6;
device.pin[2]=5;
Я думаю, что я недопонимаю классы, IDE выдает ошибку: "запрос для члена" pin "в" device ", который имеет тип non-class" output_control [10] ", то, что я хочу, может читать из переменных я созданный в классе, поэтому функция void, которую я создал, может считывать эти значения для запуска определенных действий с ними и записывать значения для переменных класса, чтобы я мог использовать их в определенных задачах.
Это может стать сложным с использованием классов с Arduino/Wiring, поскольку для упрощения для нас есть вещи, которые продолжаются во время компиляции, что не очевидно (и не нравится использовать прямой C++).
Для вашей задачи необходимо написать функцию установки булавки (и передовая практика - вся инкапсуляция). Код ниже компилируется (хотя я его не запускал).
Осторожно с занятиями на Arduino, хотя - не так много памяти для игры, поэтому иногда более чистый, более очевидный подход не будет работать, и нужно прибегать к хранению вещей в массивах и использованию большого количества переменных.
class output_control{
public:
void output_on(){
digitalWrite(_pin,HIGH); //Just an example
}
void setPin(int p){
_pin = p;
}
private:
int _pin;
};
output_control device[10]; // declare the array of objects
void setup(){
//init the variables
device[0].setPin(6);
device[1].setPin(7);
}
void loop(){
// do some stuff
}