Go Down

Topic: UNO + Olimex Midi Shield (Resolved) (Read 5989 times) previous topic - next topic

deseipel

Summary:

PC -> Roland UM-1 USB/MIDI cable - > Olimex MIDI shield -> UNO R3  (powered by 9v battery or USB connection (when uploading sketches)

Software:  Arduino IDE 1.0.3, MIDI OX or USBlyzer or SendSX (all are supposed to monitor incoming MIDI or USB ports), MIDI library 3.2

Actions: 

1.  Connect UNO + Midi shield (with jumper removed to allow upload of sketch) via USB to computer
2.  upload a simple MIDI TX sketch, such as:

Code: [Select]

int velocity = 100;//velocity of MIDI notes, must be between 0 and 127
//higher velocity usually makes MIDI instruments louder

int noteON = 144;//144 = 10010000 in binary, note on command
int noteOFF = 128;//128 = 10000000 in binary, note off command

void setup() {
  //  Set MIDI baud rate:
  Serial.begin(31250);
}

void loop() {
  for (int note=50;note<70;note++) {//from note 50 (D3) to note 69 (A4)
    MIDImessage(noteON, note, velocity);//turn note on
    delay(300);//hold note for 300ms
    MIDImessage(noteOFF, note, velocity);//turn note off
    delay(200);//wait 200ms until triggering next note
  }
}

//send MIDI message
void MIDImessage(int command, int MIDInote, int MIDIvelocity) {
  Serial.write(command);//send note on or note off command
  Serial.write(MIDInote);//send pitch data
  Serial.write(MIDIvelocity);//send velocity data
}


4.  observe that TX led blinks on UNO, serial monitor shows data coming across (although its gibberish)
       a.  In addition, using usblyzer, Bulk data transfers are logged. 
5.  disconnect USB cable from UNO
6.  connect Roland UM1 USB/MIDI cable to PC and to MIDI OUT of Olimex MIDI shield.
7.  connect 9v power supply to UNO
8.  Observe that TX led no longer lights up
         a.  although if I code the LEDs on the Olimex to light during main loop, they do indeed light.
9.  Using MIDI OX, selecting UM1 as the MIDI source, no MIDI data transmitted.  Close MIDI OX
10.  Using USBlyzer, select UM1 USB device,  No data comes over the wire.
11.  Volt meter shows 5v on MIDI OUT pins 4,5.
12.  5v on THRU pins, 4,5.

To test the UM1 USB/MIDI cable:
1.  connect UM1 to Korg ES1
2.  press play
3.  loads of MIDI data comes through MIDI OX and USBlyzer



The conclusion that I've reached is that the UNO, by itself, is transferring data across a standard usb cable to the PC/SerialMonitor/USBlyzer (or other port monitor app).  But when the MIDI shield is attached and the standard USB cable is not connected, no serial data is being sent. 

The question remains, how can I verify that serial data (MIDI data) is being send from the TX pin, out the MIDI OUT and across the wire?   I haven't ruled out that it's a mA issue, but that seems unlikely since others have reported the mA under load is about 2,5mA.  I'm not sure how to measure the mA using a standard multimeter, but I would doubt that I'd be able to detect it.   


deseipel

update:  I picked up some 5v 20mA LEDs and inserted into pin 4 &2 of the MIDI OUT DIN, ran a sketch and the LED blinks.  However I'm unable to read any mA's.  That could be my meter.  I am able to see the voltage drop using my meter.  So it would appear something going out the MIDI OUT DIN? 

deseipel

update2:  new fuse for my meter.  so Ive measured the mA on pins 4 & 5, it's right around 10mA. 

deseipel

Does anyone have any more ideas for this? 

marco_c

Sorry, none from me. It looks like the problem is between systems and I don't have any experience with your other stuff.
Arduino libraries http://arduinocode.codeplex.com
Parola for Arduino http://parola.codeplex.com

deseipel

question:  just a simple sketch to use pinMode to turn on D1 and D7 (led on Olimex board) at the same time and off at the same time :  yields strange result:  the LEDs are never on at the same time.

shown in video here

https://docs.google.com/file/d/0B98iPi66Ayy4QTFRQkdSQW9MSGs/edit

marco_c

Hard to tell if it is strange without seeing any code.
Arduino libraries http://arduinocode.codeplex.com
Parola for Arduino http://parola.codeplex.com

deseipel

Code: [Select]
int pinS = 1;  //Serial out pin
int pinF = 7;  //Flag out pin
int pinU = 13;  //Flag out pin

void setup()
{
  pinMode(pinS, OUTPUT);
  pinMode(pinF, OUTPUT);
  pinMode(pinU, OUTPUT);
}

void loop()
{
  digitalWrite(pinS, HIGH);
  digitalWrite(pinF, HIGH);
  digitalWrite(pinU, HIGH);
  delay(2000);
  digitalWrite(pinS, LOW);
  digitalWrite(pinF, LOW);
  digitalWrite(pinU, LOW);
  delay(2000);
}


sorry, it's been a long week fighting with this thing. 

deseipel

Hold the phone, another generous member here messaged me, and it turns out my LED is a "blinking LED".  So this isn't so strange after all. 

deseipel

update:  new, correct type of led inserted into pins 4 & 5 =  rapid fast blinks.   All this seems to say data is being sent.  This seems to indicate the issue is the MIDI/USB cable (Roland UM1)? 

deseipel

What if the mA range that is req'd for MIDI to work, isn't being reached?  According to this

http://www.personal.kent.edu/~sbirch/Music_Production/MP-II/MIDI/midi_physical_layer.htm

It has to be 5mA to work.  If I slow down the baud rate enough, would I be able to detect if it's hitting 5mA to 0mA? 


And for those still reading this saga:  check out oxmidi project.  could be useful.


Olimex finally contacted me and they weren't much help unfortunately.  They test these boards by connecting them to each other and sending MIDI back & forth.  I don't believe they even test these on MIDI devices!  grrr

marco_c

You can try sending a stream of 0 bytes out the port to measure the current. 0 is defined as 5 mA according to the article.
Arduino libraries http://arduinocode.codeplex.com
Parola for Arduino http://parola.codeplex.com

deseipel

does that mean that the 'rest-state' of MIDI should be 5mA? 

marco_c

Not sure what you mean by the 'rest state', but the '0' or 'off' signal is 5mA (which is not 'off' at all, but that is the way the hardware standard is defined), sort of inverse logic. I am sure there are good electrical/comms reasons to define it that way, but I don't know whatthey are.
Arduino libraries http://arduinocode.codeplex.com
Parola for Arduino http://parola.codeplex.com

deseipel

#29
Jan 23, 2013, 12:14 am Last Edit: Jan 23, 2013, 01:05 am by deseipel Reason: 1
On Olimex board,     7.3 mA on D1 & 5v supply: 

4.5mA on MIDI OUT DIN pins 4 &5. 

this is with my meter set on 2m.   Doesn't that seem low?  The running sketch is sending a midi note on and off.

note:  I could very well be reading my meter incorrectly.  I'm still learning

edit: I updated the readings after I realized the meter should be on 2m

Go Up