带digitalWriteFast的多台电机

时间:2019-01-24 09:01:36

标签: list arduino int const

我尝试使用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传递给实例。关于这个主题有什么想法吗?

1 个答案:

答案 0 :(得分:1)

需要为

Select id,t2id from table1 where t2id between 1 and 2 传递一个 compile-time 常量。虽然您的digitalWriteFast传递给1motor_setup函数是一个编译时间常数,但是参数motor_forwards仍然是变量,因此对const int idm_1[id]也是可变的。