Hallo Leute,
ich habe mit ein Drumkit gebaut, welches über piezos angesteuert wird. Ich benutze "Ardrumo" um mir die Signale über USB in MIDI umzuwandeln (sodass ich kein Midikabel benötige). Die Töne lege ich dann in garageband fest.
So sieht das Programm aus:
#define LEDPIN 13 // status LED pin
#define PIEZOTHRESHOLD 5 // analog threshold for piezo sensing
#define PADNUM 6 // number of pads
int val;
void setup() {
pinMode(LEDPIN, OUTPUT);
Serial.begin(57600); // set serial output rate
}
void loop() {
for(int i = 0; i < PADNUM; i++) {
val = analogRead(i);
if( val >= PIEZOTHRESHOLD ) {
digitalWrite(LEDPIN,HIGH); // indicate we're sending MIDI data
Serial.print(i);
Serial.print(",");
Serial.print(val);
Serial.println();
digitalWrite(LEDPIN,LOW);
}
}
}
Dazu sollen beim Anspielen der piezos LEDs aufleuchten. Dies habe ich auch in folgendem Sketch geschrieben:
int sensorPin1 = A0;
int sensorPin2 = A1;
int sensorPin3 = A2;
int sensorPin4 = A3;
int ledPin1 = 13;
int ledPin2 = 12;
int ledPin3 = 8;
int ledPin4 = 7;
int sensorValue = 0;
void setup() {
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
}
void loop() {
sensorValue = analogRead(sensorPin1);
digitalWrite(ledPin1, HIGH);
delay(sensorValue);
digitalWrite(ledPin1, LOW);
sensorValue = analogRead(sensorPin2);
digitalWrite(ledPin2, HIGH);
delay(sensorValue);
digitalWrite(ledPin2, LOW);
sensorValue = analogRead(sensorPin3);
digitalWrite(ledPin3, HIGH);
delay(sensorValue);
digitalWrite(ledPin3, LOW);
sensorValue = analogRead(sensorPin4);
digitalWrite(ledPin4, HIGH);
delay(sensorValue);
digitalWrite(ledPin4, LOW);
}
Beide einzelnen Sketche funktionieren getrennt sehr gut, aber wenn ich beide zu einem frickle, dann funktioniert es nicht gut, das heißt das beim Anspielen des Drumpads zwar die LED leuchtet aber der Ton erst später oder gar nicht kommt. Insgesamt reagiert alles sehr verzögert und nicht präzise.
Sollte man alles lieber in einer Schleife abhandeln? Hierbei benötige ich Hilfe, denn dies is mein erstes Arduino-Projekt.