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
Methode wird nicht aufgerufen
19.01.2021, 12:19 (Dieser Beitrag wurde zuletzt bearbeitet: 19.01.2021 13:05 von rrobbyy.)
Beitrag #1
Methode wird nicht aufgerufen
Hallo zusammen,

ich habe folgenden Code, der wunderbar funktioniert:

Code:
const int LedPIN = 13;
String eingabe;
String eingabeLED;


void setup() {
  Serial.begin(9600);
  pinMode(LedPIN, OUTPUT);
  
}

void loop()
{
  
while(Serial.available() ==0) {}
  eingabe=Serial.readString();
  Serial.print(eingabe);
  
     if(eingabe.indexOf("an")>=0)
  {
    digitalWrite(LedPIN, HIGH);
    Serial.println("LED an");
  }
  else
  {
    digitalWrite(LedPIN, LOW);
    Serial.println("LED aus");
  }
}


Jetzt möchte ich das IF aber in eine Methode ausgliedern. Jedoch passiert mit der LED nichts und mir ist nicht klar warum

Code:
void loop()
{
  
while(Serial.available() ==0) {}
  eingabe=Serial.readString();
  Serial.print(eingabe);
  
  LED();
    
}

void LED()
{
  Serial.println("LED einschalten mit 'an'");
   while(Serial.available() ==0) {}
   eingabeLED=Serial.readString();
    if(eingabeLED.indexOf("an")>=0)
  {
    digitalWrite(LedPIN, HIGH);
    Serial.println("LED an");
  }
  else
  {
    digitalWrite(LedPIN, LOW);
    Serial.println("LED aus");
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.01.2021, 12:27
Beitrag #2
RE: Methode wird nicht aufgerufen
So ganz verstehe ich den Hintergrund deines Sketches nicht.
Der Sketch ist nicht vollständig und warum baust du die while-Schleife 2 mal ein.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.01.2021, 12:58 (Dieser Beitrag wurde zuletzt bearbeitet: 19.01.2021 13:02 von rrobbyy.)
Beitrag #3
RE: Methode wird nicht aufgerufen
zwei mal, weil auch zwei eingaben erfolgen sollen. was hier ausgewertet wird spielt auch vorerst keine rolle.

mir gehts nur darum, warum das so nicht funktioniert. Die LED will einfach nicht leuchten.

beim ersten part fehlte nur "}" und jetzt vollständig
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.01.2021, 13:01
Beitrag #4
RE: Methode wird nicht aufgerufen
(19.01.2021 12:58)rrobbyy schrieb:  zwei mal, weil auch zwei eingaben erfolgen sollen. was hier ausgewertet wird spielt auch vorerst keine rolle.

mir gehts nur darum, warum das so nicht funktioniert.

Ach und deshalb dürfen wir nicht den kompletten Sketch durchsuchen und auch nicht sehen ?

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.01.2021, 13:13
Beitrag #5
RE: Methode wird nicht aufgerufen
ähm...da ist nicht mehr. das ganze ding ist 37 zeilen lang, das wars.
die deklaration habe ich nicht im zweiten code nicht gepostet, weil die sich nicht zum vorgänger nicht ändert, lediglich der loop ist anders + die weitere methode.

ich habe das jetzt noch mal in ein ganz neues programm kopiert (1:1), die platine stromlos gemacht, angeschlossen und neu übertragen. keine ahnung warum, aber jetzt geht das...aber das kann doch nicht sein?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.01.2021, 13:41
Beitrag #6
RE: Methode wird nicht aufgerufen
(19.01.2021 12:19)rrobbyy schrieb:  Jetzt möchte ich das IF aber in eine Methode ausgliedern.
Nur mal so nebenbei: Was Du da erstellt hast ist eine Funktion. Methoden gibt's nur im Zusammenhang mit Klassen.

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.01.2021, 13:56
Beitrag #7
RE: Methode wird nicht aufgerufen
Baue Dir serielle Ausgaben rein, damit Du siehst, wo Dein Sketch falsch abbiegt.
Deine seriellen Einleseroutinen sehen komisch aus.

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
19.01.2021, 15:59
Beitrag #8
RE: Methode wird nicht aufgerufen
Code:
while(Serial.available() ==0) {}
  eingabe=Serial.readString();
  Serial.print(eingabe);
  LED();
Da rennt er unsinnig in der while Schleife bis etwas über die serielle Schnittstelle kommt. Wenn das Programm später noch was anderes machen soll, muss das raus.
Danach liest er die Zeichen von der Seriellen.

Code:
void LED()
{
  Serial.println("LED einschalten mit 'an'");
   while(Serial.available() ==0) {}
   eingabeLED=Serial.readString();
So, da Du oben in der loop schon das "an" oder "aus" schon abgeholt hast, ist der Puffer jetzt leer und er hängt in der nächsten while Schleife fest...
Wenn Du jetzt nochmal "an" eingibst, macht er tatsächlich mal was.

Ist es eigentlich Absicht das "an" einschaltet und jedes beliebige Zeichen abschaltet?

Mach in der loop einfach mal alles raus bis auf
Code:
if (Serial.available()) LED();
Dann springt er nur unten rein wenn was zum Abholen im Puffer liegt. Dann kannst Du unten in LED noch die while Zeile entsorgen.

Gruß, Jürgen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Nano. Sketch kann nicht hochgeladen werden 4heiner 4 249 02.04.2021 17:21
Letzter Beitrag: 4heiner
  Programm startet bei Neustart nicht Moritzzz 18 568 02.04.2021 14:06
Letzter Beitrag: Tommy56
  Arduino Ampelschaltung Taster funktioniert nicht fatihakan36 9 657 13.03.2021 22:06
Letzter Beitrag: N1d45
  Library Ethernet: Nicht zu compilieren GuaAck 5 426 22.02.2021 17:31
Letzter Beitrag: Tommy56
  von delay auf millis umgestellt, klappt nur nicht. Servo Geschwindigkeit einstellen. gutschy 8 668 21.02.2021 15:22
Letzter Beitrag: gutschy
  MMega2560-Clone läßt sich nicht programmieren kpc 8 586 08.02.2021 09:50
Letzter Beitrag: hotsystems
  If-Schleife wird nicht mehr durchlaufen LK2567 2 376 05.02.2021 21:20
Letzter Beitrag: LK2567
  Tasterabfrage funktioniert nicht Moehn 4 515 05.02.2021 15:23
Letzter Beitrag: Moehn
  Kompiler beschwert sich nicht, LC-Display macht aber nicht, was es soll. generic_user492 3 404 26.01.2021 14:11
Letzter Beitrag: MicroBahner
  Arduino Uno+ Ethernetshield W5100 wird in Fritz Box nicht erkannt Justus S. 14 825 23.01.2021 13:39
Letzter Beitrag: Justus S.

Gehe zu:


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