Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - DataL

Pages: [1]
1
OLEDs / Re: NHD-0420CW-AB3-ND Display variables
« on: January 22, 2018, 04:59:53 PM »
And after much struggling, here is how to display an array of strings that have been saved in PROGMEM:

Code: [Select]
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
}   }   }

2
OLEDs / Re: NHD-0420CW-AB3-ND Display variables
« on: January 18, 2018, 06:41:38 AM »
For anybody trying to solve this issue in the future:

Code: [Select]
// 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
}


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: [Select]
// 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.
}

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

3
OLEDs / Re: NHD-0420CW-AB3-ND Display variables
« on: January 13, 2018, 04:05:57 PM »
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.

Pages: [1]