我尝试使用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传递给实例。关于这个主题有什么想法吗?
答案 0 :(得分:1)
Select id,t2id
from table1
where t2id between 1 and 2
传递一个 compile-time 常量。虽然您的digitalWriteFast
传递给1
和motor_setup
函数是一个编译时间常数,但是参数motor_forwards
仍然是变量,因此对const int id
和m_1[id]
也是可变的。