无法在 Midi 控制器中添加多个电位器
Posted
技术标签:
【中文标题】无法在 Midi 控制器中添加多个电位器【英文标题】:Unable to add multiple potentiometer in Midi controller 【发布时间】:2015-08-26 14:58:42 【问题描述】:我正在构建一个简单的基于 arduino 的 midi 控制器来发送 cc midi 消息,但是我只能通过 A0(模拟输入)发送消息。
我们将不胜感激。
#include <MIDI.h>
int pot[] = A0,A1,A2;
int AnaPinsNum = 3;
int potIn[] = 0,0,0;
int analogValue = 0;
int lastAnalogValue[] = 0,0,0;
void setup()
MIDI.begin(4);
// 115200 hairless MIDI
Serial.begin(115200);
int i;
for (i = 0; i < 3; i++);
void loop()
int i;
for (i = 0; i < AnaPinsNum; i++)
potIn[i] = analogRead(pot[i])/8;
// potentiometer could be too sensitive and
// give different (+-1) values.
// send CC only when the difference between last value
// is more than 1
if ((potIn[i]-lastAnalogValue[i]) > 1 || (potIn[i]-lastAnalogValue[i]) < -1)
// value changed?
if (potIn[i] != lastAnalogValue[i])
// send serial value (ControlNumber 1, ControlValue = analogValue, Channel 1)
// more info: http://arduinomidilib.sourceforge.net/a00001.html
MIDI.sendControlChange(1, potIn[i], 1);
lastAnalogValue[i] = potIn[i];
【问题讨论】:
【参考方案1】:此代码格式不正确。
如果您使用了自动缩进代码的编辑器,它将如下所示:
for (i = 0; i < AnaPinsNum; i++)
potIn[i] = analogRead(pot[i])/8;
// potentiometer could be too sensitive and ...
if ((potIn[i]-...)
换句话说,for
循环只包含一行;以下所有行在循环结束后执行,i
的值为 3。
你忘记了循环体周围的大括号。
【讨论】:
我是编码新手..不明白你的意思..因为当我在 Arduino IDE 中编译代码时它没有抛出任何错误.. 我理解了大括号并做到了......现在我能够检测到来自其他罐的信号,但它发送相同的消息..我想从不同的罐发送不同的消息......增加值的 1 ... 如果1号锅发出1号控制器和1号通道,2号锅应该发送2号控制器和2号通道..- 这是一个不同的问题。 (可以用i
回答。)以上是关于无法在 Midi 控制器中添加多个电位器的主要内容,如果未能解决你的问题,请参考以下文章