Hallo zusammen,
habe ein Problem mit Midi Senden. Wenn ich in den Code Prints
rein schreibe Funktioniert es einiger maßen ohne die Prints
meldet mein Soundexpander, die Daten würden schneller kommen als er sie verarbeiten kann.
Was kann das sein?
Ich hänge hier mal den Code aus dem Sketch rein->
#include <Arduino.h>
#include <EEPROM.h>
#include <LiquidCrystal_I2C.h> // Vorher hinzugefügte LiquidCrystal_I2C Bibliothek einbinden
LiquidCrystal_I2C lcd(0x27,40,2); // 2 zeiliges I2C-LCD mit 40 Zeichen pro Zeile ...
#include "defauls.h"
#include "proto_.h"
#include "atachment_.h"
#include "progs_.h"
void setup()
{
lcd.init(); //Im Setup wird der LCD gestartet
lcd.backlight(); //Hintergrundbeleuchtung einschalten
lcd.leftToRight();
lcd.clear();
lcd.home();
pinMode(pAD0_,OUTPUT);
pinMode(pAD1_,OUTPUT);
pinMode(pAD2_,OUTPUT);
pinMode(pAD3_,OUTPUT);
pinMode(13,OUTPUT);
pinMode(pD10_,OUTPUT);
pinMode(pD11_,OUTPUT);
pinMode(pD12_,OUTPUT);
pinMode(pD02_,INPUT);
pinMode(pD03_,INPUT);
pinMode(pD08_,INPUT);
pinMode(MidiOut_M1_,OUTPUT);
pinMode(MidiOut_M2_,OUTPUT);
digitalWrite(MidiOut_M1_,HIGH); // midiout 1+2 an ...
digitalWrite(MidiOut_M2_,HIGH);
Serial.begin(31250); // midi sequenz ....
lcd.setCursor(dspl_v_,line_1_);// das erste Zeichen in der ersten Zeile.
lcd.print(" Midi Test ");
zTimer_1 = 0;
attachInterrupt(0,INT_0_,LOW); // poti top und tasten ...
attachInterrupt(1,INT_1_,RISING); // nur poti links / rechts ...
}
void loop()
{
//******************* midi in abfrage ... ******************************
iBytes_ = Serial.available();
if (iBytes_ > 0)
{
detachInterrupt(0);
detachInterrupt(1);
lcd.setCursor(dspl_v_,line_2_);// das erste Zeichen in der zweiten Zeile.
while (iBytes_-- > 0)
{
//Serial.write(Serial.read());
bOUT_ = Serial.read();
lcd.print(" ");
lcd.print(bOUT_);
Serial.write(bOUT_);
}
lcd.print(" ");
digitalWrite(13, !(digitalRead(13))); // Pin togglen
attachInterrupt(0,INT_0_,LOW); // nur poti links / rechts ...
attachInterrupt(1,INT_1_,RISING); // poti top und tasten ...
}
//**************** timer ***********************************************
if (millis() > zTIMER_) // abfrager begrenzer ...
{
zTIMER_ = millis()+100;
if (zTIMER_ > zUSER_TIME_)
fFlipFlop_ = ON;
zPop_=1;
} // millis ...
}// loop