• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Odbiór MIDI
#2
Witam po raz kolejny. Napisałem program do tego urządzenia. Problem teraz polega na tym, że po podaniu presetu (zestawu paru przycisków na raz) wszystkie przekaźniki odbiorą krótki impuls po czym gasną. Po włączeniu przycisku odpowiedzialnego za dany przekaźnik działa na zasadzie odbicia lustrzanego-gdy włącznik jest włączony przekaźnik nie reaguje, natomiast gdy włącznik jest wyłączony przekaźnik załącza się. Moje pytanie brzmi, co jest źle w kodzie? Program jest edycją pewnego programu znalezionego w necie.

Kod:
#include <MIDI.h>  // Add Midi Library

#define CH1 22
#define CH2 23
#define CH3 24
#define CH4 25
#define CH5 26
#define CH6 27
#define CH7 28
#define CH8 29
#define CH9 30
#define CH10 31
#define CH11 32
#define CH12 33
#define CH13 34
#define CH14 35
#define CH15 36
#define CH16 37

MIDI_CREATE_DEFAULT_INSTANCE();

void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
digitalWrite(3, LOW); // GND 0 Volt supply to opto-coupler
digitalWrite(2, HIGH); // +5 Volt supply to opto-coupler
//pinMode (LED, OUTPUT); // Set Arduino board pin 13 to output
MIDI.begin(1); // Initialize the Midi Library.
// OMNI sets it to listen to all channels.. MIDI.begin(2) would set it
// to respond to notes on channel 2 only.
MIDI.setHandleControlChange(MyCCFunction); // This command tells the MIDI Library
// the function you want to call when a Continuous Controller command
// is received. In this case it's "MyCCFunction".
}

void loop() { // Main loop
MIDI.read(); // Continuously check if Midi data has been received.
}

// MyCCFunction is the function that will be called by the Midi Library
// when a Continuous Controller message is received.
// It will be passed bytes for Channel, Controller Number, and Value
// It checks if the controller number is within the 22 to 27 range
// If it is, light up the corresponding LED with the PWM brightness equal to the Value byte
void MyCCFunction(byte channel, byte number, byte value) {
switch (number) {
  case 25:
    analogWrite(CH1, value * 2);
    break;
  case 16:
    analogWrite(CH2, value * 2);
    break;
  case 19:
    analogWrite(CH3, value * 2);
    break;
  case 20:
    analogWrite(CH4, value * 2);
    break;
  case 21:
    analogWrite(CH5, value * 2);
    break;
  case 22:
    analogWrite(CH6, value * 2);
    break;
  case 23:
    analogWrite(CH7, value * 2);
    break;
  case 24:
    analogWrite(CH8, value * 2);
    break;
  case 13:
    analogWrite(CH9, value * 2);
    break;
  case 18:
    analogWrite(CH10, value * 2);
    break;
  case 17:
    analogWrite(CH11, value * 2);
    break;
  case 12:
    analogWrite(CH12, value * 2);
    break;
  case 11:
    analogWrite(CH13, value * 2);
    break;
  case 10:
    analogWrite(CH14, value * 2);
    break;
  case 15:
    analogWrite(CH15, value * 2);
    break;
  case 14:
    analogWrite(CH16, value * 2);
    break;
}
}
 
Odpowiedź
  


Wiadomości w tym wątku
Odbiór MIDI - przez krecik3575 - 12-08-2017, 21:55
RE: Odbiór MIDI - przez krecik3575 - 11-09-2017, 13:34
RE: Odbiór MIDI - przez Dev68 - 16-09-2017, 10:20
RE: Odbiór MIDI - przez krecik3575 - 05-10-2017, 15:32
RE: Odbiór MIDI - przez CEO - 18-10-2017, 12:52

Skocz do:


Przeglądający: 1 gości