Midi footswitch

Toon hier Uw afgeronde projecten aan anderen.
Berichten: 9
Geregistreerd: 04 Sep 2018, 20:18

Midi footswitch

Berichtdoor adinatha » 04 Sep 2018, 20:30

Ik heb al een aantal jaren een footswitch gebouwd die met een arduino een midi signaal(alleen program change codes)naar mijn effect apparatuur stuurt.
Ik probeer deze nu draadloos te maken.
Probleem is dat de schakelaars in mijn footswitch naar massa schakelen terwijl ik de schakelaars nu naar de voedingsspanning moet schakelen.
Het is al een lange tijd geleden dat ik deze geprogrammeerd heb, dus ik ben wat roestig maar volgens mij moet ik de ingangen anders configureren, klopt dit?
In plaats dat ik de interne pull-up activeer moet ik nu de interne pull downs activeren?
Ik zal wel weer eens in duiken, was een leuk project voor een muzikant als mij.
Maar waarschijnlijk moet deze post ook verplaatst worden naar de software afdeling.

//constants:
#define SWITCHCOUNT 5

// input IO pins
#define SWITCHoffset 2
#define SWITCH1 3
#define SWITCH2 4
#define SWITCH3 5
#define SWITCH4 6
#define SWITCH5 7

// assignes LED1 t/m 5 to I/O pins 8 t/m 12
#define LED1 8
#define LED2 9
#define LED3 10
#define LED4 11
#define LED5 12

#define BOUNCEDELAY 100

//Variabeles:
int switches[5] = { SWITCH1, SWITCH2, SWITCH3, SWITCH4, SWITCH5 };
int switchState[5] = { HIGH, HIGH, HIGH, HIGH, HIGH };
// initial switchstate is high

int leds[5] = { LED1, LED2, LED3, LED4, LED5 };
int ledState[5] = { LOW, LOW, LOW, LOW, LOW };
// initial all leds out

int currentProgram = 0;
int offset = 0;


void setup()
{
// Set MIDI baud rate:
Serial.begin(31250);

// Setup Offset switch
pinMode(SWITCHoffset, INPUT ); //pin2 is input
digitalWrite(SWITCHoffset, HIGH ); //pullup geactiveerd


// Setup Switches and leds initial states, loop runs 5 times = amount 'SWITCHCOUNT'
for( int currentSwitch = 0; currentSwitch < SWITCHCOUNT; currentSwitch++ )
{
// SWITCH 1 t/m 5 configured as inputs and activation pullup
pinMode( switches[currentSwitch], INPUT );
digitalWrite( switches[currentSwitch], HIGH );

// LED 1 t/m 5 configured as outputs and initial put off.
pinMode( leds[currentSwitch], OUTPUT );
digitalWrite(leds[currentSwitch], ledState[currentSwitch]);
}
}

void resetLeds () { //alle leds uit
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
}

void loop() //first part, prog for offset switch.
{
int value = digitalRead(SWITCHoffset);
if (value == HIGH) {
offset = 0; //patches repetitie 0 t/m 5
}
else {
offset = 5; //patches live 6 t/m 10
}

// prog read switches, set led, send MIDI
for( int currentSwitch = 0; currentSwitch < SWITCHCOUNT; currentSwitch++ ) //loop runs 5 times
{
if(( digitalRead(switches[currentSwitch]) != switchState[currentSwitch]) && (switchState[currentSwitch] == HIGH))
{
switch( currentSwitch )
{
case 0:
currentProgram = 01;
resetLeds;
digitalWrite(LED1, HIGH);
Serial.print(0xC0); //send midi progchange code
Serial.print(01+offset); //send patch code, depending on switch offset
break;

case 1:
currentProgram = 02;
resetLeds;
digitalWrite(LED2, HIGH);
Serial.print(0xC0);
Serial.print(02+offset);
break;

case 2:
currentProgram = 03;
resetLeds;
digitalWrite(LED3, HIGH);
Serial.print(0xC0);
Serial.print(03+offset);
break;

case 3:
currentProgram = 04;
resetLeds;
digitalWrite(LED4, HIGH);
Serial.print(0xC0);
Serial.print(04+offset);
break;

case 4:
currentProgram = 05;
resetLeds;
digitalWrite(LED5, HIGH);
Serial.print(0xC0);
Serial.print(05+offset);
break;
}
delay( BOUNCEDELAY );
}
switchState[currentSwitch] = digitalRead( switches[currentSwitch] );
}
}

Advertisement

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Midi footswitch

Berichtdoor shooter » 05 Sep 2018, 09:43

als je int value = digitalRead(SWITCHoffset); en daar een uitroepteken bijzet dus !digitalRead..... van maakt is het al klaar.
paul deelen
shooter@home.nl

Terug naar Afgeronde projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 2 gasten