Mega and I2C display

I'm trying to connect my brand new Arduino Mega to a MatrixOrbital display via i2c. The display is connected to pins 20/21 on the arduino and I use no (extra) pullups. The display is not powered from the arduino board, but the grounds are connected.

int main(int argc, char** argv) {
      init();
      Wire.begin();

      Wire.beginTransmission(0x5c);
      Wire.send('a');
      Wire.endTransmission();

      for(;;) {
      }
}

This should print an 'a' on the display, but nothing happens. Any ideas? This is my first arduino project...

PS The manual for the display is here; I’d appreciate if you took a look to see if I missed anything obvious. http://www.matrixorbital.ca/manuals/LCDVFD_series/VFD2041/VFD2041_110.pdf

The wire library expects a 7-bit address (the rightmost bit is managed by the library) whereas the documentation you referenced list 8-bit addresses. To properly address your display you need to change your code as follows:

                Wire.beginTransmission(0x5c >> 1);
      Wire.send('a');
      Wire.endTransmission();

You may also want to change the structure of your application to match the Arduino convention (no main) as follows:

void setup() {
      Wire.begin();

      Wire.beginTransmission(0x5c >> 1);
      Wire.send('a');
      Wire.endTransmission();

}

void loop() {
}

and I use no (extra) pullups

The internal pullups are only about 30K, while you can get it to work most of the time the waveforms look awful. You need 4K7 pullups on both lines.