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?
10.01.2020, 17:59
Beitrag #17
RE: Ein Taster mit verschiedenen Funktionen?
Die Fehlermeldung sagt doch eindeutig, wo dein Problem liegt.
Deine "void click()" hast du innerhalb der Loop laufen, das darf nicht sein.

Und bitte formatiere deinen Sketch mal so, das man den besser lesen kann.
Drücke Strg +T in der IDE.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2020, 18:04 (Dieser Beitrag wurde zuletzt bearbeitet: 10.01.2020 18:13 von Tommy56.)
Beitrag #18
RE: Ein Taster mit verschiedenen Funktionen?
Du definierst innerhalb von loop neue Funktionen. Das ist nicht zulässig.
Wahrscheinlich bist Du mit den {} Klammern durcheinander gekommen.
Da helfen beim Suchen 2 Sachen:

1. Saubere Einrückungen (<Strg>+T in der IDE kann Dir dabei helfen)
2. Wenn Du in der IDE auf eine Klammer gehst, wird Dir das Gegenstück hervorgehoben. So kannst Du schauen, ob es die ist, die Du willst.

Gruß Tommy

Edit: Kleiner Tipp - Bei den meisten Deiner Funktionen fehlt die schließende }

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2020, 18:21 (Dieser Beitrag wurde zuletzt bearbeitet: 10.01.2020 18:22 von kama92.)
Beitrag #19
RE: Ein Taster mit verschiedenen Funktionen?
Mensch seid Ihr fix hier, danke! Ich habe offensichtlich die Logik hinter der Programmierung noch nicht so richtig verstanden. Ich dachte bisher, dass das Hauptprogramm (loop) die genannten Funktionen ständig in einer Schleife durchlaufen muss. Dazu kommen noch die teilweise etwas kryptischen Fehlermeldungen, irgendwann hab ich dann einfach ein Brett vorm Kopf.

Das mit STRG+T werde ich natürlich brav beherzigen.

Ich melde mich bestimmt nochmal ;-)

Danke vielmals!
Mit freundlichen Grüßen
Maik.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.01.2020, 11:31
Beitrag #20
RE: Ein Taster mit verschiedenen Funktionen?
Da ist die Nervensäge wieder Rolleyes

Ich habe den Sketch entsprechend abgeändert, die Kompilierung läuft jetzt ohne Fehlermeldung durch, der Upload ebenso.

Aber leider passiert nichts. Die TX-LED blinkt in einem fort, so wie sie es beim ursprünglichen Code auch getan hat. Betätige ich den Taster, sehe ich auch eine kurze Reaktion dieser LED, nur passiert hinsichtlich des Bildschirms leider gar nichts.

Ich denke, ich werde jetzt mal einen Schritt zurück gehen und das Ganze erst einmal mit nur einer Funktion versuchen (ich habe noch einen anderen Code, bei welchem der Bildschirm immer automatisch an ist, sobald der Arduino mit Spannung versorgt wird und bei welchem dann nur die Helligkeit per Taster variiert werden kann). Ich habe leider keine anderen Möglichkeiten, die Ausgaben am TX zu prüfen und muss den Arduino zum testen jedes Mal erst am Fahrzeug anschliessen, das ist auf Dauer etwas nervig.

Falls jemand am aktuellen Sketch noch etwas auffällt, Euer Input ist natürlich willkommen. Ihr habt mir ohnehin schon sehr viel geholfen!

Mit freundlichen Grüßen
Maik.

Code:
#include <OneButton.h>

// Connect:
// Screen PIN 4 to Arduino PIN 1 (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 buttonPin = 6;
OneButton button1(buttonPin, true);
int stateChange = 0;

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

  button1.attachClick(click1);
  button1.attachLongPressStart(longPressStart1);
}

void click1() {
  Serial.println("Brightness");
}
void longPressStart1() {
  Serial.println("Start");
}
void loop() {
  button1.tick();
  delay(10);

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

  if ("Start" == 0) {
    stateChange = abs(stateChange - 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);
}
[code]
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.01.2020, 16:40
Beitrag #21
RE: Ein Taster mit verschiedenen Funktionen?
Ganz Ehrlich ich habe jetzt nicht den ganzen Thread gelesen.

Aber werden doch "nur" Hex codes per Serial an den Bildschrim gesendet (Aus dem Code Interpretiert).
Wenn du jetzt mit einem Terminal Programm den die Ausgabe sichtbar machst sollte man schon sehen was unterschiedlich ist.

Entweder nimmst du das was bei der IDE dabei ist oder so was wie HTerm das nehme ich am Liebsten weil da auch die nicht Druckbaren Zeichen lesen kann.

Das muss du so einstellen wie der Code es Tut also 2400 Bound 8n1.
So meine Ich kann man auch ohne Aus und einbau testen was passiert.

Mein Projekt
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.01.2020, 22:40
Beitrag #22
RE: Ein Taster mit verschiedenen Funktionen?
Hallo zusammen!
Ich habe es endlich geschafft, nicht zuletzt mit Eurer Hilfe, vielen Dank nochmal an alle!
Das Grundproblem bestand in der Festlegung der zu den definierten Tastenbetätigungen auszuführenden Aktionen. Zuvor befanden sich diese im Loop, das hat mich komplett kirre gemacht, da ich einfach keine gescheite Verbindung zwischen void*** und den Aktionen herstellen konnte.
Natürlich mussten die Aktionen raus aus dem Hauptprogramm und den jeweiligen OneButton‘s zugeordnet werden, jetzt läuft alles wie es soll.

Ich habe wieder viel gelernt und weiß jetzt u.a., das eine fehlerlose Kompilierung noch lange keine Funktion des Sketches bedeutet, auch das hat mich anfangs ziemlich genervt (ich musste ja jedes Mal zum Test den Arduino zum Auto bringen, anschließen und probieren).

Also nochmals vielen Dank und viele Grüße,
Maik.

Code:
Integration der OneButton Lib
#include <OneButton.h>

//Verbindung zwischen RTI-Screen und Arduino
// Connect:
// Screen PIN 4 to Arduino PIN 1 (TX)
// Screen PIN 7 to Arduino ground

//Betriebsmodi des RTI-Screens (Signalnorm+Helligkeit)
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};

//Festlegung derEinstellungen bei Systemstart
//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;
//Definition Eingangspin 6 = OneButton  
OneButton button(6, true);
int stateChange = 0;

//Definition der Frequenz, Ausgabe seriell, 2400bps
void setup() {
  Serial.begin(2400);
  {
    ;
  }
  Serial.println();

//Definition der Eingangssignale (Klick kurz+Klick lang)
  button.attachClick(click);
  button.attachLongPressStart(longPressStart);
}

//Aktion bei Klick kurz (Verstellung Helligkeit)
void click () {
  int Brightness;
  if (Brightness == 0)
    current_brightness_level = current_brightness_level + 3;
  if (current_brightness_level == 15 || current_brightness_level == 16) {
    current_brightness_level = 1;
  }
}
//Aktion bei Klick lang (Bildschirm an/aus)
void longPressStart () {
  int longPressStart;
  if (longPressStart == 0) {
    stateChange = abs(stateChange - 1);
  }
  if (stateChange == 1) {
    current_display_mode = RTI_NTSC;
  }
  else {
    current_display_mode = RTI_OFF;
  }
}
//Hauptprogramm, Überwachung des Tasters
void loop() {
  button.tick();
  delay(10);

  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
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Taster Keyboard Rauchi 6 195 14.01.2020 13:22
Letzter Beitrag: hotsystems
  Mit einen Taster zwischen zwei Ausgängen Toggeln luft-post 6 171 13.01.2020 17:41
Letzter Beitrag: hotsystems
  Taster machen was sie wollen. StefanBehmenburg 12 611 23.11.2019 16:40
Letzter Beitrag: hotsystems
  1 Knopf, mehrere Funktionen Muff4 2 379 23.10.2019 17:12
Letzter Beitrag: Muff4
  Zeitmessung - Taster gedrückt DEL 14 1.113 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.026 14.03.2019 23:09
Letzter Beitrag: Bernd666
  Motor mit Taster Vollgaser 3 885 14.03.2019 18:02
Letzter Beitrag: Bitklopfer
  Codehilfe 1 Taster 2 Relais freaktech 8 1.084 20.02.2019 22:00
Letzter Beitrag: freaktech
  Taster Abfrage Manuel 1 765 13.01.2019 10:50
Letzter Beitrag: Tommy56

Gehe zu:


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