Samsung VFD display 16x1

Hi,

New here, but i have got the arduino working for some of my samsung VFD display's using the library from Samsung_16LF01_VFD. The OKI C1937 based variant is working great, but I also have a OKI M9202 chip based which i cannot get to work. It is probably the library that has a different set of instructions for the C1937, both work with the SPI protocol and utilize the same connections. Anyone know more about this?

i'm using these displays to test:
Samsung 16LF01UA4, 16LF01UA3 working (OKI C1937)
datasheet C1937

Samsung 16L102DA4 not working (OKI M9202)
datasheet 16L102DA4
datasheet M9202

1 Like

Why don't you post some links to the specs or data sheets of these displays, that might be helpful. If you don't have those, maybe some photos, including close-ups of the major chips so that the part codes can be read.

A simple google search would have come up with that but sure, i've added them :wink:

Ok, I see. The OKI C1937 chip drives a display containing 16x 16-segment characters. The OKI M9202 drives a 16x 5x7 matrix characters. So maybe no surprise the same library doesn't work with both.

The OKI M9202 has more in common with HD44780 driver for the 16x2 and 20x4 LCD matrix displays used in many arduino projects. But I doubt the library for those displays will work with the OKI M9202 either.

Flipping through the data sheet for the OKI M9202, it doesn't look too difficult. Should be possible to drive without a library, I think.

When I did not mess something up, this should print something on the display:

#include <SPI.h>

const int pinCS = 10;

void sendData(uint8_t reg, uint8_t *data = nullptr, uint8_t len = 0) {
  SPI.beginTransaction(SPISettings(1000000, LSBFIRST, SPI_MODE3));
  digitalWrite(pinCS, LOW);

  SPI.transfer(reg);
  for (uint8_t x = 0; x < len; x++) {
    SPI.transfer(data[x]);
  }

  digitalWrite(pinCS, HIGH);
  SPI.endTransaction();
}

void setup() {
  pinMode(pinCS, OUTPUT);
  digitalWrite(pinCS, HIGH);

  SPI.begin();

  sendData(0x60);
  sendData(0x57);
  uint8_t data[1] = {0x00};
  sendData(0x30, data, sizeof(data));
  sendData(0x70);

  uint8_t text[] = "something";
  sendData(0x10, text, sizeof(text));
}

void loop() {
}

It does give me something :grinning: :

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.