- LiTime Speicher und Akkus         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: Modellbahnübergang mit schranken

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    30.10.2016
    Beiträge
    14

    Frage Modellbahnübergang mit schranken

    Anzeige

    Praxistest und DIY Projekte
    Hallo ich bin neu hier und habe mir vor einigen Tagen einen Arduino gekauft.

    Jetzt bin ich auf der Suche nach den richtigen Sketch.

    Das Programm sollte so anfangen das ich mit einem Tastschalter/später Reedkontakt den ganzen Ablauf einschalten kann.
    Dann sollten vier LED´s anfangen zu blinken und zwar abwechselnd immer 2LED´s ein und die anderen beiden LED´s aus schalten bis eine Zeit abgelaufen ist.
    In der gleichen Zeit sollen dann die zwei Servos einmal von 0°auf 150° und nach dem eine Zeit abgelaufen ist wieder von 150° auf 0° zurückfahren und dann warten bis der Tastschalter erneut betätigt wird.

    Also ich habe da einmal etwas kopiert und verändert leider gibt der Servo nicht auf und fährt immer wieder diesen loop. Was kann ich ändern.
    Wer von Euch könnte mir weiter helfen.


    hier einmal meinen x then Fehlversuch:
    #include <Servo.h>

    Servo myservo; // create servo object to control a servo
    // twelve servo objects can be created on most boards

    int pos = 0; // variable to store the servo position
    int pinEingang = 2;
    int pinAusgang = 9;

    void setup() {
    pinMode(pinEingang, INPUT_PULLUP);
    pinMode(pinAusgang, OUTPUT);

    myservo.attach(9); // attaches the servo on pin 9 to the servo object
    }

    void loop() {
    int zustand = digitalRead(pinEingang);
    if (zustand == HIGH) {
    digitalWrite(pinAusgang, LOW);
    } else { //zustand == LOW
    }
    for (pos = 50; pos <= 150; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos); // tell servo to go to position in variable 'pos'
    delay(50); // waits 15ms for the servo to reach the position
    }
    delay(20000);
    for (pos = 150; pos >= 50; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos); // tell servo to go to position in variable 'pos'
    delay(50); // waits 15ms for the servo to reach the position
    }
    delay(pinEingang);
    }

    Gruß
    Karsten

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    55
    Beiträge
    2.814
    Hallo,

    Das Typische Problem.
    Der Computer macht nicht das was man von ihm will sondern das was man ihm sagt.

    Der Prinzipielle Aufbau eines Arduino Sketchs:
    void setup() //wird genau einmal ausgeführt.
    void loop() // wird als Endlosschleife (loop) immer wieder ausgeführt.

    Am Beginn der Schleife fragst Du den Eingang ab.
    Dann kommt eine IF Verzweigung in der Du bei gesetztem Eingang einen Ausgang Low setzt.
    Und die bedingte Verzweigung ist zuende.
    Ab hier wird der Code bei jedem Schleifendurchlauf einmal ausgeführt. (Das ist daß was du dem Computer sagst)
    Dann kommt FOR eine Schleife in der der RC-Servo in 1° Schritten mit einem Delay von 50ms je Durchlauf verfährt.
    Dann 20 Sekunden warten und noch eine FOR Schleife die den RC-Servo wieder in Ausgangsposition bringt.

    Dann ein Delay von 2ms (der Zahlenwert der Variable pinEingang ist 2)
    int pinEingang = 2;
    Und die Schleife beginnt von vorne.

    Delay ist ein recht unpraktischer Befehl wenn man mehr als eine Sache parallel machen will (Taster abfragen, LED blinken und Servo verfahren)

    Als erstes lege mal den Schankenablauf in die bedingte Verzweigung, so daß dieser nur ausgeführt wird, wenn der Taster betätigt wurde.
    Damit ist das Loop Verhalten des Servos weg und wird zu einem Eventgesteuerten Verhalten.
    Danach sollten die Delays raus und dafür alle Wartezeiten per IRQ oder Timervergleich ausgeführt werden. So kann die CPU auch was machen wärend eine Sache auf das Verstreichen einer bestimmten Zeit wartet.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    30.10.2016
    Beiträge
    14
    Hallo i_make_it

    danke für Deine Antwort.
    Ich habe es jetzt versucht an Stelle vom delay das irq/IRQ ein zusetzten leider gab das wieder eine Fehlermeldung.
    Das mit dem Sketch schreiben ist für mich alles andere als einfach. Bin schon am überlegen ob ich den Bahnübergang ohne bewegliche Teile bauen sollte.
    Und den Arduino nur per Hand ein und aus schalte, wenn ein Zug sich ankündigt.

    Aber es muss doch eine Möglichkeit geben das auch ich das hin bekommen.

    Ich habe auch keine Ahnung wie ich jetzt den Tastenbefehl und den Servobefehl in das setup setzten soll und mit dem loop stoppen habe ich auch nicht wirklich verstanden.
    Immer diese ANFÄNGER

    Gruß
    Karsten

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    55
    Beiträge
    2.814
    Das Programmieren muß man halt erst mal lernen.
    Wobei jede Sprache wie bei einer menschlichen Sprache auch eine eigene Syntax und Gramattik hat.
    Der Vorteil ist halt, das der Wortschatz und die Regen deutlich weniger sind wie bei menschlichen Sprachen.

    Zitat Zitat von alterraucher Beitrag anzeigen
    den Arduino nur per Hand ein und aus schalte, wenn ein Zug sich ankündigt.
    Das wäre noch schlechter wie Suboptimal und da braucht es dann auch keinen Arduino.
    Da würde eine Verbindungsorientierte Steuerung aus einem Wechselblinker für die LEDs und einer Schrittschaltkette mit Timern für die Schranke gehen.
    Das wiederum ist dann was für Elektroniker.

    Fang mal klein an.

    Da ich nicht weiß welches Board Du hast, kann ich keine konkreten konkreten Angaben machen.

    Erster Sketch, alternierendes Blinken von zwei LEDs mit Delay.

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

    Code:
    //Variablen Deklaration
    unsigned long prevmicros = 0;
    
    void setup() {
    // Was halt beim Initialisieren so alles einmalig laufen soll
    }
    
    void loop() {
      // hier kann Code hin
      do {
        // hier kann Code hin
        unsigned long curmicros = millis();
        prevmicros = curmicros;
      } while (curmicros - prevmicros <= 5000);
      // hier kann Code hin
    }
    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.

    ........

    Sich also Teilproblem für Teilproblem an die Gesammtlösung rantasten.

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Eigentlich sollte man ein vernünftiges Buch über C und viele Übungen, am besten am PC mit all seinen Tools, empfehlen. Nun sind aber die Arduinios billiger als ein gutes Buch. Da brauchts dann einen Vorleser ...

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    16.02.2014
    Beiträge
    80
    Zitat Zitat von Klebwax Beitrag anzeigen
    Eigentlich sollte man ein vernünftiges Buch über C und viele Übungen, am besten am PC mit all seinen Tools, empfehlen. Nun sind aber die Arduinios billiger als ein gutes Buch. Da brauchts dann einen Vorleser ...

    MfG Klebwax
    Im Prinzip hast Du völlig Recht - aber ein Búch über C wird vermutlich mehr Verwirrung stiften als es hilft. Ich würde schon eher eine Lektüre speziell zum Arduino empfehlen. Gerade als Anfänger wird man sonst über die Unterschiede stolpern.

    Ich bin für meinen kleinen Horizont ganz gut mit im Internet lesen, ausprobieren und Arduino Kochbuch hingekommen. Das kann man bis ins 2. Kapitel hinein lesen/überfliegen um eine Grundstruktur zu bekommen und der Rest des dicken Wälzers ist ein wirklich gutes Nachschlagewerk zu allen denkbaren Aspekten rund um dieses Controllerchen.

    Genauer gesagt hatte ich mir seinerzeit versehentlich (LOL) die englische Ausgabe Arduino Cookbook gekauft, aber wenn ich mir die deutschen Amazonbewertungen so anschaue ist das wohl eher als Glücksfall zu bezeichnen. Neben einigen Übersetzungsproblemchen hat man bei der deutschen Ausgabe einfach die letzten beiden Kapitel weggelassen und gerade das letzte beschäftigt sich mit der speziellen Arduino-Hardware - das ist für meinen Geschmack wirklich ein tragischer Verlust!

    Gruß, Dieter

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    55
    Beiträge
    2.814
    Ein C Buch lesen wäre eine Möglichkeit, dann kann man die Grundsprache.
    Wenn man dann auf C++ umsteigt komm aber noch was Dazu und falls man am PC mit C# anfängt muß man bei Arduino dann wieder einen Schritt zurück machen.

    Man kann auch die Arduino Tutorials die es im Internet gibt runterladen und durcharbeiten.
    Dann lernt man halt spezifisch für das Zielsystem.

    Weil Arduino Buch und vernünftig oder gar Gut und eventuell auf deutsch, weis ich nicht ob es da was gibt.
    Ich hatte mir letzten Dezember das "Roboterbauen mit Arduino" geholt.
    Nehme ich meine anderen Bücher über den Selbsbau von mobilen Robotern als Referenz, Sage ich mal "wäre schön wenn es das Buch in GUT gäbe".
    Momentan steht es im Regal in der Hoffnung das mein Großneffe doch mal wieder weiter machen will.

    Dank Internet, findet man da aber zu allem und jedem rund um Arduino auch online was.

    Aber egal wie man es macht, die Lernkurve muß halt den eigenen Möglichkeiten angpasst sein, sonst funktioniert weder das eine noch das andere.
    Je nach Vorwissen kann man entweder einiges überspringen (Hello world/Blink), oder man muß halt z.B. zu einem Bereich verschiedene Quellen studieren und Übungen durchführen bis der Groschen fällt.

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.12.2010
    Ort
    NRW
    Beiträge
    223
    es gibt auch diese Sunfounder Kits als Einstieg, da ist die erste Übung schon mal ein blinkende LED meist

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von cdk Beitrag anzeigen
    Im Prinzip hast Du völlig Recht - aber ein Búch über C wird vermutlich mehr Verwirrung stiften als es hilft. Ich würde schon eher eine Lektüre speziell zum Arduino empfehlen. Gerade als Anfänger wird man sonst über die Unterschiede stolpern.
    Das seh ich anders. Um das grundsätzliche Verständniss von C bzw. C++ kommt man nicht herum. Und das kann man aus der speziellen Arduino Literatur sicher nicht lernen. Beispiele findet man hier im Forum. Da wird schon mal ein Stück Code, das nicht übersetzt, kräftig mit "Semikolons", "geschweiften Klammern" und "Sternchen" nachgewürzt bis der Compiler zufrieden ist. Zielfördernd ist das natürlich nicht. Und der Versuch, den Sourcecode eines fremden Programms (um mal den Begriff "Sketch" zu vermeiden) zu verstehen, wird dann auch scheitern.

    Mal etwas ketzerisch formuliert: Eigentlich Ist das Arduino System nicht eines für Anfänger, sondern eher eins für erfahrene Programmierer. Es macht sie schneller, es erspart ihnen das erneute Schreiben von Treibern oder Algorithmen, die sie schon oft geschrieben haben. Die erkennen auch schneller, wie man mit Defiziten von von vorhandenen Libraries/Sketchen umgehen muß. Der Anfänger, der möglicherweise noch nicht mal rudimentär C kann, ist da schnell zweiter Sieger.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    55
    Beiträge
    2.814
    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, was ich allerdings zunehmend feststelle ist unabhängig von C, da generell der Trend da ist, weg vom "selbst Denken" und strukturierten, systematischen Vorgehen, hin zu "einfach ein paar Komponenten zusammenstecken". Sei es Hardware oder Software.

    Ich merke das heutzutage schon bei vielen Kindern. Ich sehe 10-12 Jährige die mit Lego Mauern ohne Verbund der Steine zusammenstecken (Minecraft lässt grüßen) und das Spielzeug ist scheiße weil das gebaute nicht hällt. Zu meiner Zeit war diese planlose Art zu Bauen üblicherweise bis 6 weg und ab 7-8 wurde mit Fischertechnik komplexe Maschinen gebaut (Grundschule 2-3 Klasse, Werkunterricht).

    Die jenigen die das selber denken nicht anfangern und nur planlos copy & paste ausführen, sind dann immer "zweiter Sieger" unabhängig worum es geht.

    Bei diesem Tread fand ich es schon gut, das der TE bereits eigenen Code hat und man davon ausgehen kann das der Prozess des Nachdenkens eingesetzt hat. Sprich man kann Denkanstöße geben und auf Fehler in bereits entwickeltem aufmerksam machen.
    Geändert von i_make_it (01.11.2016 um 07:53 Uhr)

Seite 1 von 3 123 LetzteLetzte

Ähnliche Themen

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

Stichworte

Berechtigungen

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

LiFePO4 Speicher Test