1,8 Zoll OLED - Display
- Admin
- Administrator
- Beiträge: 1254
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: 1,8 Zoll OLED - Display
Weißt du schon, wie das bei deinen Autos weitergeht? Also du hast jetzt den Pin. der einen günstigen Preis an der Tanke wiedergibt, aber wie oder mit was reagiert jetzt das Auto darauf. Ich habe keine Ahnung wie die Autos gesteuert sind. Die fahren doch nur auf einen Magnetband selbstständig entlang. Wie bekommen die dann die Info, dass sie jetzt in die Tankstelle rein sollen?
Re: 1,8 Zoll OLED - Display
Guten Morgen Franz,
in der Fahrbahn ist mittig ein Eisendraht oder wie bei mir ein Magnetband eingelassen. Die Lenkung hat einen Schleifer mit einem kleinen Magneten und wird vom Magnetband auf der Spur gehalten.
Als Abzweigung zur Tankstelle wird ein Servo in die Fahrbahn eingelassen. Das ankommende Magnetband wird über dem Servoarm befestigt. Am Ausgang befinden sich 2 Magnetfahrbahnen (Weiterfahrt oder zur Tanke). Je nach Servostellung fährt das Auto dorthin.
Also - billigster Preis - Servo dreht auf Abzweig und Auto fährt in die Tanke. Externe IR-LED stoppt das Auto.
Servus
in der Fahrbahn ist mittig ein Eisendraht oder wie bei mir ein Magnetband eingelassen. Die Lenkung hat einen Schleifer mit einem kleinen Magneten und wird vom Magnetband auf der Spur gehalten.
Als Abzweigung zur Tankstelle wird ein Servo in die Fahrbahn eingelassen. Das ankommende Magnetband wird über dem Servoarm befestigt. Am Ausgang befinden sich 2 Magnetfahrbahnen (Weiterfahrt oder zur Tanke). Je nach Servostellung fährt das Auto dorthin.
Also - billigster Preis - Servo dreht auf Abzweig und Auto fährt in die Tanke. Externe IR-LED stoppt das Auto.
Servus
Grüße aus der Heimat der E69
- Admin
- Administrator
- Beiträge: 1254
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: 1,8 Zoll OLED - Display
Guten Morgen.
Ahhh, ok, dann könnte man ja eigentlich auch gleich den Servo in der Software vom Tankstellenschild integrieren. So dass nicht der Pin nur HIGH / LOW geschalten wird, sondern gleich ein Servo an dem Pin hängt. Und die StoppLED auch gleich integrieren?
Re: 1,8 Zoll OLED - Display
Hallo Franz,
ich habe den Sketch ein bisschen übersichtlicher formatiert und beim kompilieren wird mir folgende Warnung ausgegeben:
Im Sketch mit dem Du gearbeitet hast war auch noch ein Fehler vom Urheber:
ich habe den Sketch ein bisschen übersichtlicher formatiert und beim kompilieren wird mir folgende Warnung ausgegeben:
C:\Users\Internet\Documents\Arduino\Tankanzeige_mit_LED\Tankanzeige_mit_LED.ino: In function 'void loop()':
C:\Users\Internet\Documents\Arduino\Tankanzeige_mit_LED\Tankanzeige_mit_LED.ino:121:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (offset < lauftext.length()) {
~~~~~~~^~~~~~~~~~~~~~~~~~~
Code: Alles auswählen
/* Tankanzeige mit LED
* Anpassungen für DC-Car "tanken wenn am billigsten" by e69-fan
*
Steuerungsprogramm für die Tankanzeige der Aral-Tankstelle von Juergen
Idee und erster Entwurf: Juergen
Anpassungen fuer Lauftext: Dominik
© Juergen und Dominik 2021
Pinout Nano:
VCC = 5v GND = GND CS = D10
RST = D8 DC = D9 SDA = D11 SCK = D13 LED = 3,3V
Pinout Mega:
DC = 8 RST = 9 SDA = 51 SCK = 52
CS = 10 VCC = 5V LED = 3,3V
SPI Display
VCC - GND - CS - Reset - A0 - SDA - SCK - LED
*/
// ============================ Laden der notwendigen Bibliotheken ======================================================== //
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>
// ============================ Definieren der PINs ====================================================================== //
#define TFT_CS 10
#define TFT_RST 8 // Or set to -1 and connect to Arduino RESET pin
#define TFT_DC 9
#define MinPreis 7 // Kontakt bei Tiefpreis xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx //
#define MGP 93 // tiefster Preis bei (93) xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx //
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
// Pin fuer die LEDs in der Tankstelle (wenn aktiviert, Vorwiderstand nicht vergessen!! und Zeile 87 auch aktivieren
//int led = 3;
// ============================ Definition der Texte und Werte ============================================================ //
const String lauftext = " Angebote: Bockwurst im Brot 3,20 *** Kaffee + Kuchen 2,20 *** Wagenpflege 5,60 *** Handpolitur 18,95 ***"; // Scrolltext
const uint8_t width = 24; //Länge des Ausschnittes
int offset = 0;
// wir arbeiten mit byte und tun bei der Anzeige nur so, als wären es Kommazahlen. Das spart Speicher.
uint8_t preisBasis = 93; // = LKW
uint8_t grenzeUnten = 85, grenzeOben = 132;
uint8_t diesel = 2, benzin = 4, super = 6, superplus = 12, gas = -52; // Differenz der Kraftstoffe
/*
Definieren der Farbe fuer den Hintergund und den Vordergrund
Onlinetool zum umrechnen der Farbwerte
http://www.barth-dev.de/online/rgb565-color-picker/
*/
//uint16_t TFT_BLUE = 0210; // Hintergrundfarbe
// Zum verwenden die nachfolgenden Zeilen aktivieren.
word RGBtoColor( byte R, byte G, byte B)
{
return ( ((R & 0xF8) << 8) | ((G & 0xFC) << 3) | (B >> 3) );
}
uint16_t TFT_BLUE = RGBtoColor(65, 105, 225);
// ============================ Zeitsteuerung der Displayanzeige ========================================================== //
uint32_t aktMillis, lastUpdatePreise, lastUpdateScrollText;
const uint32_t INTERVALL = 12 * 15000UL; // das wären 3 Minuten
//const uint32_t INTERVALL = 60000; // das waere 1 Minute
const uint32_t SCROLLINTERVALL = 250; // Scrollabstand in Milli-Sekunden 1000 = 1 Sekunde
// ============================ setup ===================================================================================== //
// ============================ setup ===================================================================================== //
void setup(void) {
Serial.begin(9600);
Serial.println(F("Hello. I´m the display of your gasstation"));
pinMode(MinPreis, OUTPUT); // Pin 7
//Juergens Display
tft.initR(INITR_BLACKTAB);
tft.setRotation(2); // DREHEN DES DISPLAYS um 180° mit (0) oder (2)
//tft.setSPISpeed(40000000);
tft.setTextWrap(false);
tft.fillScreen(TFT_BLUE);
Serial.println(F("Display started"));
Serial.print("Text: >"); Serial.print(lauftext); Serial.print("< Laenge: "); Serial.println(width);
randomSeed(analogRead(A0)); // unbenutzter Analogeingang ????????
schreibeNeu();
}
// ============================ loop ====================================================================================== //
// ============================ loop ====================================================================================== //
void loop() {
//digitalWrite(3,HIGH); // LED`s in der Tankstelle
aktMillis = millis();
if (aktMillis - lastUpdatePreise >= INTERVALL) {
lastUpdatePreise = aktMillis;
schreibeNeu();
}
// Zeichnen des Rahmens um den Lauftext
tft.drawRect(0, 116, tft.width(), 13, ST7735_WHITE); // x, y, weite, hoehe, Farbe
// Lauftext ausgeben
if (aktMillis - lastUpdateScrollText >= SCROLLINTERVALL) {
lastUpdateScrollText = aktMillis;
//Serial.println(scroll());
if (offset < lauftext.length()) {
offset++;
scrollText(offset);
} else {
offset = 0;
}
}
// Gute Fahrt
tft.setTextSize(2);
tft.setCursor(0, 140);
tft.print("Gute Fahrt!");
}
// Scrolltext erstellen und ausgeben
void scrollText(int offset) {
String t = "";
t = lauftext.substring(offset, offset + width - 1);
// Print the string for this iteration
tft.setCursor(3, 119);
tft.fillRect(1, 118, tft.width() - 2, 10, TFT_BLUE); // x, y, weite, hoehe, Farbe
tft.setTextSize(1);
tft.print(t);
//delay(0.1);
}
// uint8_t zu scheinbarem Floatstring
char *byteToFloat(uint8_t in) {
static char preisStr[5];
preisStr[4] = '\0';
preisStr[1] = '.'; // oder ','
preisStr[3] = in % 10 + '0';
in /= 10;
preisStr[2] = in % 10 + '0';
in /= 10;
preisStr[0] = in % 10 + '0';
// Serial.println(preisStr);
return preisStr;
}
// Ausgabe eine Zeile
void schreibPreis(int y, const char* beschriftung, uint8_t preisZahl) {
int abstandLinksText = 5;
char *preis = byteToFloat(preisZahl);
Serial.print(beschriftung); Serial.print(": "); Serial.println(preis);
//Kraftstoffart klein schreiben
tft.setTextSize(1);
tft.setCursor(abstandLinksText, y);
tft.print(beschriftung);
//Preis gross schreiben
tft.setTextSize(2);
int abstandLinksPreis = 70;
tft.setCursor(abstandLinksPreis, y);
tft.print(preis);
//eine kleine 9 schreiben
tft.setTextSize(1);
int abstandLinks9 = 120;
tft.setCursor(abstandLinks9, y);
tft.print("9");
}
// schreibe die Preise
void schreibeNeu() {
//Hintergrund schwarz füllen
tft.fillScreen(TFT_BLUE);
tft.setTextColor(ST7735_WHITE);
int y = 10;
int zeilenHoehe = 28;
// neuen Basispreis berechnen xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx //
uint8_t diff = random(6) - 3; // 3 Cent +- Differenz
uint8_t neu = preisBasis + diff;
if (neu < grenzeUnten || neu > grenzeOben) {
neu = preisBasis - diff;
}
preisBasis = neu;
Serial.println(F("#################"));
Serial.println(F("Neuer Basispreis:"));
Serial.println(neu);
// Hier wird der Niedrigpreis ermittelt xxxxxxxxxxxxxxxxxxxxx //
// Wenn günstig dann Pin. 7 auf "HIGH"
if (neu < MGP) {
digitalWrite (MinPreis, HIGH);
}
else {
digitalWrite (MinPreis, LOW);
}
schreibPreis(y, "Diesel", preisBasis + diesel);
y += zeilenHoehe;
schreibPreis(y, "Benzin", preisBasis + benzin);
y += zeilenHoehe;
schreibPreis(y, "Super", preisBasis + super);
y += zeilenHoehe;
schreibPreis(y, "Super+", preisBasis + superplus);
}
Im Sketch mit dem Du gearbeitet hast war auch noch ein Fehler vom Urheber:
ist abgeändert um const char auf:void schreibPreis(int y, char* beschriftung, uint8_t preisZahl) {
Ich mache mir mal ein paar krumme Gedanken, wie es mit der Tanke weitergeht - Servusvoid schreibPreis(int y, const char* beschriftung, uint8_t preisZahl) {
Grüße aus der Heimat der E69
- Admin
- Administrator
- Beiträge: 1254
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: 1,8 Zoll OLED - Display
Mit den Erklärungen in dem Link komme ich noch nicht klar.
Das Buch habe ich heute bekommen.
Die Krimpzange war für heute angekündigt, aber wird wohl erst morgen kommen.
Naja, schauma mal, dann sehn wirs schon
Schönen Abend
Franz
Das Buch habe ich heute bekommen.
Die Krimpzange war für heute angekündigt, aber wird wohl erst morgen kommen.
Naja, schauma mal, dann sehn wirs schon

Schönen Abend
Franz
- Admin
- Administrator
- Beiträge: 1254
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: 1,8 Zoll OLED - Display
Krimpzange und Stecker habe ich jetzt auch. Und mein Fenster Stellmotor ist auch da. Werde ich morgen mal einbauen. Und dann gibts die erste Nacht mit der neuen Technik.
Wenn das Zeug funktioniert habe ich auch schon etwas gößere Pultgehäuse in die das alles schon reinpasst.
Servus
Franz
PS: Nur mein neues Handy war angekündigt und ist nicht gekommen. Soll jetzt morgen kommen. Meines ist beim Ausziehen der Jacke aus der Tasche geflogen und auf dem Boden gelandet. Und soooo blöd am Boden auf eine Ecke geknallt, dass das Display KO gegangen ist

Servus
Franz

PS: Nur mein neues Handy war angekündigt und ist nicht gekommen. Soll jetzt morgen kommen. Meines ist beim Ausziehen der Jacke aus der Tasche geflogen und auf dem Boden gelandet. Und soooo blöd am Boden auf eine Ecke geknallt, dass das Display KO gegangen ist

- Admin
- Administrator
- Beiträge: 1254
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: 1,8 Zoll OLED - Display
Hi Wolfgang.
Jetzt ist mir wieder eingefallen was du noch ändern wolltest. Die Preisdaten für das Tankstellenschild hast du vor ewigen Zeiten mal ändern wollen. Ich wusste dass da noch was war, aber nicht mehr was es war. Jetzt im Moment ist´s mir wieder eingefallen. Aber da du in der Versenkung verschwunden bist, weiß ich nicht ob das noch aktuell ist. Vielleicht lässt du mich mal wissen, ob dich das noch interessiert? Dann könnte wir uns das mal ansehen.
Franz
Jetzt ist mir wieder eingefallen was du noch ändern wolltest. Die Preisdaten für das Tankstellenschild hast du vor ewigen Zeiten mal ändern wollen. Ich wusste dass da noch was war, aber nicht mehr was es war. Jetzt im Moment ist´s mir wieder eingefallen. Aber da du in der Versenkung verschwunden bist, weiß ich nicht ob das noch aktuell ist. Vielleicht lässt du mich mal wissen, ob dich das noch interessiert? Dann könnte wir uns das mal ansehen.
Franz
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste