- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 23

Thema: Modellbahnübergang mit schranken

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    30.10.2016
    Beiträge
    14

    Frage Modellbahnübergang mit schranken

    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

Ä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
  •  

LiFePO4 Speicher Test