witam
Zaznaczam że jestem bardzo początkującym adeptem programowania
Potrzebuję stworzyć teoretycznie prosty program który ma jedno wyjście z arduino ustawiać w stan logicznego 0 lub 1 , na zasadzie toggle za pomoca zwykłego switcha monostabilnego oraz komunikatów midi.
kod zwykłego przełączania stanu wyjścia za pomocą jednego przycisku mam napisane i rozumiem
Obsługę samego midi również opanowałem, przy otrzymaniu komunikatu program change 1 na kanale 1, ustawiam wyjscie w stan "1", gdy otrzymam komunikat program change 2 na kanale 1 - ustawiam stan wyjścia na "0"
Problem mam teraz jak napisać program który łączy midi i zwykłęgo switcha monostabilnego.
Ma to działać tak:
Odpalamy program i na starcie stan wyjścia = 1
jeśli nacisnę przycisk - stan wyjścia = 0
jeśli ponownie nacisnę - stan wyjścia = 1
teraz jeśli przyjdzie komunikat midi program change 1 - stan wyjścia = 1 czyli dalej taki jaki był
jeśli nacisnę przycisk - stan wyjścia = 0
jeśli przyjdzie ponownie komunikat midi program change 1 - stan wyjścia = 1
jeśli przyjdzie komunikat midi program change 2 - stan wyjścia = 0
jeśli teraz nacisnę przycisk - stan wyjścia = 1
po prostu działanie na zasadzie toggle...
Mam nadzieję że zrozumiale napisałem
Próbuje coś sensownego sklecić ale albo błedy wywala albo nie działa.
Można prosić kogoś o pomoć? albo nakierowanie jak to zrobić...
pozdrawiam
Zaznaczam że jestem bardzo początkującym adeptem programowania
Potrzebuję stworzyć teoretycznie prosty program który ma jedno wyjście z arduino ustawiać w stan logicznego 0 lub 1 , na zasadzie toggle za pomoca zwykłego switcha monostabilnego oraz komunikatów midi.
kod zwykłego przełączania stanu wyjścia za pomocą jednego przycisku mam napisane i rozumiem
Kod:
int inPin = 5;
int outPin = 13;
int state = 1; // poczatkowy stan wyjscia
int reading; // aktualny stan
int previous = 0; // poprzedni stan
void setup()
{
pinMode(inPin, INPUT);
pinMode(outPin, OUTPUT);
}
void loop()
{
reading = digitalRead(inPin);
delay(50);
if (reading == 1 && previous == 0) {
if (state == 0)
state = 1;
else
state = 0; {
}
digitalWrite(outPin, state);
previous = reading;
}
Obsługę samego midi również opanowałem, przy otrzymaniu komunikatu program change 1 na kanale 1, ustawiam wyjscie w stan "1", gdy otrzymam komunikat program change 2 na kanale 1 - ustawiam stan wyjścia na "0"
Kod:
byte commandByte;
byte noteByte;
int inPin = 5;
int outPin = 13;
void setup(){
Serial.begin(31250);
pinMode(inPin, INPUT);
pinMode(outPin, OUTPUT);
}
void loop()
{ if (Serial.available() > 0){
commandByte = Serial.read();
noteByte = Serial.read();
if (commandByte == 192 && noteByte == 1){
digitalWrite(outPin,HIGH);
}
}
if (commandByte == 192 && noteByte == 2){
digitalWrite(outPin,LOW);
}
delay(10);
}
Problem mam teraz jak napisać program który łączy midi i zwykłęgo switcha monostabilnego.
Ma to działać tak:
Odpalamy program i na starcie stan wyjścia = 1
jeśli nacisnę przycisk - stan wyjścia = 0
jeśli ponownie nacisnę - stan wyjścia = 1
teraz jeśli przyjdzie komunikat midi program change 1 - stan wyjścia = 1 czyli dalej taki jaki był
jeśli nacisnę przycisk - stan wyjścia = 0
jeśli przyjdzie ponownie komunikat midi program change 1 - stan wyjścia = 1
jeśli przyjdzie komunikat midi program change 2 - stan wyjścia = 0
jeśli teraz nacisnę przycisk - stan wyjścia = 1
po prostu działanie na zasadzie toggle...
Mam nadzieję że zrozumiale napisałem
Próbuje coś sensownego sklecić ale albo błedy wywala albo nie działa.
Można prosić kogoś o pomoć? albo nakierowanie jak to zrobić...
pozdrawiam