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.


Topics - wb2dyb

Pages: [1]
1
OLEDs / NHD0420CW-A*3 tHREE LINE MODE, MIDDLE LINE DOUBLE HEIGHT
« on: April 12, 2015, 11:58:47 PM »
Well, learned more but really having trouble figuring out the command structure. And have a display lash up on the desk, and keep fiddling with codes and cannot seem to figure out the three line mode with the two middle lines of the display serving as one double height line. I think, but not certain, that I just cannot figure out how to manipulate the IS and RE bits. And when I try what I think should work, it doesn't.

Has anybody been able to do this? I stumbled into it by accident, thought I had it, but as soon as I power cycled the thing it went to plain old 3 line mode. If I hit Arduino reset it comes back where I want it. What I'm looking to do is exactly as shown in the US2066 data page 37 table 7-2, second image down.

Then there is the table in 7-1 where the UD1 bit is shown as 1 for what I'm looking to do. But the instructions clearly states just above the images that UD1=0 is forbidden in 3 line mode. the first image shows UD1=0, and it is a 3 line display.

As I manipulate these bits I never see a particular bit doing what is shown in this data.

My code:

#include "Wire.h"
#include "OLedI2C.h"
#include "SoftReset.h"
OLedI2C LCD;

void setup()
{
  Wire.begin();
  LCD.init();
 
}
void loop()
{
     /////LCD.sendCommand(B00101010);
     LCD.sendCommand(B00101100); //0100 and 1100 wok
     
/////LCD.sendCommand(B00101110);
  //LCD.sendCommand(B00101000);
   // LCD.sendCommand(B00101010);
  //LCD.sendCommand(B00010000);
  /////LCD.sendCommand(B00101010); //function setset re=1 is=0 3/4 line"
/////LCD.sendCommand(B00101110);
  //LCD.sendCommand(B00001001);  //display on
  LCD.sendCommand(B00101010);
  LCD.sendCommand(B00010101); //3 line format if is=0 & re=1
 

  //LCD.cursPos(1,0);
  //LCD.sendData(00);
 
  delay(100);

 
  LCD.sendString("FREQ  USB  NB  SQ   ",0,0);
  LCD.sendString("14.300.00           ",0,1);
 
  LCD.sendString("RXTX BAND  SQ  DSP >",0,2);
 //LCD.sendString("04",0,3);
  while(1);
}



_______________________________________________

Anything like a command cheat sheet?

Thanks, everyone.

GeorgeC

2
OLEDs / Library that works fine on the NHD-0420CW-A*3
« on: March 16, 2015, 11:23:21 PM »
I found a library that works very nicely with the 420CW displays.

https://github.com/gadjet/1602-OLED-Arduino-Library/blob/master/OLedI2C.cpp

There is one modification needed,

original:
 void OLedI2C::cursPos(uint8_t col, uint8_t row)
 {
 int row_offsets[] = { 0x00, 0x20};
 sendCommand(0x80 | (col + row_offsets[row]));
 }
 
The above works fine with two lines.

For four lines:

 void OLedI2C::cursPos(uint8_t col, uint8_t row)
 {
 int row_offsets[] = { 0x00, 0x20, 0x40, 0x60 };//**************THIS WAS THE CHANGE FOR 4 LINES
 sendCommand(0x80 | (col + row_offsets[row])); //was 0x80
 }
 

And the init has an error:

original:


 // **** Set OLED Characterization *** //
sendCommand(0x2A); // **** Set "RE"=1
sendCommand(0x79); // **** Set "SD"=1
// **** CGROM/CGRAM Management *** //
sendCommand(0x72); // **** Set ROM
sendCommand(0x00); // **** Set ROM A and 8 CGRAM

needed this change:

 // **** CGROM/CGRAM Management *** //
 sendCommand(0x72);     // **** Set ROM
 sendData(B00000011);     // **** Set ROM A and 8 CGRAM This selects CGROM A, 00000000 selects CGROM C
 // **** Set OLED Characterization *** //
 sendCommand(0x2A);     // **** Set "RE"=1
 sendCommand(0x79);     // **** Set "SD"=1

The only missing function, at least one I'd like to see is a custom character. Most controllers allow for this, and the NHD420CW does. Just not in this library. And I speak entirely about Arduino Uno. But it is doing what I needed, with the exception of needing 8 custom characters I need to represent with letters. I tried adding it but while I think I got the character creation right, for all I've looked, I cannot see how to select a custom character (anybody give me a pointer on THAT??

GeorgeC



3
OLEDs / Need help/wisdom using the new NHD-0420CW-xxx
« on: February 08, 2015, 02:24:12 AM »
Hi everyone. This new display is so much what I needed for a project. I have been using a Noritake Character VFD which proved to be too delicate and large, then one of the many SD1322 2.8" Graphic Oled display, which almost fit, but the Atmel 328 that it runs on just struggles and as a result the display will sometimes update very slowly after a command is given to the remote gear it talks to sends a reply. But it was the best I could do. So I bought a couple of the new NHD-0420CW devices from Mouser. And since it did SPI, and since the commands for the VFD looked identical to the NHD unit I figured it to be a drop in on a unit that was using the VFD version. But I can't get that to work. I first make this all work on an Arduino Uno then move that processor to the target hardware .

I probably have ten or more hours in on this already. Trying various LCD SPI sample programs. Cant find anything for the US2066 or the KS0066, which is supposedly the same. But since I compared US2066 instructions to the Noritake and others I figured it ought to work. I have tried SPI (what I need) then I2C.

Can anybody point me at sample code and driver for arduino for this? Should it work with something like the VFD code?

I really appreciate any input on this as I need to get back to my life and my day job. And this is the second night I'm up to 2:30 on this...

Thanks folks.

George Csahanin
Austin, TX

Pages: [1]