×

Please see all COVID-19 updates here as some shipments may be delayed due to CDC safety and staffing guidelines. If you have an order or shipping question please refer to our Customer Support page. For technical questions please check out our Forums. Thank you for your continued support.

Member #670194

Member Since: April 7, 2015

Country: United States

  • I just made a Arduino code for this display. I enabled serial mode by changing the jumpers on the back. 3-PIN SPI serial mode can be enabled by: * Removing the L_CS_H 0-ohm resistor and placing it on JCS * Moving L_PS_H from PS_H to PS_L

    The datasheet for the RS0010 is really bad and I had a few problems along the way. But the display looks really nice, crisp, clear and fast. It is also dimmable in one step. By disabling the DC-DC converter in software the light output is quite low but nice in low light conditions. I used the datashet from newhaven tp find jumper settings. http://www.newhavendisplay.com/specs/NHD-0216KZW-AY5.pdf And the dataheet from electronic assembly for more detailed reference. It is much better formatted. http://www.lcd-module.de/fileadmin/eng/pdf/doma/olede.pdf

    All these displays are essentially the same.

    The code below is just a crude test that works. Some more testing on clock phase and timing should be done.

    const int SS_pin = 8; // connect to OLED pin 16 const int SCK_pin = 13; // connect to pin OLED 12 const int MISO_pin = 12; // can be connected to OLED 13 (not tested) const int MOSI_pin = 11; // connect to pin OLED 14

    void setup() { //OLED digitalWrite(SCK_pin, HIGH); // SCK high digitalWrite(SS, HIGH); // Start with SS high pinMode(SS_pin, OUTPUT); pinMode(SCK_pin, OUTPUT); pinMode(MISO_pin, INPUT); pinMode(MOSI_pin, OUTPUT); // Init of SERIAL OLED returnValue = bitBang(0,0x39); // Transmit data returnValue = bitBang(0,0x08); // Transmit data returnValue = bitBang(0,0x06); // Transmit data returnValue = bitBang(0,0x17); // Transmit data returnValue = bitBang(0,0x01); // Transmit data returnValue = bitBang(0,0x02); // Transmit data returnValue = bitBang(0,0x0C); // Transmit data }

    byte bitBang(byte control, byte data) // This function is what bitbangs the data { digitalWrite(SCK_pin, HIGH); // SCK high digitalWrite(SS_pin, LOW); // SS low byte _receive = 0; int _send=(control*256)+data;

    for(int i=9; i>= 0; i--) // I want to send 10 bits. The 6 MSB are removed { digitalWrite(MOSI_pin, bitRead(_send, i)); // Set MOSI delayMicroseconds(5); digitalWrite(SCK_pin, LOW); // SCK high bitWrite(_receive, i, digitalRead(MISO_pin)); // Capture MISO digitalWrite(SCK_pin, HIGH); // SCK low delayMicroseconds(5); } digitalWrite(SS_pin, HIGH); // SS high again return _receive; // Return the received data }

No public wish lists :(