- LiFePO4 Speicher Test         
Ergebnis 11 bis 20 von 23

Thema: Modellbahnübergang mit schranken

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #13
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    56
    Beiträge
    2.814
    So, kann das nicht funktionieren:
    Mit copy & paste ohne nachzudenken und die absoluten Grundlagen zu verstehen kann man kein Programm schreiben.
    Klicke auf die Grafik für eine größere Ansicht

Name:	struct.jpg
Hits:	12
Größe:	121,3 KB
ID:	32173
    Zitat Zitat von i_make_it Beitrag anzeigen
    Der Prinzipielle Aufbau eines Arduino Sketchs:
    void setup() //wird genau einmal ausgeführt.
    void loop() // wird als Endlosschleife (loop) immer wieder ausgeführt.
    Zitat Zitat von i_make_it Beitrag anzeigen
    Ich denke schon das auch viele C Anfänger mit der Arduino Sprachreferenz und Einsteiger Tutorials
    http://www.netzmafia.de/skripten/har...erhandbuch.pdf
    C lernen könnten,
    Es darf in einem Arduino Sketch nur genau einen
    void setup () {
    }
    Block und nur genau einen
    void loop () {
    }
    Block geben.

    Geschweifte Klammern markieren immer Anfang und Ende von Funktionen und Anweisungsblöcken.
    Es muß also zu jeder "{" auch eine "}" geben.

    Dein erster Fehler: das erste "void etup()" wird nirgendwo beendet.

    Zweiter Fehler es gibt mehr als ein "void setup()".

    Unschön sind die fehlenden Einrückungen, denn diese hätten Dir sofort das fehlen einer "}" gezeigt und erhöhen die Lesbarkeit ungemein.
    Unnütz und der Übersichtlichkeit abträglich, Remark (Kommentar) Zeichen "//" am Ende vieler Zeilen ohne das dort überhaupt ein Kommentar steht.

    Das zur allgemeinen Programmstruktur.

    Sinnhaftigkeit / Sinnlosigkeit des Code

    Die DO-WHILE Schleife wird solange durchlaufen, solange sie Abbruchbedingung nicht wahr ist.
    Nicht wahr ist sie solange "curmicros - prevmicros <= 5000", also das Ergebniss der Berechnung kleiner oder gleich 5000 ist.
    Da das nur ein Codebeispiel ist, habe ich sinnigerweise "prevmicros = curmicros" direkt in die Zeile davor gesetzt.
    Das Ergebniss der Berechnung wird also meist 0 oder 1 sein und so nie die 5000 übersteigen kann, was zu einer Endlosschleife führt (Für die ist aber ja schon "void loop()" zuständig).
    Versteht man das Konstrukt, fällt einem das auf und man weiß das diese Zeile vor die DO Zeile muß.
    Ich erkenne also das Du den Code nur kopiert hast ohne darüber nachzudenken.

    Aber selbst wenn das korrekt implementiert wäre, ist die Do Schleife immer noch sinnlos.
    Da "unsigned long curmicros = millis()" die Variable curmicros mit dem aktuellen Wert der Funktion "millis()" füttert.
    Sprich das Konstrukt prüft in diesem Fall ob mehr als 5 Sekunden vergangen sind.
    in der Gesamten DO-WHILE Schleife, sind aber:
    delay(50)
    delay(20000)
    delay(50)
    delay(10000)
    -------------
    = 30100

    Delays für 30,1 Sekunden drin.
    Das heist beim einmaligen Durchlaufen der DO-WHILE Schleife vergeht schon mehr als die achtfache Zeit der Abbruchbedingung. Damit würde die Schleife immer nach einem Durchlauf beendet.
    Womit eine Schleife an dieser Stelle keinen Sinn macht.
    Vor allem da das Konstrukt ja die Delays ersetzen soll (diese aber immer noch vorhanden sind.)

    Also noch mal, fang mit ganz kleinen Schritten bei Null an.
    Zitat Zitat von i_make_it Beitrag anzeigen
    Erster Sketch, alternierendes Blinken von zwei LEDs mit Delay.

    Zweiter Sketch, alternierendes Blinken von zwei LEDs mit Timer bzw. millis() (siehe Beispiel).

    Dritter Sketch, alternierendes Blinken von zwei LEDs, über eine bestimmte Dauer, gestartet durch Taster.

    Vierter Sketch, alternierendes Blinken von zwei LEDs, gestartet durch Interrupteingang.

    Fünfter Sketch, Schalter entprellen.

    Sechster Sketch, Servo bewegen.
    Du willst einen Sprintwettkampfe gewinnen, must aber erst mal Laufen lernen.
    Genaugenommen sehe ich Dich momentan noch nicht einmal krabbeln.
    Geändert von i_make_it (02.11.2016 um 06:47 Uhr)

Ähnliche Themen

  1. ACHTUNG!!! FEHLER BEI SIMPLEN IR-SCHRANKEN AUFGEDECKT!!!
    Von bexter im Forum Sensoren / Sensorik
    Antworten: 11
    Letzter Beitrag: 16.05.2005, 18:04

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen