INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Ein Taster mit verschiedenen Funktionen?
26.12.2019, 11:15
Beitrag #1
Ein Taster mit verschiedenen Funktionen?
Hallo und frohes Fest allerseits!

Vor ca. 3 Jahren habe ich das Navigationsgerät im Auto meiner Frau modifiziert. Ab Werk ist ein ausfahrbarer Bildschirm im Armaturenbrett verbaut, welcher über den eigentlichen Navigationsrechner im Kofferraum angesteuert wird. Wegen diverser Unzulänglichkeiten wurde der Rechner demontiert und statt dessen eine Garmin Navigationsbox an selber Stelle verbaut. Diese gab ihr Bild (normales Composite Video in NTSC) bisher über ein spezielles Interface an den o.g. Bildschirm.

Leider ist dieses Interface zwischenzeitlich eingegangen und die damalige Herstellerfirma nicht mehr erreichbar, Alternativen gibt es scheinbar auch keine.

Ich habe mich intensiv mit dem Thema auseinandergesetzt und weiß jetzt, dass der Bildschirm über sog. MelBus-Signale angesteuert wird (aus/einfahren, Helligkeit etc.).

Das Bildsignal wird einfach durchgeschleift, das ist also das kleinste Problem.

Ich bin nun dabei, mir ein ähnliches Interface selber zu bauen. Mit einem Arduino Nano kann ich den Bildschirm ansteuern, auch die Einstellung der Helligkeit ist möglich.

Nun zu meiner Frage: Ob und wie ist es machbar, die Befehle für Bildschirm ein/aus und die Einstellung der Helligkeit auf einem Eingangspin des Nano zu vereinen? Ich habe mir das ungefähr so vorgestellt, wobei das Eingangssignal mittels Taster gegeben wird:


Taster lang: Bildschirm fährt aus/geht an
Taster: Dimmung
Taster: Dimmung
Taster: Dimmung
Taster: Dimmung...
.
.
.
Taster lang: Bildschirm fährt ein/geht aus

Idealerweise kann das „Bildschirm aus“-Signal jeder Zeit durch einen langen Tastendruck gegeben werden, wobei die restlichen Befehle nur durch kurzen Tastendruck ausgelöst werden sollten.

Das wäre meine Wunschvorstellung für den Sketch, anbei der von mir getestete Code, bei welchem aber zwei verschiedene Pins des Arduino ausgewertet werden.
Hintergrund für meine Frage ist die Tatsache, dass ich für die Aktivierung des Bildschirms extra eine Taste des Radios umgebaut habe, eine zweites Mal möchte ich diesen Aufwand (Radio demontieren, Taste vom übrigen Stromkreis des Radios trennen, Verkabelung herstellen und durch das Radio nach außen führen...) gerne vermeiden. Deshalb die Idee mit der Steuerung über ein und die selbe Taste/Pin. Die Dimmung des Displays wurde bisher über einen zusätzlichen Kontakt am o.g. Interface realisiert, wobei das auch nicht ideal gewesen ist. Schließlich fährt man auch mal am Tage mit Licht und dann dimmte das Display ab (es funktionierte nur eine Stufe, nämlich komplett gedimmt) und man konnte insbesondere bei Sonne nichts mehr erkennen. Deshalb würde ich die Dimmung gerne unabhängig von festen Eingangsgrößen (Licht an/aus etc.) verstellen können, die Möglichkeiten sind ja da.


Danke im Voraus!

Mit freundlichen Grüßen
Maik.

Code:
// Connect:
// Screen PIN 4 to Arduino PIN 2 (TX)
// Screen PIN 7 to Arduino ground

enum display_mode_name {RTI_RGB, RTI_PAL, RTI_NTSC, RTI_OFF};
const char display_modes[] = {0x40, 0x45, 0x4C, 0x46};
const char brightness_levels[] = {0x20, 0x61, 0x62, 0x23, 0x64, 0x25, 0x26, 0x67, 0x68, 0x29, 0x2A, 0x2C, 0x6B, 0x6D, 0x6E, 0x2F};


//int current_display_mode = RTI_OFF;
int current_display_mode = RTI_NTSC;
bool send_brightness = true;
char current_brightness_level = 13;

//delay between bytes, ms
const int rti_delay = 100;
int pinNumber = 5;
int pinBrightness = 6;
int stateChange = 0;

void setup() {
  Serial.begin(2400);
}

void loop() {

  int button;
  int buttonBrightness;
  
  pinMode(pinNumber, INPUT);
  digitalWrite(pinNumber, HIGH);
  button = digitalRead(pinNumber);

  pinMode(pinBrightness, INPUT);
  digitalWrite(pinBrightness, HIGH);
  buttonBrightness = digitalRead(pinBrightness);

  if (button == 0) {
    stateChange = abs(stateChange - 1);
  }

  if (buttonBrightness == 0) {
    current_brightness_level = current_brightness_level + 3;
    if (current_brightness_level == 15 || current_brightness_level == 16) { current_brightness_level = 1; }
  }


  if (stateChange == 1) {
    current_display_mode = RTI_NTSC;
  } else {
    current_display_mode = RTI_OFF;
  }

  
  rtiWrite(display_modes[current_display_mode]);
  
  if (send_brightness)
    rtiWrite(brightness_levels[current_brightness_level]);
  else
    rtiWrite(0x40);
    
    rtiWrite(0x83);
  
}

void rtiWrite(char byte) {
  Serial.print(byte);
  delay(rti_delay);
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.12.2019, 12:08
Beitrag #2
RE: Ein Taster mit verschiedenen Funktionen?
Warum hat dein Sketch keine Kommentare, an denen wir erkennen können, was an welcher Stelle passieren soll ?
Das würde uns die Hilfe leichter machen.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.12.2019, 12:34
Beitrag #3
RE: Ein Taster mit verschiedenen Funktionen?
(26.12.2019 12:08)hotsystems schrieb:  Warum hat dein Sketch keine Kommentare, an denen wir erkennen können, was an welcher Stelle passieren soll ?
Das würde uns die Hilfe leichter machen.

Sorry Dieter, aber der Sketch ist nicht auf meinem Mist gewachsen, den habe ich von einem Kollegen aus Schweden kopiert, der sich ebenfalls schon einmal mit dem Thema befasst hat. Ich bin leider vollkommen neu auf diesem Gebiet, denke aber, dass ich aus dem Sketch halbwegs erkennen kann, was wo passieren soll. Ich füge den Sketch samt Kommentaren nochmal an, vielleicht könnt Ihr jetzt etwas damit anfangen. Sorry nochmal für evtl. Fehler, aber ich lerne noch ;-)

Viele Grüße,
Maik.

Code:
// Connect:
// Screen PIN 4 to Arduino PIN 2 (TX)
// Screen PIN 7 to Arduino ground

enum display_mode_name {RTI_RGB, RTI_PAL, RTI_NTSC, RTI_OFF};
const char display_modes[] = {0x40, 0x45, 0x4C, 0x46};
const char brightness_levels[] = {0x20, 0x61, 0x62, 0x23, 0x64, 0x25, 0x26, 0x67, 0x68, 0x29, 0x2A, 0x2C, 0x6B, 0x6D, 0x6E, 0x2F};


//int current_display_mode = RTI_OFF;
int current_display_mode = RTI_NTSC;
bool send_brightness = true;
char current_brightness_level = 13;

//delay between bytes, ms
const int rti_delay = 100;
int pinNumber = 5; /* der Pin, welcher jetzt den Monitor aktiviert */
int pinBrightness = 6; /* der Pin, welcher jetzt die Helligkeit des Bildschirms verstellt */
int stateChange = 0;

void setup() {
  Serial.begin(2400);
}

void loop() {

  int button;
  int buttonBrightness;
  
  pinMode(pinNumber, INPUT);
  digitalWrite(pinNumber, HIGH);
  button = digitalRead(pinNumber);

  pinMode(pinBrightness, INPUT);
  digitalWrite(pinBrightness, HIGH);
  buttonBrightness = digitalRead(pinBrightness);

  if (button == 0) {
    stateChange = abs(stateChange - 1); /* der Monitor wird aktiviert/fährt aus */
  }

  if (buttonBrightness == 0) {
    current_brightness_level = current_brightness_level + 3; /* die Helligkeit wird stufenweise bei jedem Tastendruck verringert und fängt dann von vorne an */
    if (current_brightness_level == 15 || current_brightness_level == 16) { current_brightness_level = 1; }
  }


  if (stateChange == 1) {
    current_display_mode = RTI_NTSC;
  } else {
    current_display_mode = RTI_OFF; /* der Monitor wird deaktiviert/fährt ein */
  }

  
  rtiWrite(display_modes[current_display_mode]);
  
  if (send_brightness)
    rtiWrite(brightness_levels[current_brightness_level]);
  else
    rtiWrite(0x40);
    
    rtiWrite(0x83);
  
}

void rtiWrite(char byte) {
  Serial.print(byte);
  delay(rti_delay);
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.12.2019, 15:39
Beitrag #4
RE: Ein Taster mit verschiedenen Funktionen?
Das erscheint mir etwas merkwürdig.
Der Pin5, welcher den Monitor aktivieren soll, ist hier als Input definiert.
Wie soll das funktionieren ?

Das muss doch ein Ausgang (Output) sein.

Und gibt der Monitor eine Rückmeldung, wenn dieser in seiner Endposition angekommen ist ?

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.12.2019, 17:59
Beitrag #5
RE: Ein Taster mit verschiedenen Funktionen?
Der Monitor wird über Input an PIN 5 aus/eingefahren. Die Steuerung erfolgt sowohl für die Aktivierung als auch die Dimmung über den TX Pin als entsprechendes Signal. Die Definition der Endstellung etc. erfolgt durch entsprechende Elektronik auf der Platine de Monitors selber, damit hat der Rechner, bzw. jetzt der Arduino nichts zu tun.
Es muss nur in Endlosschleife das entsprechende Signal anliegen, damit der Monitor draußen bleibt. Wird der Arduino vom Strom getrennt, fährt der Monitor mit Zeitverzögerung automatisch ein, da dann dieses Signal fehlt.
Wird am Arduino das Signal für die Deaktivierung gesetzt, fährt der Bildschirm sofort ein.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.12.2019, 18:26
Beitrag #6
RE: Ein Taster mit verschiedenen Funktionen?
Nochmal:
Ein Input-Pin ist ein Eingang, damit kannst du nicht (sicher) eine Steuerung eines externen Systems vornehmen. Also solltest du den Sketch mal anpassen, damit deine Helfer auch richtige Voraussetzungen haben, um dir die richtigen Informationen zu liefern.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.12.2019, 19:49
Beitrag #7
RE: Ein Taster mit verschiedenen Funktionen?
(26.12.2019 18:26)hotsystems schrieb:  Nochmal:
Ein Input-Pin ist ein Eingang, damit kannst du nicht (sicher) eine Steuerung eines externen Systems vornehmen. Also solltest du den Sketch mal anpassen, damit deine Helfer auch richtige Voraussetzungen haben, um dir die richtigen Informationen zu liefern.

Also irgendwie gibts hier ein Missverständnis: PIN 5 ist doch als Input definiert, nämlich für die Aktivierung/Deaktivierung des Monitors. PIN 6 ist der Input für die Änderung der Helligkeit.

Die Steuerung/Ausgabe der entsprechenden Signale erfolgt über PIN 2/TX als serielles Kommando an den Bildschirm.

Ich würde das Ganze jetzt gerne so kombinieren, dass ein beliebiger PIN (von mir aus gerne wieder PIN 5) die Betätigung des Tasters so auswertet, dass damit beide Optionen (also Bildschirm ein/aus und Helligkeit) über den TX PIN angesteuert werden können, also wie folgt:

Taster wird über Zeit X betätigt (z.B 2 sec): Bildschirm ein/aus
Taster wird kurz betätigt (z.B. < 1sec): Helligkeit wird verstellt

Es soll also das selbe erreicht werden, was jetzt schon funktioniert, nur dass das nicht über zwei getrennte Eingangspins aktiviert wird, sondern über ein und denselben.

Vielleicht bin ich auch einfach zu blöd, mich korrekt auszudrücken...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.12.2019, 20:00
Beitrag #8
RE: Ein Taster mit verschiedenen Funktionen?
(26.12.2019 19:49)kama92 schrieb:  Also irgendwie gibts hier ein Missverständnis: PIN 5 ist doch als Input definiert, nämlich für die Aktivierung/Deaktivierung des Monitors. PIN 6 ist der Input für die Änderung der Helligkeit.

Die Steuerung/Ausgabe der entsprechenden Signale erfolgt über PIN 2/TX als serielles Kommando an den Bildschirm.
.....
Ja, wenn du es auch falsch in deinem kopierten und geänderten Sketch beschreibst.

Du musst das auch im Sketch ändern, damit endlich Klarheit besteht.

Im Sketch hast du Pin 5 zum aktivieren des Monitors beschrieben und als Input definiert. Das ist def. falsch.
Und den Pin 2 (tx) hast du noch nicht definiert.

Du solltest deinen Sketch mindestens soweit vorbereiten, damit die Helfer darauf aufbauen können

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Taster Keyboard Rauchi 6 211 14.01.2020 13:22
Letzter Beitrag: hotsystems
  Mit einen Taster zwischen zwei Ausgängen Toggeln luft-post 6 196 13.01.2020 17:41
Letzter Beitrag: hotsystems
  Taster machen was sie wollen. StefanBehmenburg 12 618 23.11.2019 16:40
Letzter Beitrag: hotsystems
  1 Knopf, mehrere Funktionen Muff4 2 382 23.10.2019 17:12
Letzter Beitrag: Muff4
  Zeitmessung - Taster gedrückt DEL 14 1.117 08.08.2019 21:25
Letzter Beitrag: Bitklopfer
  Taster nur 1xmal zählen Flötzinger 3 758 05.05.2019 11:49
Letzter Beitrag: Flötzinger
  Reihenfolge der Funktionen in der IDE Bernd666 7 1.032 14.03.2019 23:09
Letzter Beitrag: Bernd666
  Motor mit Taster Vollgaser 3 890 14.03.2019 18:02
Letzter Beitrag: Bitklopfer
  Codehilfe 1 Taster 2 Relais freaktech 8 1.087 20.02.2019 22:00
Letzter Beitrag: freaktech
  Taster Abfrage Manuel 1 767 13.01.2019 10:50
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste