Чтение и запись значений из класса в Arduino IDE

0

Я использую библиотеку таймера, которая имеет функцию, которая принимает функцию 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, которую я создал, может считывать эти значения для запуска определенных действий с ними и записывать значения для переменных класса, чтобы я мог использовать их в определенных задачах.

Теги:
class
arduino
arduino-ide

1 ответ

0

Это может стать сложным с использованием классов с 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


}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню