Can't figure this thing out (NHD-C12832A1Z-NSW-BBW-3V3)

Comments

8 comments

  • Alee_S

    Hi Duwaar,

    I'm sorry to hear you are experiencing issues with this display.

    For your convenience, I've linked some sample code that's been tested and verified to work for the NHD-C12832A1Z display. Please account for the difference in pin setups and see if this program works for you.

    /*
     * Copyright (c) 2018, Newhaven Display International
     *
     * This code is provided as an example only and is not guaranteed by Newhaven Display.
     * Newhaven Display accepts no responsibility for any issues resulting from its use.
     * The developer of the final application incorporating any parts of this
     * sample code is responsible for ensuring its safe and correct operation
     * and for any consequences resulting from its use.
     *
     * Program written for C12832A1Z Chip-On-Glass Display.
     * Code written for Arduino Uno.
     * Code written for Serial Interface.
     * User Vertical Orientation when converting BMP to hex code to display custom image using LCD assistant. 
    */

    /****************************************************
    *               Pinout on Arduino Uno               *
    *****************************************************/

    #define RES 8   //Reset signal
    #define CS  9   //Chip select signal
    #define RS 10   //Register select signal
    #define SC 11   //Serial clock signal
    #define SI 12   //Serial data signal

    /****************************************************
    *               Hex Table for Image Pic             *
    *****************************************************/

    unsigned char NHD_Logo [] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x38, 0x10, 0x90, 0x50,
    0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x00, 0xF0, 0x30, 0xC0, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x50,
    0x50, 0x50, 0x00, 0x00, 0x10, 0xF0, 0x00, 0xE0, 0x10, 0xC0, 0x80, 0x70, 0x00, 0x00, 0x00, 0xF0,
    0x40, 0x40, 0xF0, 0x00, 0x00, 0x80, 0xE0, 0x90, 0xE0, 0x80, 0x00, 0x00, 0x30, 0xE0, 0x00, 0xE0,
    0x30, 0x00, 0x00, 0xF0, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0xF0, 0x30, 0xC0, 0xF0, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x10, 0x10, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00,
    0x70, 0x50, 0x50, 0x50, 0xD0, 0x00, 0x00, 0x00, 0xF0, 0x50, 0x50, 0x70, 0x00, 0x00, 0x00, 0xF0,
    0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x90, 0xE0, 0x80, 0x00, 0x00, 0x30, 0xE0, 0x60, 0x30, 0x00,
    0x00, 0x70, 0x70, 0x60, 0x20, 0x22, 0x27, 0x27, 0x22, 0x22, 0x22, 0x12, 0x11, 0x09, 0x04, 0x02,
    0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01,
    0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
    0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
    0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
    0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
    0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    };

    unsigned char FMRadio [] = {
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xB7, 0xB7, 0xB7, 0xF7, 0xFF, 0x07,
    0xEF, 0x8F, 0xEF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xB7, 0xB7, 0xB7, 0x0F,
    0xFF, 0x3F, 0xBF, 0xBF, 0xBF, 0x3F, 0xFF, 0x3F, 0xBF, 0xBF, 0xBF, 0x07, 0xFF, 0xFF, 0xBF, 0x37,
    0xFF, 0xFF, 0xFF, 0x3F, 0xBF, 0xBF, 0xBF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xCF, 0x9F, 0xEF, 0x07, 0x0F, 0x7F, 0xBF, 0xBF, 0xBF,
    0x7F, 0xFF, 0x3F, 0x3F, 0xBF, 0xBF, 0x3F, 0x7F, 0x7F, 0xBF, 0xBF, 0xBF, 0x3F, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
    0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFC,
    0xFF, 0xFE, 0xFD, 0xFD, 0xFE, 0xFC, 0xFF, 0xCE, 0x85, 0xA5, 0xB5, 0x24, 0x6F, 0xFF, 0xBD, 0x34,
    0x35, 0xFF, 0xFF, 0x3E, 0x3D, 0xBD, 0x3D, 0x3E, 0x3F, 0x3F, 0x3F, 0xBF, 0xBF, 0x3F, 0x7F, 0x3F,
    0xBF, 0xBF, 0xBF, 0x3F, 0xFF, 0xFF, 0xF7, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x9F, 0x9F,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0x87, 0x97, 0x97, 0x37, 0x77, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xF8, 0xFE, 0xFC, 0xF9, 0xF9, 0xF9,
    0xFC, 0xFF, 0xF8, 0xFC, 0xFF, 0xFF, 0xF8, 0xFC, 0xFC, 0xF9, 0xF9, 0xF9, 0xFC, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0xFF, 0xFF, 0xFF, 0x7F, 0xBF, 0xBF, 0xBF, 0xBF, 0x7F, 0xFF, 0xFF,
    0x3F, 0x3F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xBF, 0xBF,
    0xBF, 0xBF, 0x3F, 0xFF, 0x3F, 0xBF, 0xBF, 0xBC, 0xBD, 0x3D, 0x7D, 0xFC, 0xFE, 0xFF, 0xFD, 0xFC,
    0xFC, 0xFF, 0x3F, 0xFC, 0xF4, 0xF5, 0xF0, 0xF8, 0xF8, 0xFC, 0xFC, 0xFF, 0xFF, 0xFC, 0xFC, 0xFC,
    0xFD, 0xFD, 0xFC, 0xFC, 0xFF, 0xFF, 0xFD, 0xFC, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFC, 0xFD,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFD, 0xFD, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xDF, 0xDF, 0xDF, 0xC0, 0xDF, 0xDF, 0xDF, 0xE0, 0x93, 0xD9, 0x9C, 0xDE, 0xE0, 0xFF, 0xDF,
    0xDF, 0xDF, 0xC0, 0xDF, 0xDF, 0xDF, 0xFF, 0xFF, 0xCF, 0xCF, 0xFF, 0xFF, 0xFF, 0xF8, 0xD3, 0xD3,
    0xD3, 0xD3, 0xE0, 0xFF, 0xFC, 0xD3, 0xD3, 0xD3, 0xD3, 0xE0, 0xFE, 0xC0, 0xC0, 0xFC, 0xC0, 0xFC,
    0xFC, 0xC1, 0xC0, 0xFC, 0xFC, 0xFC, 0xFC, 0xC1, 0xC3, 0xDD, 0xCD, 0xC5, 0xD1, 0xDD, 0xDC, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
    };

    /****************************************************
    *                 Function Commands                  *
    *****************************************************/

    void data_write(unsigned char d) //Data Output Serial Interface
    {
    unsigned int n;
    digitalWrite(CS, LOW);
    digitalWrite(RS, HIGH);
    for(n=0;n<8;n++){
    if((d&0x80)==0x80)
    digitalWrite(SI, HIGH);
    else
    digitalWrite(SI, LOW);
    while(0);
    d=(d<<1);
    digitalWrite(SC, LOW);
    while(0);
    digitalWrite(SC, HIGH);
    while(0);
    digitalWrite(SC, LOW);
    }
    digitalWrite(CS, HIGH);
    }


    void comm_write(unsigned char d) //Command Output Serial Interface
    {
    unsigned int n;
    digitalWrite(CS, LOW);
    digitalWrite(RS, LOW);
    for(n=0;n<8;n++){
    if((d&0x80)==0x80)
    digitalWrite(SI, HIGH);
    else
    digitalWrite(SI, LOW);
    while(0);
    d=(d<<1);
    digitalWrite(SC, LOW);
    while(0);
    digitalWrite(SC, HIGH);
    while(0);
    digitalWrite(SC, LOW);
    }
    digitalWrite(CS, HIGH);
    }


    void DispPic(unsigned char *lcd_string)
    {
      unsigned int i,j;
      unsigned char page = 0xB0;
      comm_write(0xAE);          //Display OFF
      comm_write(0x40);         //Display start address + 0x40
      for(i=0;i<4;i++){       //32pixel display / 8 pixels per page = 4 pages
        comm_write(page);       //send page address
        comm_write(0x10);       //column address upper 4 bits + 0x10
        comm_write(0x00);       //column address lower 4 bits + 0x00
        for(j=0;j<128;j++){     //128 columns wide
          data_write(*lcd_string);    //send picture data
          lcd_string++;
          }
          page++;         //after 128 columns, go to next page
          }
      comm_write(0xAF);   
     
    }

    void ClearLCD(unsigned char *lcd_string)
    {
        unsigned int i,j;
      unsigned char page = 0xB0;
      comm_write(0xAE);          //Display OFF
      comm_write(0x40);         //Display start address + 0x40
      for(i=0;i<4;i++){       //32pixel display / 8 pixels per page = 4 pages
        comm_write(page);       //send page address
        comm_write(0x10);       //column address upper 4 bits + 0x10
        comm_write(0x00);       //column address lower 4 bits + 0x00
        for(j=0;j<128;j++){     //128 columns wide
          data_write(0x00);    //send picture data
          lcd_string++;
          }
          page++;         //after 128 columns, go to next page
          }
      comm_write(0xAF);   
    }

    /****************************************************
    *           Initialization For controller           *
    *****************************************************/

    void init_LCD()  {
    comm_write(0xA0);   // ADC select
    comm_write(0xAE);   // Display OFF
    comm_write(0xC8);   // COM direction scan
    comm_write(0xA2);   // LCD bias set
    comm_write(0x2F);   // Power Control set
    comm_write(0x21);   // Resistor Ratio Set
    comm_write(0x81);   // Electronic Volume Command (set contrast) Double Btye: 1 of 2
    comm_write(0x20);   // Electronic Volume value (contrast value) Double Byte: 2 of 2
    comm_write(0xAF);   // Display ON
    }

    /*****************************************************
    *           Setup Function, to run once              *
    *****************************************************/

    void setup() {
      DDRD = 0xFF;          // configure PORTD as output
      pinMode(RES, OUTPUT); // configure RES as output
      pinMode(CS, OUTPUT);  // configure CS as output
      pinMode(RS, OUTPUT);  // configure RS as output
      pinMode(SC, OUTPUT);  // configure SC as output
      pinMode(SI, OUTPUT);  // configure SI as output
      digitalWrite(RES, LOW);           
      delay(100);                     
      digitalWrite(RES, HIGH);           
      delay(100);
      init_LCD();     
    }

    /*****************************************************
    *           Loop Function, to run repeatedly         *
    *****************************************************/

    void loop() {
    delay(10);   
    while(1)
    {
        DispPic(NHD_Logo);
        delay(500);
        ClearLCD(NHD_Logo);
        delay(500);

        DispPic(FMRadio);
        delay(500);
        ClearLCD(FMRadio);
        delay(500);
    }
    }

    If this program doesn't work for you, may you please share your measured voltage readings across Pins 1-5 (V0-V4) and Pin 10 (Vout)? Can you also share your capacitor values being used in your setup?

    0
  • duwaar

    It looks like maybe something is happening, but whatever the display is doing is so faint that I can't make it out.
    The voltage between pin 1 and pin 5 is around 150mV at first, but it falls as long as I am measuring it.
    The voltage between ground and pin 10 is consistently 2.96V.
    All the capacitors I'm using are 1uF.

    0
  • Alee_S

    Hi Duwaar,

    I should have clarified; I meant to ask if you can check the voltages across Pin 1-5 with respect to GND. Sorry about the confusion.
    Also, I've tested and verified this program to work here at the lab recently, but your Vout reading of 2.96V is pretty low, and is not enough for the displays proper contrast.

    Can you verify if your hardware connections are secure and proper per the displays schematic?
    If you'd like, you may also provide us your schematic for review.

    Also, please note that the contrast is software adjustable, and can be done using the 2nd byte for "Electronic Volume value" in the initialization function. Please try increasing that value wihile keeping it within its constraints (0x00 - 0x3F) and see if the display behaves differently. You may also moniter Pin 10 with respect to GND when doing so, for a better indication of any change.

    /****************************************************
    *           Initialization For controller           *
    *****************************************************/

    void init_LCD()  {
    comm_write(0xA0);   // ADC select
    comm_write(0xAE);   // Display OFF
    comm_write(0xC8);   // COM direction scan
    comm_write(0xA2);   // LCD bias set
    comm_write(0x2F);   // Power Control set
    comm_write(0x21);   // Resistor Ratio Set
    comm_write(0x81);   // Electronic Volume Command (set contrast) Double Btye: 1 of 2
    comm_write(0x20);   // Electronic Volume value (contrast value) Double Byte: 2 of 2
    comm_write(0xAF);   // Display ON
    }

    https://newhavendisplay.com/content/specs/NHD-C12832A1Z-NSW-BBW-3V3.pdf

    0
  • duwaar

    Ok, here are the voltages on pins 1 through 5:
    p1:   15 mV
    p2: 163 mV
    p3: 140 mV
    p4:   27 mV
    p5: 150 mV

    I have checked and double-checked the wiring. I have the thing wired up exactly according to the diagram on the datasheet.

    I have messed with the software-defined contrast setting, but didn't get any visible change.

    I have also read the datasheet, but it is confusing. In the section describing the control protocol, not only are the register select pin (A0) and the data bits specified, but there is also mention of two extra pins, /RD and /WR, which are not on my device. Also, on page 5 of the datasheet, on the "electrical characteristics" table, there is a parameter called "Supply for LCD (contrast)" which is 6 V. What is that? I don't see 6 V anywhere else on the datasheet.

    0
  • Alee_S

    Hi Duwaar,

    Please note the ST7565 controller is capable of supporting both parallel and serial interface, and the /RD & /WR pins are used for 8080 parallel mode interface. However, our display only has the serial interface pins brought out to the user from the controller, so this display can only operate in serial mode. As a result, you may disregard the /RD & /WR pins for your application.

    The "supply for LCD (contrast)" is the Voltage value needed for the LCD glass itself, and the 6V is generated by the voltage-booster circuit. However based on your Pins1-5 and Pin 10 measurements, these are low readings and indicate the display is not receiving its necessary voltages.

    Do you have more than 1 display available to test? If so, have you seen the same results from those as well?
    Do you also have more testers available to test these displays?

    0
  • duwaar

    I only have one display and one Arduino. There are several multimeters in the lab here, but I doubt that is the problem.

    I am powering the display from the Arduino's 3v3 pin, but it looks like the little regulator behind that can only put out 50 mA max. Should that be enough?
    I am powering the backlight with that same 3v3 pin. Could I possibly power the backlight from the 5v pin instead?

    0
  • Alee_S

    Hi Duwaar,

    Yes, the max current output from the regulator should be sufficient, as this display requires a max of 1mA to operate.
    The backlights shouldn't be powered with the 5V pin either, as its rated for 3.3V operation only.

    Since you are still seeing low voltages across Vout and V1-V5, this indicates the voltage-booster circuit isn't properly activating.
    Can you verify that you have changed the pin locations from your setup on the Arduino to match with the code I've provided? 

    /****************************************************
    *               Pinout on Arduino Uno               *
    *****************************************************/

    #define RES 8   //Reset signal
    #define CS  9   //Chip select signal
    #define RS 10   //Register select signal
    #define SC 11   //Serial clock signal
    #define SI 12   //Serial data signal

    Can you also clarify if you are using electrolytic capacitors, and provide an image of your setup if so? Or are you utilizing non-polarized capacitors?

    Perhaps you may also be interested our NHD-PCB12832A1Z; a PCB specifically designed with the necessary capacitors and a current-limiting resistor on-board for this display. This would be an ideal part to use simultaneously for optimal prototyping.


    PCB Overview: https://newhavendisplay.com/thru-hole-breakout-board-for-128x32-a1z-cog/

    0
  • HalKiehn
    Yes, the max current output from the regulator should be sufficient, as this display requires a max of 1mA to operate.
    The backlights shouldn't be powered with the 5V pin either, as its rated for 3.3V operation only.

    Since you are still seeing low voltages across Vout and V1-V5, this indicates the voltage-booster circuit isn't properly activating.
    Can you verify that you have changed the pin locations from your setup on the Arduino to match with the code I've provided? 

    Thanks for this. This worked exactly as expected.

    1

Please sign in to leave a comment.