Arduino MIDI Input: Unterschied zwischen den Versionen
Aus Technik-fan.de Wiki
Admin (Diskussion | Beiträge) |
Admin (Diskussion | Beiträge) K |
||
Zeile 12: | Zeile 12: | ||
<source lang="c"> | <source lang="c"> | ||
+ | //Das Testprogramm gibt die MIDI Noten an der Seriellen Schnittstelle aus - Bitrate: 31250 | ||
int incomingByte = 0; // for incoming serial data | int incomingByte = 0; // for incoming serial data | ||
+ | int temp = 0; | ||
+ | int i1=0; | ||
void setup() { | void setup() { | ||
− | Serial.begin( | + | Serial.begin(31250); |
− | Serial3.begin( | + | Serial3.begin(31250); |
} | } | ||
− | + | ||
void loop() { | void loop() { | ||
− | + | ||
incomingByte = Serial3.read(); | incomingByte = Serial3.read(); | ||
− | if (incomingByte != -1 and incomingByte != 248 and incomingByte != 254) { | + | if (incomingByte != -1 and incomingByte != 248 and incomingByte != 254) { |
− | Serial.println(incomingByte); } | + | |
+ | if (temp == 144 or temp == 0) { | ||
+ | switch (incomingByte) { | ||
+ | case 96: | ||
+ | Serial.println("Note: 96"); | ||
+ | break; | ||
+ | case 95: | ||
+ | Serial.println("Note: 95"); | ||
+ | break; | ||
+ | case 94: | ||
+ | Serial.println("Note: 94"); | ||
+ | break; | ||
+ | case 93: | ||
+ | Serial.println("Note: 93"); | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | temp = incomingByte; | ||
+ | Serial.println(incomingByte); | ||
+ | i1=0; | ||
+ | } | ||
} | } | ||
</source> | </source> |
Version vom 16. Dezember 2011, 19:34 Uhr
Experimente mit dem Arduino Mega und Midi Input.
Bauteile:
Diode: 1N 4148
Optokoppler: CNY 17F2
Widerstand: 220 Ohm, 2,2 kOhm
Lochrasterplatine: H25PR050
Din Buchse Halbrund
Arduino Sketch:
//Das Testprogramm gibt die MIDI Noten an der Seriellen Schnittstelle aus - Bitrate: 31250 int incomingByte = 0; // for incoming serial data int temp = 0; int i1=0; void setup() { Serial.begin(31250); Serial3.begin(31250); } void loop() { incomingByte = Serial3.read(); if (incomingByte != -1 and incomingByte != 248 and incomingByte != 254) { if (temp == 144 or temp == 0) { switch (incomingByte) { case 96: Serial.println("Note: 96"); break; case 95: Serial.println("Note: 95"); break; case 94: Serial.println("Note: 94"); break; case 93: Serial.println("Note: 93"); break; } } temp = incomingByte; Serial.println(incomingByte); i1=0; } }
Es ergibt sich folgendes Bild mit der Arduino Serial Read Software beim Drücken der Tasten am Keyboard:
102 30 30 38 32 102 6 56 38 30 102 128 32 6