Eine Grafik auf dem 5110 LCD Display ausgeben

Auf dem Nokia 5110 LCD Display soll eine Grafik ausgegeben werden. Später soll ein Frequenzspektrum dargestellt werden, vorerst werde ich aber Zufallszahlen verwenden und darstellen, was dann wie ein Rausch Spektrum aussieht.

Eine schöne Grafik Library für den Arduino hat Henning Karlsen hier bereit gestellt.

Die Anschlüsse:
Ich habe hier eine 5V Daten kompatible Version. Normalerweise wird aber ein Daten-Spannungsumsetzer von 5V > 3,3V in die Datenleitungen geschaltet, da das Display nur für 3,3V Datenpegel ausgelegt ist.
Pin 8 > Clk
Pin 9 > Din
Pin 10 > DC
Pin 11 > RST
Pin 12 > CE
5V > Vcc
3,3V > BL Beleuchtung

spektrum-rauschen-uno-1000

Das Programm:

// 5110 LCD Grafik Spektrum
// LCD Grafik Library von: http://www.rinkydinkelectronics.com/library.php?id=47
//
// von Matthias Busse 14.4.2015 Version 1.0

#include < LCD5110_Graph.h> // Leerzeichen entfernen < _ LCD...
LCD5110 lcd(8,9,10,11,12);
extern uint8_t SmallFont[];

int i, k, l, glinks=14, grechts=glinks+63, goben=9, gunten=39, skalenteil;

void setup() {
  lcd.InitLCD(60);
  lcd.setFont(SmallFont);
  lcd.clrScr();
  lcd.print("Spektrum", CENTER, 0);
  lcd.print("Version 1.0", CENTER, 15);
  lcd.print("Matthias Busse", CENTER, 30);
  lcd.update();
  delay(2000);
  lcd.clrScr();
}

void loop() {
  lcd.drawLine(glinks,gunten,grechts,gunten); // Linie unten
  lcd.print("0", glinks-3, 41);  // Beschriftung unten
  lcd.print("Hz", CENTER, 41);
  lcd.print("2520", RIGHT, 41);
  
  dotLineVert(glinks,goben,gunten); // Senkrechte Linie links
  dotLineVert(grechts,goben,gunten); // Senkrechte Linie rechts
  skalenteil = (gunten-goben)/5;

  i=gunten-(5*skalenteil);
  dotLineHor(glinks,grechts,i);     // Punktlinie horizontal
  
  i=gunten-(4*skalenteil);
  lcd.print("40", 0, i-3); // Beschriftung links
  dotLineHor(glinks,grechts,i);     // Punktlinie horizontal

  i=gunten-(3*skalenteil);
  dotLineHor(glinks,grechts,i);     // Punktlinie horizontal
  
  i=gunten-(2*skalenteil);
  lcd.print("20", 0, i-3); // Beschriftung links
  dotLineHor(glinks,grechts,i);     // Punktlinie horizontal

  i=gunten-(1*skalenteil);
  dotLineHor(glinks,grechts,i);     // Punktlinie horizontal

  l=0;
  for(i=glinks; i < grechts; i++) {
    k=random(1, gunten-goben);
    lcd.drawLine(i,gunten-l,i+1,gunten-k);
    l=k;
  }
  lcd.print("PF",0,0);
  lcd.print("PA",42,0);
  lcd.update();
  delay(2000);
  lcd.clrScr();
}

void dotLineHor(int x1, int x2, int y) {
// Punktierte waagerechte Linie zeichnen
int m, n=0;
  for(m=x1; m < x2; m++) {
    if((n%3) == 0) lcd.setPixel(m,y);
    n++;
  }
}  

void dotLineVert(int x, int y1, int y2) {
// Punktierte senkrechte Linie zeichnen
int m, n=0;
  for(m=y1; m < y2; m++) {
    if((n%3) == 0) lcd.setPixel(x,m);
    n++;
  }
}

verwendet wurde
Hardware: Arduino Uno R3, Nokia 5110 Display 5V kompatibel
Software: Arduino 1.6.1

von Matthias Busse

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.