07-12-2017, 15:46
witam
Popracowałem trochę nad tym i udało się
działa dokładnie tak jak chciałem, tylko przy szybkim przełączaniu rozkazów midi, nie zawsze zadziała, pomimo że wyśle to nie przełączy, tak jakby arduino za wolne było.
Ma ktoś pomysł co może być problemem ?
Popracowałem trochę nad tym i udało się
Kod:
int in = 5; //pin z klawiszem
int out = 13; //dioda na pokladzie arduino
byte commandByte; //odczyt pierwszego bitu (kanal)
byte noteByte; //odczyt drugiego bitu (rozkaz)
int state = 1; //stan poczatkowy wyjscia
int reading; //zmienna czy klawisz nacisniety
int poprzedni = 0; //zmienna zapisujaca stan poprzedni
void setup()
{
Serial.begin(31250);
pinMode(in, INPUT);
pinMode(out, OUTPUT);
}
void loop()
{
reading = digitalRead(in);
delay(2);
if (reading == 1 && poprzedni == 0)
{
if (state == 0)
state = 1;
else
state = 0;
}
else if (Serial.available() > 0)
{
commandByte = Serial.read();
noteByte = Serial.read();
if (commandByte == 192 && noteByte == 127)
{
if (state == 0)
state = 1;
}
else if (commandByte == 192 && noteByte == 2)
{
if (state == 1)
state = 0;
}
}
digitalWrite(out, state);
poprzedni = reading;
}
działa dokładnie tak jak chciałem, tylko przy szybkim przełączaniu rozkazów midi, nie zawsze zadziała, pomimo że wyśle to nie przełączy, tak jakby arduino za wolne było.
Ma ktoś pomysł co może być problemem ?