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