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
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

