Newhaven Products > OLEDs

NHD-0420CW-AB3-ND Display variables

(1/1)

homerjay:
Hello,

I'm trying to display some sensor variables along with some static text for the labels. Something like this...

--- Code: ---Temperature        xx.xC
Humidity           xx.x%
--- End code ---

For reference my sensor is a DHT11.

My controller is an arduino UNO connected to the display via SPI and so far I've only been able to modify the code found here to simply change the text and include the DHT11 sensor. I am having a hard time understanding how I send data to the display. I'm a beginner with the arduino so I am only familiar with the standard LCD library commands, such as LCD.print, LCD.setcursor, etc. none of which work here it would seem. The way that this display gets its data is kind of foreign to me. If someone could perhaps show some example code for writing a variable or perhaps point me in the right direction for some reading on how to accomplish this that would be awesome.

Thank you so much for your time,
Homerjay

P.S. did anyone else experience artifacts followed by eventual freezing with this display when connected via I2C using the I2C example code?

DataL:
Hi Homerjay,

Did you find a solution to your question?

I have found myself in exactly the same boat. It's a steep learning curve!

I haven't tried I2C just yet.

DataL:
For anybody trying to solve this issue in the future:


--- Code: ---// global variables
char textbuffer[21];         // 20 characters plus the end marker
const int value1Pin = A0;    // sensor 1 input
int Value1;                  // sensor 1 value

void output(void);
{
   Value1 = analogRead(value1Pin);      // Capture the value of the pin
   snprintf (textbuffer1, 21, "Value 1 =  %d   ", Value1);  // Where "Value 1 = " may be any text, and %d means insert the variable after the comma (Value 1)

   r= 0;                                    // For line 1 only ("1" for line 2, "2" for 3 etc)
      command(new_line[r]);                 // Moves the cursor to the first column of that line
      for (c=0; c<COLUMN_N; c++)  {         // One character at a time,
        data(textbuffer1[c]);  }            // Displays the corresponding string
}
--- End code ---


If you want to place two values per line or add a unit like "C" or "PSI" after the value, and don't want the second string dancing around as the first changes in size (eg; "99" to "100"):


--- Code: ---// Not forgetting these:
const int value2Pin = A1;    // sensor 2 input
int Value2;                  // sensor 2 value

void output(void);
{
   Value2 = analogRead(value2Pin);                          // Capture the value of the pin
   snprintf (textbuffer1, 21, "Val1= %d   ", Value1);       // As above
   snprintf (textbuffer1+10, 21-10, "Val2= %d   ", Value2); // Where textbuffer1+10 starts this addition to the buffer at character 11, 21-10 means it only adds 11 characters from this position.
}
--- End code ---

With many thanks for the good folk on forum.arduino.cc

DataL:
And after much struggling, here is how to display an array of strings that have been saved in PROGMEM:


--- Code: ---const char welcome0[21] PROGMEM = "X     Arduino      X";
const char welcome1[21] PROGMEM = "        Uno         ";
const char welcome2[21] PROGMEM = "        with        ";
const char welcome3[21] PROGMEM = "X    NHD-0420-CW   X";
const char* const welcometable[] PROGMEM = {welcome0, welcome1, welcome2, welcome3};
char welcome[21];

void LCDwelcome()  {
  Serial.println(F("Arduino Uno with NHD-0420-CW"));
  byte r = 0;                         // Row index
  byte c = 0;                         // Column index
  command(0x01);                      // Clears display (and cursor home)
  delay(2);                           // After a clear display, a minimum pause of 1-2 ms is required
    for (int r = 0; r < 4; r++)  {
      strcpy_P(welcome, (char*)pgm_read_word(&(welcometable[r])));
        command(new_line[r]);            // Moves the cursor to the first column of line [i]
        for (c=0; c<COLUMN_N; c++)  {    // One character at a time,
          data(welcome[c]);              // Displays the corresponding string
}   }   }
--- End code ---

Navigation

[0] Message Index

Go to full version