TFT Touch-Shield, Seeed Studio

Hello liebe Leute,

ich arbeite zurzeit an der Konzipierung einer Sprühanlage, mit welcher in sehr kurzer Zeit eine Keimsuspension auf Probenkörper aufgebracht werden sollen.
Da diese Keime oftmals in den Rohren etc. hängen bleiben, muss ebenfalls eine Reinigungsfunktion integriert werden. Zudem will ich eine Art Entleerungsfunktion einbauen, mit welcher man ganz einfach die Anlage evakuiert.
Für alle 3 Anwendungen habe ich bereits eine Programmierung geschrieben, welche auch funktioniert. Der Haken ist jedoch, dass bei dieser der Start der einzelnen Abläufe, per Taster erfolgt.
Aufgrund dessen habe ich das TFT Touch-Shield besorgt, mit welchem ich gerne eine Art Programmablauf integrieren würde, bei dem (vor allem bei der Reinigung notwendig) nach jeweils erfolgreichem Absolvieren eines Teilschrittes, mittels einer Bestätigungsfunktion der nächste Vorgang (bzw. das nächste Signal) aktiviert wird. Das Touchpad soll beim Umlegen des Ein/Aus- Schalters gestartet werden und die 3 Funktionen (Sprühvorgang, Reinigung und Entleerung) anzeigen.
Leider habe ich noch nie Kontakt gehabt mit einem Touchpanel, weshalb ich mich gewundert habe, wie man es hinbekommt, über eines der 3 Touchfelder die einzelnen Pins bzw. Magnetventile anzusteuern.
Anbei habe ich einen Vorentwurf des Programmablaufes in Schriftform beigefügt.
Ich würde mich sehr freuen, wenn Ihr mir bezüglich der Programmierung des Shields helfen bzw. mir ein paar Tipps zur Programmierung geben könntet.

Vielen Dank schonmal im Voraus und solltet Ihr weitere Infos benötigen, reiche ich die natürlich sofort nach .
Gruß,
Jannis

NOTIZEN FÜR TFT TOUCHDISPLAY PROGRAMMIERUNG.pdf (351 KB)

Ich habe einiges noch nicht verstanden.

  1. Sollen die Erläuterungen auf dem Display angezeigt werden? Dann müsste es ziemlich groß werden.
  2. Da, wo Du “Bestätigung” geschrieben hast - soll der Arduino da etwas gegenprüfen oder nur der Benutzer sagen “Ok, habe ich gemacht”

Als Display würde ich ein Nextion empfehlen und einen MEGA 2560 als Arduino.

Ansonsten könntest Du ja schon mal Deinen Sketch zeigen, auf dem alles aufbauen soll.
Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).

Gruß Tommy

Von meiner Seite erstmal ein Lob: Es ist das erste Mal, daß ich gleich zu Beginn eines Themas ein Konzept sehe, Hut ab!

jaschey: Aufgrund dessen habe ich das TFT Touch-Shield besorgt, ...

Da gibt es ganz unterschiedliche, welches hast Du? Bitte gib einen Link an.

Dem Display beigefügt sollte eine Programmbibliothek sein, da gibt es dann auch Touch-Beispiele. Von denen ausgehend kannst Du Dich mit der Materie vertraut machen. Ist zumindest meine Vorgehensweise.

Hi

Mein Vorschlag wäre, daß Du die bereits umgesetzten Prozesse (Reinigen, Spülen, Evakuieren) jeweils als Funktion in Dein Haupt-Programm setzt.
Die Einzel-Sketche werden wohl jeweils in der loop() laufen - Das darfst Du natürlich so nicht zusammen kopieren :wink:

In Deiner loop() fragst Du das Display ab, ob irgendwo ‘hin getoucht’ wurde und führst dann, meinetwegen nach einer weiteren Abfrage, wo man noch woanders hin ‘touchen’ muß, die entsprechende Funktion aus.
In den Funktionen kannst Du dann noch eine Art Fortschrittbalken auf dem Display generieren - da sind Deinem Spieltrieb Tür und Tor geöffnet.

MfG

Tommy56:
Ich habe einiges noch nicht verstanden.

  1. Sollen die Erläuterungen auf dem Display angezeigt werden? Dann müsste es ziemlich groß werden.
  2. Da, wo Du “Bestätigung” geschrieben hast - soll der Arduino da etwas gegenprüfen oder nur der Benutzer sagen “Ok, habe ich gemacht”

Als Display würde ich ein Nextion empfehlen und einen MEGA 2560 als Arduino.

Ansonsten könntest Du ja schon mal Deinen Sketch zeigen, auf dem alles aufbauen soll.
Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).

Gruß Tommy

Hey Tommy,

die Erläuterungen wollte ich auf jeden Fall noch ein wenig abkürzen und auf dem Bildschirm anzeigen lassen. Zu 2., der Benutzer muss immer nur bestätigen, dass er den Vorgang ausgeführt hat.
Als Arduino habe ich bereits einen MEGA 2560 besorgt, leider muss ich den Display verwenden für meine Anwendung, weshalb ein Neukauf leider ausgeschlossen ist. Ich werde den Sketch unten einfügen. Der Beladungsschalter entspricht dabei einer kleinen Zusatzfunktion, welche aber im späteren Programm, mit kalibrierten Werten, in die Funktion des Sprühprozesses aufgenommen wird.

[*code]
int switchStateAktivierung = 0;
int switchStateReinigung = 0;
int switchStateBeladung = 0;

int const MVKeimsuspension = 1;
int const MVSteuerluft = 2;
int const MVProzessluft = 3;
int const AKTIVIERUNG = 4;
int const REINIGUNG = 5;
int const BELADUNG = 6;

void setup() {

pinMode(MVKeimsuspension, OUTPUT); // Magnetventil für Keimsuspension

pinMode(MVSteuerluft, OUTPUT); // Magnetventil für Steuerluft

pinMode(MVProzessluft, OUTPUT); // Magnetventil für Prozessluft

pinMode(AKTIVIERUNG, INPUT); // Knopf zur Aktivierung der Sprühverkeimung

pinMode(REINIGUNG, INPUT); // Schalter für Entleerung der restlichen Keimsuspension

pinMode(BELADUNG, INPUT); // Schalter für Beladung bzw. Entlüftung der Rohrleitung, BEHÄLTER unterstellen
}

void loop() {
switchStateAktivierung = digitalRead(AKTIVIERUNG);
switchStateReinigung = digitalRead(REINIGUNG);
switchStateBeladung = digitalRead(BELADUNG);

if (switchStateAktivierung == HIGH){

delay(2000);
digitalWrite(MVKeimsuspension, HIGH);
digitalWrite(MVSteuerluft, HIGH);
digitalWrite(MVProzessluft, HIGH);
delay(100); // Steuer- und Prozessluft geöffnet

digitalWrite(MVKeimsuspension, LOW);
digitalWrite(MVSteuerluft, HIGH);
digitalWrite(MVProzessluft, HIGH);
delay(200);

digitalWrite(MVSteuerluft, LOW);
digitalWrite(MVProzessluft,LOW);
digitalWrite(MVKeimsuspension, LOW);

digitalWrite(switchStateAktivierung, LOW);

}else if (switchStateAktivierung == LOW){

digitalWrite(MVKeimsuspension, LOW);
digitalWrite(MVSteuerluft, LOW);
digitalWrite(MVProzessluft, LOW);
}

if(switchStateReinigung == HIGH){

digitalWrite(MVKeimsuspension, LOW);
digitalWrite(MVSteuerluft, HIGH);
digitalWrite(MVProzessluft, HIGH); // Versprühen der restlichen Keimsuspension im Rohr
delay(1000);

digitalWrite(MVKeimsuspension, LOW);
digitalWrite(MVSteuerluft, LOW);
digitalWrite(MVProzessluft, LOW);
digitalWrite(switchStateReinigung, LOW);

}else if(switchStateReinigung == LOW){

digitalWrite(MVKeimsuspension, LOW);
digitalWrite(MVSteuerluft, LOW);
digitalWrite(MVProzessluft, LOW);
}

if(switchStateBeladung == HIGH){

digitalWrite(MVKeimsuspension, HIGH);
digitalWrite(MVSteuerluft, HIGH);
digitalWrite(MVProzessluft, HIGH);
delay(1000);

digitalWrite(MVKeimsuspension, LOW);
digitalWrite(MVSteuerluft, LOW);
digitalWrite(MVProzessluft, LOW);

digitalWrite(switchStateBeladung, LOW);

}else if (switchStateBeladung == LOW){

digitalWrite(MVKeimsuspension, LOW);
digitalWrite(MVSteuerluft, LOW);
digitalWrite(MVProzessluft, LOW);
}
}
[*code]

agmue: Von meiner Seite erstmal ein Lob: Es ist das erste Mal, daß ich gleich zu Beginn eines Themas ein Konzept sehe, Hut ab! Da gibt es ganz unterschiedliche, welches hast Du? Bitte gib einen Link an.

Dem Display beigefügt sollte eine Programmbibliothek sein, da gibt es dann auch Touch-Beispiele. Von denen ausgehend kannst Du Dich mit der Materie vertraut machen. Ist zumindest meine Vorgehensweise.

Da hast du Recht, das war eventuell ein wenig voreilig. Ich habe das damals in Beratung eines Arbeitskollegen gekauft, der hobbymäßig schon viel mit Arduino zu tun hatte.

https://www.distrelec.ch/de/tft-touch-shield-seeed-studio-104030004/p/30069902 hatte damals diesen hier erworben. Und danke für den Tipp, ich werde direkt mal reinschauen.

postmaster-ino: Hi

Mein Vorschlag wäre, daß Du die bereits umgesetzten Prozesse (Reinigen, Spülen, Evakuieren) jeweils als Funktion in Dein Haupt-Programm setzt. Die Einzel-Sketche werden wohl jeweils in der loop() laufen - Das darfst Du natürlich so nicht zusammen kopieren ;)

In Deiner loop() fragst Du das Display ab, ob irgendwo 'hin getoucht' wurde und führst dann, meinetwegen nach einer weiteren Abfrage, wo man noch woanders hin 'touchen' muß, die entsprechende Funktion aus. In den Funktionen kannst Du dann noch eine Art Fortschrittbalken auf dem Display generieren - da sind Deinem Spieltrieb Tür und Tor geöffnet.

MfG

aah das ist ja ne geschickte Lösung! Das heißt ich Programmier auf das Display einfach nur Teilbereiche für meine unterschiedlichen Prozesse, definier genau wo die liegen und wenn diese aktiviert werden, die Verbindung zur Hauptfunktion.

jaschey: Ich habe das damals in Beratung eines Arbeitskollegen gekauft, der hobbymäßig schon viel mit Arduino zu tun hatte.

Dann frage den mal, welcher Grafikcontroller verwendet wird, ob ein Touch-Chip eingebaut ist und welche Programmbibliothek mit welchen Parametern paßt. Auf der Händlerseite kann ich nichts dazu finden.

Progammieren: Mindestens eine Schrittkette (endlicher Automat, finite state machine) bietet sich an.

agmue: Dann frage den mal, welcher Grafikcontroller verwendet wird, ob ein Touch-Cip eingebaut ist und welche Programmbibliothek mit welchen Parametern paßt. Auf der Händlerseite kann ich nichts dazu finden.

Progammieren: Mindestens eine Schrittkette (endlicher Automat, finite state machine) bietet sich an.

Leider ist der gerade im Urlaub :( sonst hätte ich den mal gefragt bezüglich der Programmierung.

Aber vielen Dank dir für den Vorschlag mit der Schrittkette!