Arduino Projekt 27 soll eine Temperaturkurve auf ein LCD Grafikmodul zaubern und dieser Artikel zeigt wie es geht…

Vorbereitungen:

Für dieses Projekt werden folgende Bauteile benötigt:

Die Pinbelegung des Grafikmoduls sollte dem Datenblatt entnommen werden. Um den Anschluss des Displays an die Steckplatine zu vereinfachen, wird die Stiftleiste angelötet.

Schaltungsaufbau:

Die Verkabelung habe ich nach dem Datenblatt meines Grafikmoduls 13B36 vorgenommen und der mitgelieferten openGLCD Dokumentation.

Der Spannungsausgang des TMP36 kommt an den Analogeingang des Arduino und Ground natürlich an Ground. Der (linke) Anschluss wird mit dem 5-Volt-Ausgang des Arduino verbunden.

Programmierung:

#include <openGLCD.h>
#include "fonts/SystemFont5x7.h"

int tcurrent;
int tempArray[100];

void setup()
{
GLCD.Init(NON_INVERTED);
GLCD.ClearScreen();
GLCD.SelectFont(System5x7);
}

void getTemp() //Liest die Temperatur vom TMP36
{
float sum = 0;
float voltage = 0;
float sensor = 0;
float celsius;

sensor = analogRead(5);
voltage = (sensor * 5000) / 1024;
voltage = voltage - 500;
celsius = voltage / 10;
tcurrent = int(celsius);

for (int a = 99 ; a >= 0 ; --a )
{
tempArray[a] = tempArray[a-1];
}
tempArray[0] = tcurrent;
}


void drawScreen()
{
int q;
GLCD.ClearScreen();
GLCD.CursorTo(5, 0);
GLCD.Puts("Current:");
GLCD.PrintNumber(tcurrent);
GLCD.CursorTo(0, 1);
GLCD.PrintNumber(40);

GLCD.CursorTo(0, 2);
GLCD.PrintNumber(32);

GLCD.CursorTo(0, 3);
GLCD.PrintNumber(24);

GLCD.CursorTo(0, 4);
GLCD.PrintNumber(16);

GLCD.CursorTo(1, 5);
GLCD.PrintNumber(8);

GLCD.CursorTo(1, 6);
GLCD.PrintNumber(0);

for (int a = 28; a < 127; a++)
{
q = (55 - tempArray[a-28]);
GLCD.SetDot(a, q, BLACK);
}

}

void loop()
{
getTemp();
drawScreen();
for (int a = 0; a <20; a++)
{
delay(60000);
}
}

Von Torsten