Я пытаюсь использовать библиотеку digitalWriteFast для управления несколькими двигателями и кодировщиками. Библиотека работает только с выводами, определенными как const int. Минимальный пример, над которым я работаю, выглядит так:
// digitalWriteFast from:
// https://github.com/NicksonYap/digitalWriteFast
#include <digitalWriteFast.h>
// setup for motors
const int m_1[] = {A0, A4, 23, 24};
const int m_2[] = {A1, A5, 22, 25};
void motor_setup(const int id) {
pinModeFast(m_1[id], OUTPUT);
digitalWriteFast(m_1[id], HIGH);
pinModeFast(m_2[id], OUTPUT);
digitalWriteFast(m_2[id], HIGH);
}
void motor_forwards(const int id) {
digitalWriteFast(m_1[id], LOW);
digitalWriteFast(m_2[id], HIGH);
}
void setup() {
motor_setup(0);
//motor_setup(1);
}
void loop() {
motor_forwards(0);
//motor_forwards(1);
}
Код компилируется только с одним двигателем. Если вы раскомментируете строки //motor_setup(1);
и //motor_forwards(1);
, возникает ошибка:
Call to 'NonConstantUsed' declared with attribute error:
Сначала я попытался использовать классы, но не могу передать const int экземплярам. Есть идеи на эту тему?