Hallo,
ich möchte für das Touch-LCD MIO283QT-2 von Watterott eine eigene Ergänzungs-Library schreiben.
Damit meine ich, die originale Lib "lcd" und meine eigene Lib "mylcd" (die die Funktionen der ersten verwendet) werden gleichzeitig verwendet.
Der erste Ansatz hat zwar funktioniert, aber sobald ich mehrere Funktionen mische, kommt es zu folgendem Effekt:
Absicht:
1. "lcd" Der LCD wird Orange ausgemalt
2. "mylcd" Der komplette LCD wird mit Rot überschrieben
3. "lcd" Es wird eine weiße Linie gezogen
4. "mylcd" Es wird eine schwarze Linie gezogen
5. "mylcd" Der komplette LCD wird mit Gelb überschrieben
6. "mylcd" Der komplette LCD wird mit Blau überschrieben
Effekt:
1. ok
2. ok
3. ok
4. passiert nichts
5. die weiße Linie wird gelb ausgemalt
6. die Linie wird nun blau ausgemalt
1. wieder ok
2. ......
Test_eigene_Lib
#include <MI0283QT2.h>
#include <ADS7846.h>
#include <Wire.h>
#include <LcdT.h>
MI0283QT2 lcd;
ADS7846 tp;
LcdT mylcd;
void setup()
{
lcd.init(4);
tp.init();
Wire.begin();
lcd.led(60);
}
void loop()
{
lcd.clear(RGB(255,127,0)); // Orange
delay(1000);
mylcd.clear(2); // Rot
lcd.drawLine(0,20,100,20, RGB(255,255,255)); // Weiß
delay(1000);
mylcd.Strich(0,20,100,20,0); // Schwarz
mylcd.clear(4); // Gelb
mylcd.clear(6); // Blau
}
LcdT.h
#ifndef LcdT_h
#define LcdT_h
#include "WConstants.h"
#include "MI0283QT2.h"
class LcdT
{
private:
MI0283QT2 lcd;
public:
LcdT();
void clear( byte Nr);
void Strich( unsigned int X1, unsigned int Y1, unsigned int X2, unsigned int Y2, byte Nr);
};
#endif
LcdT.cpp
#include "WProgram.h"
#include "LcdT.h"
#include "MI0283QT2.h"
byte Farben[][3] = { { 0, 0, 0 }, // 0 Schwarz
{ 255, 255, 255 }, // 1 Weiß
{ 255, 0, 0 }, // 2 Rot
{ 255, 127, 0 }, // 3 Orange
{ 255, 255, 0 }, // 4 Gelb
{ 0, 255, 0 }, // 5 Grün
{ 0, 0, 255 }, // 6 Blau
{ 255, 0, 255 }, // 7 Violett
{ 0, 255, 255 }, // 8 Türkis
{ 100, 100, 255 }, // 9 Blau2
{ 0, 204, 0 }, // 10 Grün2
};
LcdT::LcdT()
{return;}
void LcdT::clear(byte Nr)
{
lcd.clear(RGB(Farben[Nr][0],Farben[Nr][1],Farben[Nr][2]));
delay(1000);
}
void LcdT::Strich( unsigned int X1, unsigned int Y1, unsigned int X2, unsigned int Y2, byte Nr)
{
lcd.drawLine( X1, Y1, X2, Y2, RGB(Farben[Nr][0],Farben[Nr][1],Farben[Nr][2]));
delay(1000);
}
Was mache ich falsch?
Danke im Voraus für Eure Hilfe!
Gruß Reinhard
PS.: Das ganze läuft auf einem Arduino Mega 2560 direkt mit dem Display verkabelt.