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
Switch/case
01.07.2020, 16:34
Beitrag #57
RE: Switch/case
Ich hatte in der Zwischenzeit eine Korrektur der Aufrufroutine gepostet.

Gruß Tommy

"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
01.07.2020, 18:03
Beitrag #58
RE: Switch/case
(01.07.2020 16:34)Tommy56 schrieb:  Ich hatte in der Zwischenzeit eine Korrektur der Aufrufroutine gepostet.

Gruß Tommy

Tommy, vielen Dank, es klappt.
Habe deinen geänderten Part der Aufrufroutine so auch ins Steuerungsprogramm eingebaut. Super, es war ein hartes Stück Arbeit.
Kannst du mir darüber noch 1 bis 2 Erläuterungen geben ? Habe ähnliches so noch nicht in der Literatur gefunden.

Mit freundlichen Grüßen
Norbert
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.07.2020, 18:13
Beitrag #59
RE: Switch/case
In der alten Variante war der Aufruf von automatik()/manuell() innerhalb der Klammer von if (Serial.available()>0 ){, d.h. ohne serielle Eingabe wurden sie nicht aufgerufen.

Da ich mir nicht sicher war, ob und wie Du das mit dem '\n' gelöst hast, habe ich die Variable zustand eingeführt. Diese wird bei der seriellen Eingabe gesetzt und anhand dieser wird automatik()/manuell() bei jedem loop-Durchlauf aufgerufen.
Die 0 am Anfang soll nur bewirken, dass Du erst eine Eingabe machen musst, damit es los geht.

Gruß Tommy

"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
01.07.2020, 19:10
Beitrag #60
RE: Switch/case
(01.07.2020 18:13)Tommy56 schrieb:  In der alten Variante war der Aufruf von automatik()/manuell() innerhalb der Klammer von if (Serial.available()>0 ){, d.h. ohne serielle Eingabe wurden sie nicht aufgerufen.

Da ich mir nicht sicher war, ob und wie Du das mit dem '\n' gelöst hast, habe ich die Variable zustand eingeführt. Diese wird bei der seriellen Eingabe gesetzt und anhand dieser wird automatik()/manuell() bei jedem loop-Durchlauf aufgerufen.
Die 0 am Anfang soll nur bewirken, dass Du erst eine Eingabe machen musst, damit es los geht.

Gruß Tommy

Vielen Dank für die Erläuterungen. Schönen Abend!

Mit freundlichen Grüßen
Norbert
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.07.2020, 19:18
Beitrag #61
RE: Switch/case
(01.07.2020 19:10)RCudino schrieb:  Schönen Abend!
Dir auch.

Gruß Tommy

"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
01.07.2020, 20:41
Beitrag #62
RE: Switch/case
Hallo Tommy,
es hat mich ja noch ein bisschen weiter beschäftigt.
Zu Anfang meiner switch / case Anfrage hatte ich ja das Beispiel: Abfrage eines Tasters. Dieser Sketch hatte ja auch ursprünlich nicht funktioniert. Nach Eingabe von 1 im seriellen Monitor , ging die LED nicht an. Wenn ich jetzt nach
nummer = Serial.read(); die Klammer setzte und im seriellen Monitor " kein Zeilenende" setze, funktioniert es.
Ich finde keine keine Beispiele in der Literatur wo auch so verfahren wird.

Code:
int nummer = 0;

void setup() {
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode( 3, INPUT_PULLUP);
}

void loop() {
  if (Serial.available() > 0) {
    nummer = Serial.read();
  }                                            // Klammer ist notwendig
  switch (nummer) {
    case '1':
      if (digitalRead(3) == LOW)
        digitalWrite(LED_BUILTIN, HIGH);
      else
        digitalWrite(LED_BUILTIN, LOW);
      break;
    default:
      break;
  }
}

Mit freundlichen Grüßen
Norbert
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.07.2020, 20:48
Beitrag #63
RE: Switch/case
Warum soll alles schon in der Literatur stehen? Wink Wäre ja langweilig.
Du hast mehrere Möglichkeiten.

1. Du nutzt Einzelzeichen zur Steuerung - dann darfst Du kein CR oder LF senden, sondern nur dieses eine Zeichen.

2. Du nutzt Zeichenketten mit '\n' als Abschluss (das wird häufig verwendet, vor allem für Zeichenketten aus mehreren Nutzzeichen), dann musst Du die Steuerzeichen auch mit lesen und auswerten.

Für Variante 1 haben wir hier einen Code. Für Variante 2 und grundlegende Infos zu Zeichenketten kann ich Dir dieses Tutorial von mir empfehlen.

Gruß Tommy

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


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Menü mit case und if nimmzwei 20 1.154 21.04.2020 19:39
Letzter Beitrag: nimmzwei
  case Problem? Harry 10 781 09.04.2020 10:55
Letzter Beitrag: Harry
  Switch-Case-Auswahl Frage Christian_Moba-Arduino 4 496 02.02.2020 17:27
Letzter Beitrag: Christian_Moba-Arduino
  Sleep Modus aktivieren (Reed-Switch Falle) Wochenendprogrammierer 20 2.322 01.07.2019 21:16
Letzter Beitrag: hotsystems
  Switch erkennt eine Phase nicht DonSonora 27 3.573 30.01.2019 22:24
Letzter Beitrag: MicroBahner
  IR-Remote - Case abbruch durch anderes case Snekels 5 986 03.01.2019 19:08
Letzter Beitrag: Tommy56
  switch case huber5093 8 3.527 08.10.2017 15:44
Letzter Beitrag: hotsystems
  switch case funktion ausser halb loop ??? huber5093 13 4.851 12.04.2017 15:26
Letzter Beitrag: Tommy56
  Unterschiedliche Programme durch Switch/ Case SpeedShifter 26 6.045 04.10.2016 15:29
Letzter Beitrag: SpeedShifter
  Switch/Case mit chars phischmi 8 4.424 24.07.2016 21:00
Letzter Beitrag: phischmi

Gehe zu:


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