SSD1283A display driver

Hi folks. I am working on a project where I display the airspeed and altitude of a radio control model aircraft on a low cost 1.6"Transflective Display. The display is mounted in the cockpit of the plane and a wireless HD video camera is used to fly the aircraft. In the rc hobby this is called "fpv" or first person view.
The transflective lcd works great out in the sunlight and it does not get washed out. The problem is the display is too close to the camera lens for proper focus. I found that using a mirror in effect doubles the focused length and it looks very sharp on the camera. But the image is now reversed. So I need the driver chip to mirror the image to straighten things up.
I know it is a long explanation. lol
I am not able to decipher the data sheet for the SSD1283A. I believe that is where the solution lies.
thanks..

Please quote the name of the SSD1283 library that you are using (if it was installed via the IDE Library Manager)
Or post a link to the SSD1283 library if it is "unknown".
If in doubt, just copy-paste the #include lines from the top of your sketch.

Please say which orientation. e.g. header pins at top.

It is very easy to change directions on a TFT. When I know which library, I can post the correct line to add to your setup().

David.

Thanks David. I was so hoping it would be you who replied to my question as I have read many of your posts.
The library and examples I worked from is.
//get the libraries from GitHub - ZinggJM/SSD1283A: SSD1283A for Arduino
The actual display.
//get the display from 1.6 Inch OLED 1.6" TFT IPS OLED Transflective Display Module LCD Display DIY SPI Serial Port 130*130 Communicate for Arduino|LCD Modules| - AliExpress

And I have rotated the display 90deg so the pins are on the right side of the board.

tp

From the library SSD1283A.cpp

void SSD1283A::setRotation(uint8_t r)
{
  ...
  switch (_rotation)
  {
    // reg(0x01) bit RL 0x0100 doesn't work
    case 0:
      _writeCommandData16(0x01, _inversion_bit | 0x2183);
      _writeCommandData16(0x03, 0x6830);
      break;
    case 1:
      _writeCommandData16(0x01, _inversion_bit | 0x2283);
      _writeCommandData16(0x03, 0x6808);
      break;
    case 2:
      _writeCommandData16(0x01, _inversion_bit | 0x2183);
      _writeCommandData16(0x03, 0x6800);
      break;
    case 3:
      _writeCommandData16(0x01, _inversion_bit | 0x2283);
      _writeCommandData16(0x03, 0x6838);
      break;
  }
  ...
}

Default rotation(0) is always Portrait. TB means Top_to_Bottom. RL means Right_to-_Left
Since you are rotated 90 degrees that means you want to change the TB bit when you mirror horizontally.

Since you are not allowed to write commands, you will need to alter the case 1: statements from the CPP file

  private:
    ...
    void _writeCommandData16(uint8_t cmd, uint16_t data);
    ...

I see that Jean-Marc has a note about RL not working. I will dig out a SSD1283 display and try it first. Then post what to alter later this evening.

David.

EDIT. I forked Jean-Marc's library and ran it on a SSD1283A display (like yours)
If your header pins are on the right side, you must be using rotation(3)
Change the following case 3:
This makes text horizontally mirrored.

    case 3:
      _writeCommandData16(0x01, _inversion_bit | 0x2083); //was 0x2283
      _writeCommandData16(0x03, 0x6838);
      break;
1 Like

Incredible !
That solves my problem..
Thank you A +++++++
tp