void setup() {
//
SysEx Config Message Structure:
0xF0 # SysEx message start byte
0x14 # Manufacturer ID; 0x14 is actually Fairlight, but I don't forsee too many conflicts here...
0x01 # Knobber knob channel number
0x01 # Knobber button channel number
0x0E # Knobber knob CC number
0x0F # Knobber button CC number
0x01 # Knobber button behaviour (0 = momentary, 1 = toggle)
0xF7 # SysEx message end byte
*/
#include <Bounce.h>
#include <EEPROM.h>
// Default settings - will be overwritten if EEPROM values are present.
int knobChan = 1; int buttonChan = 1; int knobCC = 14; int buttonCC = 15;
int kPin = 0; int bPin = 0; int behaviour = 1;
int inputAnalog, ccValue, iAlag;
boolean toggled = false;
Bounce button0 = Bounce(0,5);
void setup() {
//MIDI rate
Serial.begin(31250);
pinMode(bPin, INPUT_PULLUP);
delay(5);
knobChan = EEPROM.read(1);
usbMIDI.sendControlChange(44, knobChan, 2);
delay(5);
buttonChan = EEPROM.read(2);
delay(5);
knobCC = EEPROM.read(3);
delay(5);
buttonCC = EEPROM.read(4);
delay(5);
behaviour = EEPROM.read(5);
}
void loop() {
// put your main code here, to run repeatedly:
// Check for SysEx config message
if(usbMIDI.read() && usbMIDI.getType() == 7) {
if (usbMIDI.getData1() > 1 && usbMIDI.getData1() < 9) {
// unpack SysEx
byte * sysbytes = usbMIDI.getSysExArray();
if (sysbytes[0] == 0xf0 && sysbytes[7] == 0xf7) { // Good length; legit sysex.
if(sysbytes[1] == 0x14) { // It's either Knobber or a Fairlight CMI...
// 2, 3, 4, 5 and 6 can now be written to EEPROM and to global vars
EEPROM.write(1, sysbytes[2]);
knobChan = sysbytes[2];
EEPROM.write(2, sysbytes[3]);
buttonChan = sysbytes[3];
EEPROM.write(3, sysbytes[4]);
knobCC = sysbytes[4];
EEPROM.write(4, sysbytes[5]);
buttonCC = sysbytes[5];
EEPROM.write(5, sysbytes[6]);
behaviour = sysbytes[6];
}
}
}
}
if(behaviour > 0) {
// Pushbutton - MOMENTARY behaviour
button0.update();
if (button0.fallingEdge()) {
usbMIDI.sendControlChange(buttonCC, 127, buttonChan);
}
if (button0.risingEdge()) {
usbMIDI.sendControlChange(buttonCC, 0, buttonChan);
}
} else {
// Pushbutton - TOGGLE behaviour
button0.update();
if(button0.fallingEdge()) {
if (toggled) {
usbMIDI.sendControlChange(buttonCC, 0, buttonChan);
toggled = false;
} else {
usbMIDI.sendControlChange(buttonCC, 127, buttonChan);
toggled = true;
}
}
}
inputAnalog = analogRead(kPin);
if(abs(inputAnalog - iAlag) > 7) {
// calc the CC value based on the raw value
ccValue = inputAnalog/8;
// Invert the pot value (because I soldered it backwards...)
int inverted = map(ccValue, 127, 0, 0, 127);
// send the MIDI
usbMIDI.sendControlChange(knobCC, inverted, knobChan);
iAlag = inputAnalog;
}
delay(5); // limits message frequency
}
Я получаю сообщение об ошибке в блоке кода void loop, я не знаю, что именно не так и почему оно дает мне следующую ошибку: определение функции здесь не разрешено до '{'токен
Я впервые пробую этот код, поэтому я не знаю, что не так
Пожалуйста, помогите, поскольку это важно для моего класса. Я действительно очень ценю это! :)
ОБНОВЛЕНИЕ: Вот сообщения об ошибках, которые я получаю:
Arduino: 1.8.10 (Mac OS X), плата: "Teensy 3.2 / 3.1, Serial, 96 МГц (разгон), быстрее, английский (США) "
В файле, включенном в /Users/bharatvangani/Documents/Arduino/Test1KnobberCode/Test1KnobberCode.ino:28:0: /Applications/Arduino.app/Contents/Java / аппаратное обеспечение / teensy / avr / library / EEPROM / EEPROM.h: в функции 'void setup ()':
/ Applications / Arduino.app / Содержание / Java / аппаратное обеспечение / teensy / avr / library /EEPROM / EEPROM.h: 136: 5: ошибка: недопустимое объявление шаблона элемента в локальном шаблоне класса T & get (int idx, T & t) {^
/ Applications / Arduino.app / Содержание/Java/hardware/teensy/avr/libraries/EEPROM/EEPROM.h:143:5: ошибка: недопустимое объявление шаблона члена в локальном шаблоне класса const T & put (int idx, const T & t) {
^
Test1KnobberCode: 37: 14: ошибка: определение функции здесь недопустимо до '{' token void setup () {^
Test1KnobberCode: 54: 13: ошибка: определение функции здесь запрещено до '{' token void loop () {^
/ Users / bharatvangani / Documents / Arduino / Test1KnobberCode / Test1KnobberCode.ino:31: 5: предупреждение: неиспользуемая переменная 'knobChan' [-Wunused-variable] int knobChan = 1;int buttonChan = 1;int knobCC = 14;int buttonCC = 15;^
/ Users / bharatvangani / Documents / Arduino / Test1KnobberCode / Test1KnobberCode.ino: 31: 23: предупреждение: неиспользуемая переменная 'buttonChan' [-Wunused-variable] int knobChan = 1;int buttonChan = 1;int knobCC = 14;int buttonCC = 15;^
/ Пользователи / bharatvangani / Documents / Arduino / Test1KnobberCode / Test1KnobberCode.ino: 31: 43: предупреждение: неиспользуемая переменная 'knobCC' [-Wunused-variable] int knobChan = 1;int buttonChan = 1;int knobCC = 14;int buttonCC = 15;^
/ Users / bharatvangani / Documents / Arduino / Test1KnobberCode / Test1KnobberCode.ino: 31: 60: предупреждение: неиспользуемая переменная 'buttonCC' [-Wunused-variable] int knobChan = 1;int buttonChan = 1;int knobCC = 14;int buttonCC = 15;^
/ Пользователи / bharatvangani / Documents / Arduino / Test1KnobberCode / Test1KnobberCode.ino: 32: 5: предупреждение: неиспользуемая переменная 'kPin' [-Wunused-variable] int kPin = 0;int bPin = 0;поведение int = 1;^
/ Users / bharatvangani / Documents / Arduino / Test1KnobberCode / Test1KnobberCode.ino: 32: 19: предупреждение: неиспользуемая переменная 'bPin' [-Wunused-variable] int kPin = 0;int bPin = 0;поведение int = 1;^
/ Пользователи / bharatvangani / Documents / Arduino / Test1KnobberCode / Test1KnobberCode.ino: 32: 33: предупреждение: неиспользуемая переменная 'поведение' [-Wunused-variable] int kPin = 0;int bPin = 0;поведение int = 1;^
/ Users / bharatvangani / Documents / Arduino / Test1KnobberCode / Test1KnobberCode.ino: 33: 5: предупреждение: неиспользуемая переменная 'inputAnalog' [-Wunused-variable] int inputAnalog, ccValue, iAlag;^
/ Users / bharatvangani / Documents / Arduino / Test1KnobberCode / Test1KnobberCode.ino: 33: 18: предупреждение: неиспользуемая переменная 'ccValue' [-Wunused-variable] int inputAnalog, ccValue, iAlag;^
/ Пользователи / bharatvangani / Documents / Arduino / Test1KnobberCode / Test1KnobberCode.ino: 33: 27:предупреждение: неиспользуемая переменная 'iAlag' [-Wunused-variable] int inputAnalog, ccValue, iAlag;^
/ Users / bharatvangani / Documents / Arduino / Test1KnobberCode / Test1KnobberCode.ino: 34: 9: предупреждение: неиспользуемая переменная 'toggled' [-Wunused-variable] логическая переменная toggled = false;^
Test1KnobberCode: 116: 1: ошибка: ожидается '}' в конце ввода} ^
Для "Bounce.h" найдено несколько библиотек. Использовано: /Applications/Arduino.app/Содержание / Java / аппаратное обеспечение / teensy / avr / library / Bounce Для «EEPROM.h» было найдено несколько библиотек. -определение здесь не допускается до '{' токена