PDSP1883 (OSRAM)

PDSP188x


Připojení k Arduinu

Pin PDSP1883Název pinu PDSP1883Pin Arduino
1RSTA0
2FL5V
3A0A2
4A1A3
5A2A4
6A3A5
7NC
8NC
9NC
10A45V
11CLS5V
12CLK
13WRA1
14CE10
15VCC5V
16GNDGND
17NC
18Logic GNDGND
19RD11
20D00
21D11
22NC
23NC
24NC
25D22
26D33
27D44
28D55
29D66
30D77

Zdrojový kód pro Arduino

/*
Original code www.josvandijken.nl
Based on the code from: Matt Joyce < matt at nycresistor.com >
                        Mark Tabry
*/
int RST   = A0;
int WR    = A1;
int CE    = 10;
int RD    = 11;
int AD0   = A2;
int AD1   = A3;
int AD2   = A4;
int AD3   = A5;
int D0    = 0;
int D1    = 1;
int D2    = 2;
int D3    = 3;
int D4    = 4;
int D5    = 5;
int D6    = 6;
int D7    = 7;
int incomingByte = 0;

void setup()
{
  pinMode(RST    , OUTPUT);
  pinMode(WR     , OUTPUT);
  pinMode(CE     , OUTPUT);
  pinMode(RD     , OUTPUT);
  pinMode(AD0    , OUTPUT);
  pinMode(AD1    , OUTPUT);
  pinMode(AD2    , OUTPUT);
  pinMode(AD3    , OUTPUT);
  pinMode(D0     , OUTPUT);
  pinMode(D1     , OUTPUT);
  pinMode(D2     , OUTPUT);
  pinMode(D3     , OUTPUT);
  pinMode(D4     , OUTPUT);
  pinMode(D5     , OUTPUT);
  pinMode(D6     , OUTPUT);
  pinMode(D7     , OUTPUT);
  digitalWrite(CE, HIGH);
  digitalWrite(WR, HIGH);
  resetDisplay();
}

void resetDisplay()
{
  digitalWrite(RST, LOW);
  delayMicroseconds(1);
  digitalWrite(RST, HIGH);
  delayMicroseconds(150);
  digitalWrite(AD3, HIGH);
}

void writeDisplay(char *input)
{
  for (int i = 0; i < 8; i++)
  {
    digitalWrite(AD0, (1 & i) != 0 ? HIGH : LOW);
    digitalWrite(AD1, (2 & i) != 0 ? HIGH : LOW);
    digitalWrite(AD2, (4 & i) != 0 ? HIGH : LOW);
    PORTD = input[i];
    delay(1);
    digitalWrite(CE, LOW);
    delay(1);
    digitalWrite(WR, LOW);
    delay(1);
    digitalWrite(WR, HIGH);
    delay(1);
    digitalWrite(CE, HIGH);
    delay(1);
  }
}

void scrollDisplay(char *words)
{
  char buffer[9];
  int i = 0;
  while (words[i] != 0)
  {
    boolean blank = false;
    for (int j = 0; j < 8; j++)
    {
      if ( !blank && words[i + j] == 0 )
      {
        blank = true;
      }
      if ( blank )
      {
        buffer[j] = ' ';
      }
      else
      {
        buffer[j] = words[i + j];
      }
    }
    buffer[8] = 0;
    writeDisplay(buffer);
    delay(200);
    i++;
  }
}

void loop()
{
  char intro[] = "        PDSP1883 DEMO ";
  scrollDisplay(intro);
}

Demo video


Leave a Reply