27-01-2021, 13:30
Witam. Z powodu kwarantanny znalazłem trochę czasu na podłubanie w kabelkach. Ale dużo pozapominałem lub nie umiem więc proszę o wyrozumiałość. Stworzyłem kontroler midi na bazie klona Funduino Uno. Komputer widzi go jako urządzenie midi poprzez kabel Usb. Zawiera ono 12 przycisków i 6 potencjometrów. Działa super w programach muzycznych, ale chciałbym podłączyć zewnętrzną diodę Led która działałaby jak TX. Arduino będzie schowane w obudowie kontolera midi, a chciałbym żeby zewnętrzna dioda zapalałą się po wciśnięciu jednego z 12 przycisków, a także po przekręceniu gałkami potencjomertów.Pozostały wolne piny 0 (RX) i 1(TX).
Tutaj kod:
#include <MIDI.h>
MIDI_CREATE_DEFAULT_INSTANCE();
int buttonApin = 13; //footswitch A
int buttonBpin = 12; //footswitch B
int buttonCpin = 11; //footswitch C
int buttonDpin = 10;
int buttonEpin = 9;
int buttonFpin = 8;
int buttonGpin = 7;
int buttonHpin = 6;
int buttonIpin = 5;
int buttonJpin = 4;
int buttonKpin = 3;
int buttonLpin = 2;
int analogpot1 = A0; //knob 1
int analogpot2 = A1; //knob 2
int analogpot3 = A2;
int analogpot4 = A3;
int analogpot5 = A4;
int analogpot6 = A5;
int analogpot1Old = 0;
int analogpot2Old = 0;
int analogpot3Old = 0;
int analogpot4Old = 0;
int analogpot5Old = 0;
int analogpot6Old = 0;
int analogpot1New = 0;
int analogpot2New = 0;
int analogpot3New = 0;
int analogpot4New = 0;
int analogpot5New = 0;
int analogpot6New = 0;
#define analogpot1CC 54
#define analogpot2CC 55
#define analogpot3CC 56
#define analogpot4CC 57
#define analogpot5CC 58
#define analogpot6CC 59
void setup() {
// put your setup code here, to run once:
MIDI.begin (); // MIDI START
pinMode(buttonApin, INPUT_PULLUP);
pinMode(buttonBpin, INPUT_PULLUP);
pinMode(buttonCpin, INPUT_PULLUP);
pinMode(buttonDpin, INPUT_PULLUP);
pinMode(buttonEpin, INPUT_PULLUP);
pinMode(buttonFpin, INPUT_PULLUP);
pinMode(buttonGpin, INPUT_PULLUP);
pinMode(buttonHpin, INPUT_PULLUP);
pinMode(buttonIpin, INPUT_PULLUP);
pinMode(buttonJpin, INPUT_PULLUP);
pinMode(buttonKpin, INPUT_PULLUP);
pinMode(buttonLpin, INPUT_PULLUP);
pinMode(analogpot1, INPUT);
pinMode(analogpot2, INPUT);
pinMode(analogpot3, INPUT);
pinMode(analogpot4, INPUT);
pinMode(analogpot5, INPUT);
pinMode(analogpot6, INPUT);
//Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
static bool buttonAvalueOld = HIGH;
static bool buttonBvalueOld = HIGH;
static bool buttonCvalueOld = HIGH;
static bool buttonDvalueOld = HIGH;
static bool buttonEvalueOld = HIGH;
static bool buttonFvalueOld = HIGH;
static bool buttonGvalueOld = HIGH;
static bool buttonHvalueOld = HIGH;
static bool buttonIvalueOld = HIGH;
static bool buttonJvalueOld = HIGH;
static bool buttonKvalueOld = HIGH;
static bool buttonLvalueOld = HIGH;
//footswitches
bool buttonAvalueNew = digitalRead(buttonApin);
bool buttonBvalueNew = digitalRead(buttonBpin);
bool buttonCvalueNew = digitalRead(buttonCpin);
bool buttonDvalueNew = digitalRead(buttonDpin);
bool buttonEvalueNew = digitalRead(buttonEpin);
bool buttonFvalueNew = digitalRead(buttonFpin);
bool buttonGvalueNew = digitalRead(buttonGpin);
bool buttonHvalueNew = digitalRead(buttonHpin);
bool buttonIvalueNew = digitalRead(buttonIpin);
bool buttonJvalueNew = digitalRead(buttonJpin);
bool buttonKvalueNew = digitalRead(buttonKpin);
bool buttonLvalueNew = digitalRead(buttonLpin);
if (buttonAvalueNew != buttonAvalueOld){
if (buttonAvalueNew == LOW){
MIDI.sendNoteOn(54, 127, 1);
//Serial.println("Note C On");
}
else {
MIDI.sendNoteOff(54, 0, 1);
//Serial.println("Note C Off");
}
buttonAvalueOld = buttonAvalueNew;
}
if (buttonBvalueNew != buttonBvalueOld){
if (buttonBvalueNew == LOW){
MIDI.sendNoteOn(42, 127, 1);
//Serial.println("Note E On");
}
else {
MIDI.sendNoteOff(42, 0, 1);
//Serial.println("Note E Off");
}
buttonBvalueOld = buttonBvalueNew;
}
if (buttonCvalueNew != buttonCvalueOld){
if (buttonCvalueNew == LOW){
MIDI.sendNoteOn(36, 127, 1);
//Serial.println("Note F On");
}
else {
MIDI.sendNoteOff(36, 0, 1);
//Serial.println("Note F Off");
}
buttonCvalueOld = buttonCvalueNew;
}
if (buttonDvalueNew != buttonDvalueOld){
if (buttonDvalueNew == LOW){
MIDI.sendNoteOn(37, 127, 1);
//Serial.println("Note G On");
}
else {
MIDI.sendNoteOff(37, 0, 1);
//Serial.println("Note G Off");
}
buttonDvalueOld = buttonDvalueNew;
}
if (buttonEvalueNew != buttonEvalueOld){
if (buttonEvalueNew == LOW){
MIDI.sendNoteOn(44, 127, 1);
//Serial.println("Note A On");
}
else {
MIDI.sendNoteOff(44, 0, 1);
// Serial.println("Note A Off");
}
buttonEvalueOld = buttonEvalueNew;
}
if (buttonFvalueNew != buttonFvalueOld){
if (buttonFvalueNew == LOW){
MIDI.sendNoteOn(46, 127, 1);
//Serial.println("Note A On");
}
else {
MIDI.sendNoteOff(46, 0, 1);
// Serial.println("Note A Off");
}
buttonFvalueOld = buttonFvalueNew;
}
if (buttonGvalueNew != buttonGvalueOld){
if (buttonGvalueNew == LOW){
MIDI.sendNoteOn(38, 127, 1);
//Serial.println("Note A On");
}
else {
MIDI.sendNoteOff(38, 0, 1);
// Serial.println("Note A Off");
}
buttonGvalueOld = buttonGvalueNew;
}
if (buttonHvalueNew != buttonHvalueOld){
if (buttonHvalueNew == LOW){
MIDI.sendNoteOn(40, 127, 1);
//Serial.println("Note A On");
}
else {
MIDI.sendNoteOff(40, 0, 1);
// Serial.println("Note A Off");
}
buttonHvalueOld = buttonHvalueNew;
}
if (buttonIvalueNew != buttonIvalueOld){
if (buttonIvalueNew == LOW){
MIDI.sendNoteOn(43, 127, 1);
//Serial.println("Note A On");
}
else {
MIDI.sendNoteOff(43, 0, 1);
// Serial.println("Note A Off");
}
buttonIvalueOld = buttonIvalueNew;
}
if (buttonJvalueNew != buttonJvalueOld){
if (buttonJvalueNew == LOW){
MIDI.sendNoteOn(45, 127, 1);
//Serial.println("Note A On");
}
else {
MIDI.sendNoteOff(45, 0, 1);
// Serial.println("Note A Off");
}
buttonJvalueOld = buttonJvalueNew;
}
if (buttonKvalueNew != buttonKvalueOld){
if (buttonKvalueNew == LOW){
MIDI.sendNoteOn(47, 127, 1);
//Serial.println("Note A On");
}
else {
MIDI.sendNoteOff(47, 0, 1);
// Serial.println("Note A Off");
}
buttonKvalueOld = buttonKvalueNew;
}
if (buttonLvalueNew != buttonLvalueOld){
if (buttonLvalueNew == LOW){
MIDI.sendNoteOn(48, 127, 1);
//Serial.println("Note A On");
}
else {
MIDI.sendNoteOff(48, 0, 1);
// Serial.println("Note A Off");
}
buttonLvalueOld = buttonLvalueNew;
}
//potentiometers
int pot1 = analogRead(A0);
int pot2 = analogRead(A1);
int pot3 = analogRead(A2);
int pot4 = analogRead(A3);
int pot5 = analogRead(A4);
int pot6 = analogRead(A5);
int analogpot1New = analogRead(A0);
int analogpot2New = analogRead(A1);
int analogpot3New = analogRead(A2);
int analogpot4New = analogRead(A3);
int analogpot5New = analogRead(A4);
int analogpot6New = analogRead(A5);
if (analogpot1New - analogpot1Old >= 35 || analogpot1Old - analogpot1New >= 35) {
analogpot1Old = analogpot1New;
analogpot1New = (map(analogpot1New, 1023, 0, 0, 120));
analogpot1New = (constrain(analogpot1New, 0, 120));
MIDI.sendControlChange(analogpot1CC, analogpot1New, 1);
// Serial.print ("pot: ");
// Serial.println(pot1);
// Serial.print("potread: ");
// Serial.println(analogpot1New);
}
if (analogpot2New - analogpot2Old >= 35 || analogpot2Old - analogpot2New >= 35) {
analogpot2Old = analogpot2New;
analogpot2New = (map(analogpot2New, 1023, 0, 0, 120));
analogpot2New = (constrain(analogpot2New, 0, 120));
MIDI.sendControlChange(analogpot2CC, analogpot2New, 1);
// Serial.print ("pot: ");
// Serial.println(pot2);
// Serial.print("potread: ");
// Serial.println(analogpot2New);
}
if (analogpot3New - analogpot3Old >= 35 || analogpot3Old - analogpot3New >= 35) {
analogpot3Old = analogpot3New;
analogpot3New = (map(analogpot3New, 1023, 0, 0, 120));
analogpot3New = (constrain(analogpot3New, 0, 120));
MIDI.sendControlChange(analogpot3CC, analogpot3New, 1);
// Serial.print ("pot: ");
// Serial.println(pot3);
// Serial.print("potread: ");
// Serial.println(analogpot3New);
}
if (analogpot4New - analogpot4Old >= 35 || analogpot4Old - analogpot4New >= 35) {
analogpot4Old = analogpot4New;
analogpot4New = (map(analogpot4New, 1023, 0, 0, 120));
analogpot4New = (constrain(analogpot4New, 0, 120));
MIDI.sendControlChange(analogpot4CC, analogpot4New, 1);
// Serial.print ("pot: ");
// Serial.println(pot4);
// Serial.print("potread: ");
// Serial.println(analogpot4New);
}
if (analogpot5New - analogpot5Old >= 35 || analogpot5Old - analogpot5New >= 35) {
analogpot5Old = analogpot5New;
analogpot5New = (map(analogpot5New, 1023, 0, 0, 120));
analogpot5New = (constrain(analogpot5New, 0, 120));
MIDI.sendControlChange(analogpot5CC, analogpot5New, 1);
// Serial.print ("pot: ");
// Serial.println(pot5);
// Serial.print("potread: ");
// Serial.println(analogpot5New);
}
if (analogpot6New - analogpot6Old >= 35 || analogpot6Old - analogpot6New >= 35) {
analogpot6Old = analogpot6New;
analogpot6New = (map(analogpot6New, 1023, 0, 0, 120));
analogpot6New = (constrain(analogpot6New, 0, 120));
MIDI.sendControlChange(analogpot6CC, analogpot6New, 1);
// Serial.print ("pot: ");
// Serial.println(pot6);
// Serial.print("potread: ");
// Serial.println(analogpot6New);
}
delay(25);
}
Tutaj kod:
#include <MIDI.h>
MIDI_CREATE_DEFAULT_INSTANCE();
int buttonApin = 13; //footswitch A
int buttonBpin = 12; //footswitch B
int buttonCpin = 11; //footswitch C
int buttonDpin = 10;
int buttonEpin = 9;
int buttonFpin = 8;
int buttonGpin = 7;
int buttonHpin = 6;
int buttonIpin = 5;
int buttonJpin = 4;
int buttonKpin = 3;
int buttonLpin = 2;
int analogpot1 = A0; //knob 1
int analogpot2 = A1; //knob 2
int analogpot3 = A2;
int analogpot4 = A3;
int analogpot5 = A4;
int analogpot6 = A5;
int analogpot1Old = 0;
int analogpot2Old = 0;
int analogpot3Old = 0;
int analogpot4Old = 0;
int analogpot5Old = 0;
int analogpot6Old = 0;
int analogpot1New = 0;
int analogpot2New = 0;
int analogpot3New = 0;
int analogpot4New = 0;
int analogpot5New = 0;
int analogpot6New = 0;
#define analogpot1CC 54
#define analogpot2CC 55
#define analogpot3CC 56
#define analogpot4CC 57
#define analogpot5CC 58
#define analogpot6CC 59
void setup() {
// put your setup code here, to run once:
MIDI.begin (); // MIDI START
pinMode(buttonApin, INPUT_PULLUP);
pinMode(buttonBpin, INPUT_PULLUP);
pinMode(buttonCpin, INPUT_PULLUP);
pinMode(buttonDpin, INPUT_PULLUP);
pinMode(buttonEpin, INPUT_PULLUP);
pinMode(buttonFpin, INPUT_PULLUP);
pinMode(buttonGpin, INPUT_PULLUP);
pinMode(buttonHpin, INPUT_PULLUP);
pinMode(buttonIpin, INPUT_PULLUP);
pinMode(buttonJpin, INPUT_PULLUP);
pinMode(buttonKpin, INPUT_PULLUP);
pinMode(buttonLpin, INPUT_PULLUP);
pinMode(analogpot1, INPUT);
pinMode(analogpot2, INPUT);
pinMode(analogpot3, INPUT);
pinMode(analogpot4, INPUT);
pinMode(analogpot5, INPUT);
pinMode(analogpot6, INPUT);
//Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
static bool buttonAvalueOld = HIGH;
static bool buttonBvalueOld = HIGH;
static bool buttonCvalueOld = HIGH;
static bool buttonDvalueOld = HIGH;
static bool buttonEvalueOld = HIGH;
static bool buttonFvalueOld = HIGH;
static bool buttonGvalueOld = HIGH;
static bool buttonHvalueOld = HIGH;
static bool buttonIvalueOld = HIGH;
static bool buttonJvalueOld = HIGH;
static bool buttonKvalueOld = HIGH;
static bool buttonLvalueOld = HIGH;
//footswitches
bool buttonAvalueNew = digitalRead(buttonApin);
bool buttonBvalueNew = digitalRead(buttonBpin);
bool buttonCvalueNew = digitalRead(buttonCpin);
bool buttonDvalueNew = digitalRead(buttonDpin);
bool buttonEvalueNew = digitalRead(buttonEpin);
bool buttonFvalueNew = digitalRead(buttonFpin);
bool buttonGvalueNew = digitalRead(buttonGpin);
bool buttonHvalueNew = digitalRead(buttonHpin);
bool buttonIvalueNew = digitalRead(buttonIpin);
bool buttonJvalueNew = digitalRead(buttonJpin);
bool buttonKvalueNew = digitalRead(buttonKpin);
bool buttonLvalueNew = digitalRead(buttonLpin);
if (buttonAvalueNew != buttonAvalueOld){
if (buttonAvalueNew == LOW){
MIDI.sendNoteOn(54, 127, 1);
//Serial.println("Note C On");
}
else {
MIDI.sendNoteOff(54, 0, 1);
//Serial.println("Note C Off");
}
buttonAvalueOld = buttonAvalueNew;
}
if (buttonBvalueNew != buttonBvalueOld){
if (buttonBvalueNew == LOW){
MIDI.sendNoteOn(42, 127, 1);
//Serial.println("Note E On");
}
else {
MIDI.sendNoteOff(42, 0, 1);
//Serial.println("Note E Off");
}
buttonBvalueOld = buttonBvalueNew;
}
if (buttonCvalueNew != buttonCvalueOld){
if (buttonCvalueNew == LOW){
MIDI.sendNoteOn(36, 127, 1);
//Serial.println("Note F On");
}
else {
MIDI.sendNoteOff(36, 0, 1);
//Serial.println("Note F Off");
}
buttonCvalueOld = buttonCvalueNew;
}
if (buttonDvalueNew != buttonDvalueOld){
if (buttonDvalueNew == LOW){
MIDI.sendNoteOn(37, 127, 1);
//Serial.println("Note G On");
}
else {
MIDI.sendNoteOff(37, 0, 1);
//Serial.println("Note G Off");
}
buttonDvalueOld = buttonDvalueNew;
}
if (buttonEvalueNew != buttonEvalueOld){
if (buttonEvalueNew == LOW){
MIDI.sendNoteOn(44, 127, 1);
//Serial.println("Note A On");
}
else {
MIDI.sendNoteOff(44, 0, 1);
// Serial.println("Note A Off");
}
buttonEvalueOld = buttonEvalueNew;
}
if (buttonFvalueNew != buttonFvalueOld){
if (buttonFvalueNew == LOW){
MIDI.sendNoteOn(46, 127, 1);
//Serial.println("Note A On");
}
else {
MIDI.sendNoteOff(46, 0, 1);
// Serial.println("Note A Off");
}
buttonFvalueOld = buttonFvalueNew;
}
if (buttonGvalueNew != buttonGvalueOld){
if (buttonGvalueNew == LOW){
MIDI.sendNoteOn(38, 127, 1);
//Serial.println("Note A On");
}
else {
MIDI.sendNoteOff(38, 0, 1);
// Serial.println("Note A Off");
}
buttonGvalueOld = buttonGvalueNew;
}
if (buttonHvalueNew != buttonHvalueOld){
if (buttonHvalueNew == LOW){
MIDI.sendNoteOn(40, 127, 1);
//Serial.println("Note A On");
}
else {
MIDI.sendNoteOff(40, 0, 1);
// Serial.println("Note A Off");
}
buttonHvalueOld = buttonHvalueNew;
}
if (buttonIvalueNew != buttonIvalueOld){
if (buttonIvalueNew == LOW){
MIDI.sendNoteOn(43, 127, 1);
//Serial.println("Note A On");
}
else {
MIDI.sendNoteOff(43, 0, 1);
// Serial.println("Note A Off");
}
buttonIvalueOld = buttonIvalueNew;
}
if (buttonJvalueNew != buttonJvalueOld){
if (buttonJvalueNew == LOW){
MIDI.sendNoteOn(45, 127, 1);
//Serial.println("Note A On");
}
else {
MIDI.sendNoteOff(45, 0, 1);
// Serial.println("Note A Off");
}
buttonJvalueOld = buttonJvalueNew;
}
if (buttonKvalueNew != buttonKvalueOld){
if (buttonKvalueNew == LOW){
MIDI.sendNoteOn(47, 127, 1);
//Serial.println("Note A On");
}
else {
MIDI.sendNoteOff(47, 0, 1);
// Serial.println("Note A Off");
}
buttonKvalueOld = buttonKvalueNew;
}
if (buttonLvalueNew != buttonLvalueOld){
if (buttonLvalueNew == LOW){
MIDI.sendNoteOn(48, 127, 1);
//Serial.println("Note A On");
}
else {
MIDI.sendNoteOff(48, 0, 1);
// Serial.println("Note A Off");
}
buttonLvalueOld = buttonLvalueNew;
}
//potentiometers
int pot1 = analogRead(A0);
int pot2 = analogRead(A1);
int pot3 = analogRead(A2);
int pot4 = analogRead(A3);
int pot5 = analogRead(A4);
int pot6 = analogRead(A5);
int analogpot1New = analogRead(A0);
int analogpot2New = analogRead(A1);
int analogpot3New = analogRead(A2);
int analogpot4New = analogRead(A3);
int analogpot5New = analogRead(A4);
int analogpot6New = analogRead(A5);
if (analogpot1New - analogpot1Old >= 35 || analogpot1Old - analogpot1New >= 35) {
analogpot1Old = analogpot1New;
analogpot1New = (map(analogpot1New, 1023, 0, 0, 120));
analogpot1New = (constrain(analogpot1New, 0, 120));
MIDI.sendControlChange(analogpot1CC, analogpot1New, 1);
// Serial.print ("pot: ");
// Serial.println(pot1);
// Serial.print("potread: ");
// Serial.println(analogpot1New);
}
if (analogpot2New - analogpot2Old >= 35 || analogpot2Old - analogpot2New >= 35) {
analogpot2Old = analogpot2New;
analogpot2New = (map(analogpot2New, 1023, 0, 0, 120));
analogpot2New = (constrain(analogpot2New, 0, 120));
MIDI.sendControlChange(analogpot2CC, analogpot2New, 1);
// Serial.print ("pot: ");
// Serial.println(pot2);
// Serial.print("potread: ");
// Serial.println(analogpot2New);
}
if (analogpot3New - analogpot3Old >= 35 || analogpot3Old - analogpot3New >= 35) {
analogpot3Old = analogpot3New;
analogpot3New = (map(analogpot3New, 1023, 0, 0, 120));
analogpot3New = (constrain(analogpot3New, 0, 120));
MIDI.sendControlChange(analogpot3CC, analogpot3New, 1);
// Serial.print ("pot: ");
// Serial.println(pot3);
// Serial.print("potread: ");
// Serial.println(analogpot3New);
}
if (analogpot4New - analogpot4Old >= 35 || analogpot4Old - analogpot4New >= 35) {
analogpot4Old = analogpot4New;
analogpot4New = (map(analogpot4New, 1023, 0, 0, 120));
analogpot4New = (constrain(analogpot4New, 0, 120));
MIDI.sendControlChange(analogpot4CC, analogpot4New, 1);
// Serial.print ("pot: ");
// Serial.println(pot4);
// Serial.print("potread: ");
// Serial.println(analogpot4New);
}
if (analogpot5New - analogpot5Old >= 35 || analogpot5Old - analogpot5New >= 35) {
analogpot5Old = analogpot5New;
analogpot5New = (map(analogpot5New, 1023, 0, 0, 120));
analogpot5New = (constrain(analogpot5New, 0, 120));
MIDI.sendControlChange(analogpot5CC, analogpot5New, 1);
// Serial.print ("pot: ");
// Serial.println(pot5);
// Serial.print("potread: ");
// Serial.println(analogpot5New);
}
if (analogpot6New - analogpot6Old >= 35 || analogpot6Old - analogpot6New >= 35) {
analogpot6Old = analogpot6New;
analogpot6New = (map(analogpot6New, 1023, 0, 0, 120));
analogpot6New = (constrain(analogpot6New, 0, 120));
MIDI.sendControlChange(analogpot6CC, analogpot6New, 1);
// Serial.print ("pot: ");
// Serial.println(pot6);
// Serial.print("potread: ");
// Serial.println(analogpot6New);
}
delay(25);
}