Hallo zusammen,
ich bin gerade dabei, mehrere LCD 1602 über I2C mit einem Arduino anzusteuern, um SysEx-Daten einer Sample-Software auszugeben. Um den Arduino als MIDI-Gerät verwenden zu können, benutze ich LoopMidi und Hairless MIDI. Nun ist es so, dass ich auf dem LCD keine Daten angezeigt bekomme; ich sehe nur in den LogDateien von Hairless MIDI die eingehenden Werte, sehe aber keine Ausgabe auf dem Bildschirm (die Baudrate habe ich sowohl beim Arduino als auch bei Hairless angepasst).
Ich weiß nun nicht, ob ich einfach einen Fehler im Code habe, oder was sonst der Fall sein könnte.
Hier ist der Code:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <MIDI.h>
#define LED 13
LiquidCrystal_I2C lcd(0x26, 16, 2);
MIDI_CREATE_DEFAULT_INSTANCE();
int displayNumber = 0;
void setup() {
lcd.backlight();
Serial.begin(14400);
lcd.init();
lcd.print("Hello..");
pinMode (LED, OUTPUT); // Arduino board pin 13 to output
MIDI.begin(MIDI_CHANNEL_OMNI); // Initialize the Midi Library.
MIDI.setHandleSystemExclusive(MyHandleSystemExclusive); // set function for SysEx receive
delay(9000);
lcd.clear();
}
void loop() {
MIDI.read(); // check if Midi data has been received.
}
void MyHandleSystemExclusive(byte *data, unsigned int array_size)
{
int column = 0;
bool start = false;
digitalWrite(LED,HIGH); //Turn LED on - start working
lcd.clear();
lcd.setCursor(0, 0);
for (int i = 0; i < array_size; i++)
{
if (data[i] >= 32 && data[i] <= 126 && start)
{
lcd.write(data[i]);
column = column + 1;
if (column == 16)
{
lcd.setCursor(0,1);
}
}
if (data[i] == 125)
{
start = true;
}
}
digitalWrite(LED,LOW); //Turn LED off - end working
}
Das Display habe ich in der Sample-Software als Output gesetzt und in Hairless MIDI als Input, um die MIDI-Daten empfangen zu können.
Eigentlich müsste das doch genügen, um die Daten anzeigen zu lassen?
Vielen Dank für mögliche Lösungsansätze
Wally