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
Serial.print - Einfluss auf Code
17.01.2021, 12:06 (Dieser Beitrag wurde zuletzt bearbeitet: 17.01.2021 12:39 von Natsnok.)
Beitrag #1
Question Serial.print - Einfluss auf Code
Guten Morgen ihr,
ich hab das Problem, dass mein Code nicht mehr funktioniert, sobald ich eine Line mit "Serial.print(oldState);" lösche.

Ohne die Line funktioniert der Butten nicht mehr und der Code springt nicht mehr zwischen case 0 u. 1

Könnt ihr mir sagen welchen Einfluss Serial.print noch hat außer die Ausgabe im Monitor.

Code:
int mosfet = 13;
int butten = 10;
int mode = 0;
int SwitchNum;

void setup() {
    Serial.begin(9600);
    pinMode(mosfet, OUTPUT);
    pinMode(butten, INPUT);
}

void loop() {
    bool oldState;
    bool nowState = digitalRead(butten);
    if ((nowState == LOW) && (oldState == HIGH)) {
        delay(20);
        nowState = digitalRead(butten);
        if (nowState == LOW) {
            if (++mode > 1) mode = 0;
            switch (mode) {
                case 0:
                    digitalWrite(mosfet, LOW);
                    break;
                case 1:
                    digitalWrite(mosfet, HIGH);
                    break;              
            }
        }
    }
    oldState = nowState;
    Serial.print(oldState);  //    <-    DIESE LINE CODE
}
Eigentlich ist der Code super simpel aber ich bin echt am Verzweifeln.
Wenn es hilft kann ich auch noch eine Zeichnung von der Schaltung machen.

Edit: -kleines update-
wenn ich statt Serial.print(oldState); -> Serial.print("Text"); eingebe funktioniert es auch nicht mehr Huh
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.01.2021, 13:07
Beitrag #2
RE: Serial.print - Einfluss auf Code
Setze die beiden State-Variablen in die globalen Definitionen.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.01.2021, 13:15
Beitrag #3
RE: Serial.print - Einfluss auf Code
(17.01.2021 13:07)hotsystems schrieb:  Setze die beiden State-Variablen in die globalen Definitionen.

Danke, manchmal kann es so einfach ein.
Ich verstehe nur leider nicht wie es zu dem Fehler kommt. Kannst du mir das erklären oder hast eine empfehlung so man das nachlesen kann?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.01.2021, 16:21 (Dieser Beitrag wurde zuletzt bearbeitet: 17.01.2021 16:22 von MicroBahner.)
Beitrag #4
RE: Serial.print - Einfluss auf Code
Es dürfte auch reichen, die Zeile
Code:
bool oldState;
in
Code:
static bool oldState;
zu ändern.
Eigentlich dürfte dein Sketch nämlich grundsätzlich nicht funktionieren. Du willst dir in 'oldState' ja den Wert von einem loop-Durchlauf zum nächste erhalten. So wie Du das definiert hast, wird die Variable 'oldState' aber bei jedem neuen Aufruf von loop neu angelegt, ohne dass sie mit einem Wert initiiert wird. Da steht halt einfach was zufälliges drin. Mit dem Serial.print(oldState) optimiert der Compiler anders, und es wird dann wohl bei jedem Durchlauf zufällig die Variable 'oldState' auf die gleiche RAM-Zelle fallen.

mit dem 'static' vor der Definition weist Du den Compiler an, 'oldState' eine feste Speicherzelle zuzuweisen und sie nicht bei jedem loop-Aufruf erneut dynamisch anzulegen.

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.01.2021, 16:48
Beitrag #5
RE: Serial.print - Einfluss auf Code
Vielen danke für die Info, hat mich in meinem Programmierverstehens weitergebracht.

(17.01.2021 16:21)MicroBahner schrieb:  Eigentlich dürfte dein Sketch nämlich grundsätzlich nicht funktionieren.
Glück ist manchmal besser als Wissen Blush
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  2x Serial Monitor betreiben RCudino 2 262 21.03.2021 11:47
Letzter Beitrag: RCudino
Question Alternative Serial.readString() xrzr91 5 429 12.03.2021 15:08
Letzter Beitrag: Tommy56
  Attiny85 Probleme mit Schleifen und Serial-Ausgabe lucki.luke 9 639 07.03.2021 20:55
Letzter Beitrag: Tommy56
  Anfänger Frage zu code Beispiel peter_schmieg 4 480 03.03.2021 12:24
Letzter Beitrag: Tommy56
  Zähler mit Taster und Serial Monitor LK2567 16 1.117 16.02.2021 22:37
Letzter Beitrag: Bitklopfer
  Ausgabe auf Serial Monitor vlakvark 8 781 31.12.2020 15:25
Letzter Beitrag: MicroBahner
  PIN Code Infrarot Fernbedienung Weserbergland 6 514 28.12.2020 15:05
Letzter Beitrag: Chopp
  Arrays und Serial Arduino DMX Master 38 1.793 22.12.2020 23:40
Letzter Beitrag: Arduino DMX Master
  zweiten Wert über Serial einlesen vlakvark 7 607 14.12.2020 21:06
Letzter Beitrag: Tommy56
  Modbus RTU Code Probleme dahans 4 469 10.12.2020 21:43
Letzter Beitrag: dahans

Gehe zu:


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