- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 30

Thema: Ich brauch professionelle Hilfe bei Programmierung meines Kranes

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Ok,

    Ich habe S1 und S2 definiert wie du angegeben hat. Aber mit Großbuchstaben S, weil klein nicht erlaubt ist. (Verstehe ich auch nicht warum.) Jedenfals nicht ein einziges Kleinbuchstabe s (mit oder ohne weitere Nummer):

    Und naturlich jeder stelle von s1 und s2 in den Code geändert zu S1, S2.
    Code:
    #define S1 4
    #define S2 6
    Und dann Kompiliert den IDE den Code ziemlich ohne Problemen. Ja, den Kompiler hat es Prima gefunden. Leider nicht für den Code-Polizei.

    Weil du auf verschiedene stellen ein if-Befehl macht wie das hier:

    Code:
    if (Kranstart,HIGH)  digitalWrite (RELAISAUF, HIGH);
    Den Komma ist ein gültige Operator, aber es wird nicht ausgewertet wie du wahrscheinlich möchtest. (ausführen wenn Kranstart pin HIGH ist, oder nicht wann es LOW ist) Bei einer derartige if-Befehl wirdt den Komma-operator die erste Gesetzen vor den (letzte) Komma jedenfalls ausführen (den Variabel Kranstart macht nichts alleine). Aber nur das letzte Gesetz hinter der Komma wird für den Entscheidung sorgen. (HIGH=1, und alles was nicht gleich 0 ist wird immer als Wahr gekennzeichnet) Alles da vorne macht nichts dazu. Also was hier oben steht ist:

    Code:
    if ( 1!=0 )  digitalWrite (RELAISAUF, HIGH);  //      '1 ist nicht gleich an 0'
    Deshalb wird das digitalWrite jedenfalls ausgeführt. Nur nicht wenn den Variabele Kranstart die wert 0 bekommen hat.

    Die richtige Verwendung von ein if Befehl ist:
    Code:
    if ( digitalRead(Kranstart)==HIGH ) digitalWrite (RELAISAUF, HIGH);
    Das gleiche passiert bei den while- loop am ende. Das hat nähmlich auch ein Quasi-if-Befehl in sich.
    Code:
    while(S2,HIGH);
    Das ist ein Endloss-schleife, und dein Programm wird da niemals rauskommen. Arduino loop() wirdt nicht weiter loop-en.

    Ok, dann haben wir nun die Logik Befehlen korrigiert. Dann stimmt es doch? Nein leider noch nicht.

    Zurück zum anfang von den loop() Funktion:
    void loop()
    { //Anfang der loop-Funktion

    value = digitalRead(S2); // Endschalter wird eingelesen

    digitalWrite(Kranstart,value); // Warte mall!! Kranstart ist als int definiert, und hat den wert HIGH (1) bekommen. Das ist doch kein Pin-bezeichnung!!!
    // das ist gleich: digitalWrite(1, value); Wird kommisches verhalten geben mit den Seriele port (TX) Keine ahnung was Kranstart hier bedeuten soll.


    { // Wieso alles hiernach in ein {} scope einfassen? Sollte den { nicht gerade nach den ) kommen?

    if ( digitalRead(Kranstart)==HIGH ) digitalWrite (RELAISAUF, HIGH);

    // Hier ist das if-Befehl schon am ende, wegen der ; am ende des if-Befehls, und den fehlende { dazwischen. Alles hiernach wird jedenfalls ausgeführt.


    delay(2600);
    digitalWrite (RELAISAUF, LOW);
    delay(2000);

    myStepper1.step(-3600); //Kran ausdrehen (Winkel einstellen)
    delay(2000); //Warten
    digitalWrite (RELAISAB, HIGH);
    delay(13000); //Seil ab für 13 sec
    digitalWrite (RELAISAB, LOW);
    delay(20000);

    digitalWrite (RELAISAUF, HIGH);
    delay(13000);
    digitalWrite (RELAISAUF, LOW);
    delay(2000);


    myStepper1.step(3600); //Kran eindrehen
    delay(3000);

    digitalWrite (RELAISAB, HIGH);
    delay(2600);
    digitalWrite (RELAISAB, LOW);
    delay(5000);
    } // Ende von if-Befehl Wahr-code

    {
    while(S2,HIGH); //Aber nür eines mall! Hängt hier ab. Gleich wie bei if Korrigieren.
    }
    } //Ende von loop()
    - - - Aktualisiert - - -

    Ok,

    Ich habe S1 und S2 definiert wie du angegeben hat. Aber mit Großbuchstaben S, weil klein nicht erlaubt ist. Jedenfals nicht ein einzige Kleinbuchstabe s (mit oder ohne weiteres Nummer):

    Und naturlich jeder stelle von s1 und s2 in den Code geändert zu S1, S2.
    Code:
    #define S1 4
    #define S2 6
    Und dann Kompiliert den IDE den Code ziemlich ohne Problemen. Ja, den Kompiler hat es Prima gefunden. Leider nicht für den Code-Polizei.

    Weil du auf verschiedene stellen ein if-Befehl macht wie das hier:

    Code:
    if (Kranstart,HIGH)  digitalWrite (RELAISAUF, HIGH);
    Den Komma ist ein gültige Operator, aber es wird nicht ausgewertet wie du wahrscheinlich möchtest. (ausführen wenn Kranstart pin HIGH ist, oder nicht wann es LOW ist) Bei einer derartige if-Befehl wirdt den Komma-operator die erste Gesetzen vor den (letzte) Komma jedenfalls ausführen (den Variabel Kranstart macht nichts alleine), aber nur das letzte Gesetz hinter der Komma wird für den Entscheidung sorgen. (HIGH=1, und alles was nicht gleich 0 ist wird immer als Wahr gekennzeichnet) Alles da vorne macht nichts dazu. Also was hier oben steht ist:

    Code:
    if ( HIGH==1 )  digitalWrite (RELAISAUF, HIGH);
    Deshalb wird das digitalWrite jedenfalls ausgeführt. Eben wenn Kranstart möglicherweise LOW oder 0 ist.

    Die richtige Verwendung von ein if Befehl ist:
    Code:
    if ( digitalRead(Kranstart)==HIGH ) digitalWrite (RELAISAUF, HIGH);
    Das gleiche passiert bei den while- loop am ende. Das hat nähmlich auch ein Quasi-if-Befehl in sich.
    Code:
    while(S2,HIGH);
    Das ist ein Endloss-schleife, und dein Programm wird da niemals rauskommen. Arduino loop() wirdt nicht weiter loop-en.

    Ok, dann haben wir nun die Logik Befehlen korrigiert. Dann stimmt es doch? Nein leider noch nicht.

    Zurück zum anfang von den loop() Funktion:
    void loop()
    { //Anfang der loop-Funktion

    value = digitalRead(S2); // Endschalter wird eingelesen

    digitalWrite(Kranstart,value); // Warte mall!! Kranstart ist als int definiert, und hat den wert HIGH (1) bekommen. Das ist doch kein Pin-bezeichnung!!!
    // das ist gleich: digitalWrite(1, value); Wird kommisches verhalten geben mit den Seriele port (TX) Keine ahnung was Kranstart hier bedeuten soll.


    { // Wieso alles hiernach in ein {} scope einfassen? Sollte den { nicht gerade nach den ) kommen?

    if ( digitalRead(Kranstart)==HIGH ) digitalWrite (RELAISAUF, HIGH);

    // Hier ist das if-Befehl schon am ende, wegen der ; am ende des if-Befehls, und den fehlende { dazwischen. Alles hiernach wird jedenfalls ausgeführt.


    delay(2600);
    digitalWrite (RELAISAUF, LOW);
    delay(2000);

    myStepper1.step(-3600); //Kran ausdrehen (Winkel einstellen)
    delay(2000); //Warten
    digitalWrite (RELAISAB, HIGH);
    delay(13000); //Seil ab für 13 sec
    digitalWrite (RELAISAB, LOW);
    delay(20000);

    digitalWrite (RELAISAUF, HIGH);
    delay(13000);
    digitalWrite (RELAISAUF, LOW);
    delay(2000);


    myStepper1.step(3600); //Kran eindrehen
    delay(3000);

    digitalWrite (RELAISAB, HIGH);
    delay(2600);
    digitalWrite (RELAISAB, LOW);
    delay(5000);
    } // Ende von if-Befehl Wahr-code

    {
    while(S2,HIGH); //Aber nür eines mall! Hängt hier ab. Gleich wie bei if Korrigieren.
    }
    } //Ende von loop()
    Geändert von Valen (21.07.2015 um 20:56 Uhr)

Ähnliche Themen

  1. Hilfe beim umsetzen der Elektronik meines Robi´s
    Von Benny1989 im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 15
    Letzter Beitrag: 26.05.2012, 12:45
  2. Programmierung meines Hexapods
    Von lucaosswald im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 3
    Letzter Beitrag: 11.01.2012, 16:01
  3. Brauch dringend hilfe!!!!!!!!!!!
    Von julianf123 im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 2
    Letzter Beitrag: 05.07.2009, 16:59
  4. brauch Hilfe zum ADC
    Von molleonair im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 13.03.2006, 14:17
  5. brauch hilfe für projekt
    Von chioro im Forum PIC Controller
    Antworten: 4
    Letzter Beitrag: 20.02.2006, 11:17

Stichworte

Berechtigungen

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

Solar Speicher und Akkus Tests