-         

Ergebnis 1 bis 5 von 5

Thema: PanoBot - Projektvorstellung und DREI Anfänger Fragen zum Code.

  1. #1

    PanoBot - Projektvorstellung und DREI Anfänger Fragen zum Code.

    Anzeige

    PanoBot - Projektvorstellung und DREI Anfänger Fragen zum Code.

    Hallo, ich bräuchte ein bisschen Hilfe, ich hab einen denke wirklich schönen „Panorama Bot“ gebaut aber bin absoluter Anfänger was Anduino und Programmieren angeht.

    Ich hab mein bestes als Anfänger getan aber komme nicht mehr weiter…

    Kommen wir aber erstmal zur Projektvorstellung Hier:


























    Alle 40 Bilder im Album/Galerie anschauen:

    http://www.directupload.net/galerie/376777/b4VKp86WZA/0
    http://www.directupload.net/file/u/5...m3w7ji_jpg.htm


    Mein Code mit „DREI FRAGEN“ Bitte Hier Downloaden:

    Der Code etc. ist leider länger als 34000 zeichen und ich kann ihn deswegen nicht normal Posten

    Also, der Code wurde jetzt unten als Anhang hinzugefügt!!!!


    die Alternative war:

    Ich benutz eigentlich nie nen Filehoster aber heute "war" es das einzige was mir einfällt
    (code aufteilen wäre blöd)

    Den ersten Filehoster den Googgle auspuckte= www.file-upload.net

    Also unter:

    Datum:23.03.2014
    Dateigröße:0.04 MB
    Downloads:1

    Downloadlink: panobot_final_einfachste_VIER_Buttons_version_0_0_ 1_ino.ino

    „der kleiste Download Button dort ist der richtige, alles andere ist werbung, etc...“




    Ich könnte jetzt sehr viel zum Code und warum dass alles so ist schreiben...der Code ist aufs
    einfachste zusammengewürfelt aus einzelnen Tutorials durch viele try&errors entstanden, es ist
    das einzige funktionierende was ich soweit hinbekommen habe. Für weiteres hab ich denke noch
    nicht genug andere Codes gesehen und noch nicht genug gelernt. Es gibt Tutorials von denen ich
    dachte sie würden mich weiterbringen aber ich konnte es als Anfänger nicht auf meinen Code
    übertragen.

    ich denke es ist alles selbsterklärend genug, ich hab viele Bilder gemacht (die sich übrigens
    weit Zoomen lassen) und alles im Code kommentiert etc. Und die Drei Fragen stehen übrigens
    ziemlich am Anfang von „void Loop“.


    Ich hoffe einfach mal dass ihr alles versteht und Helfen könnt.



    Diese Drei Fragen stehen im Code:

    // Frage 01: ich wollte hier noch ne servo bewegung am Anfang aber es wiederholt sich alles
    laufend... Der Anfang sollte nur einmal beim Anschalten und sich nicht laufend Wiederholen. wie
    kann ich das machen???

    // Frage 02:
    // Es ist gerade so das ich viele "Buttons" hätte (buttonPin 01-05), wie kann ich machen das
    ich wenige habe und z.b bei Button doppel drücken, drei mal drücken, oder 5sek gedrückt halten
    etc. meine ereignisse statfinden, die da wären: ………………im Code schauen…..

    //Frage03:
    // Wie kann ich machen das nicht dannach sondern während die "(untere drehscheibe) auf 30 grad"
    gleichzeitig der Servo "(seitliche drehscheibe) von -45 zu 90 grad" geht ???
    Angehängte Dateien Angehängte Dateien
    Geändert von Smokyyo (23.03.2014 um 04:46 Uhr)

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    13.01.2014
    Beiträge
    398
    Blog-Einträge
    3
    Frage 01: ich wollte hier noch ne servo bewegung am Anfang aber es wiederholt sich alles
    laufend... Der Anfang sollte nur einmal beim Anschalten und sich nicht laufend Wiederholen. wie
    kann ich das machen???
    Wenn du etwas in der loop machst wird es wiederholt. Daher der Name loop = Schleife.
    Einmalige Sachen evtl. ins setup.

    Frage 02:
    Es ist gerade so das ich viele "Buttons" hätte (buttonPin 01-05), wie kann ich machen das
    ich wenige habe und z.b bei Button doppel drücken, drei mal drücken, oder 5sek gedrückt halten
    etc. meine ereignisse statfinden, die da wären: ………………im Code schauen…..
    Etwas in der Art:
    Code:
    const int buttonPin = 2;     // Pin des Buttons
    
    void setup() 
    {
      //Serial.begin(9600);        // zum Testen mit Serial Monitor Kommentarzeichen entfernen
      pinMode(buttonPin, INPUT); 
    }
    
    void loop()  
    {
      int btnPressed = buttonManager(); // gibt Wert in ms zurück
      //if(btnPressed > -1)               // zum Testen im Serial Monitor Kommentarzeichen entfernen
      //  Serial.println(btnPressed);     // wenn Button gedrückt wurde: Ausgabe im Serial Monitor
        
      if(btnPressed > -1)
      {
        // kurz gedrückt
        if (btnPressed < 500)
        {
          // etwas tun 
        }
        // etwas länger gedrückt
        else if (btnPressed < 1000)
        {
          // etwas tun 
        }
        // länger gedrückt
        else if (btnPressed < 2000)
        {
          // etwas tun 
        }
        // lange gedrückt
        else
        {
          // etwas tun 
        }
      }  
    }
    
    int buttonManager() 
    {
      static boolean pressed = false;
      static unsigned long pressedMoment = 0;      
    
      if (digitalRead(buttonPin) == LOW)        // Button gedrückt?
      {
        if(pressed == false)                    // gerade gedrückt?
        {
          pressed = true;                       // speichern, dass gedrückt wurde
          pressedMoment = millis();             // aktuellen Zeitpunkt speichern
        }
      }
      else                                      // nicht gedrückt!
      {
        if(pressed)                             // wurde bis eben gedrückt?
        {
          pressed = false;                      // speichern, dass nicht mehr gedrückt wurde
          int elapsedTime = millis()-pressedMoment;
          if(elapsedTime > 50)                  // wurde mind. 50ms gedrückt?
            return elapsedTime;                 // -> Rückgabe gedrückte Zeit in ms
        }
      }
      return -1;
    }
    Geändert von Sisor (23.03.2014 um 11:49 Uhr)

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.551
    Code:
    ...
      if(btnPressed > -1)
      {
        // kurz gedrückt
        if (btnPressed < 500)
        {
          // etwas tun 
        }
        // etwas länger gedrückt
        else if (btnPressed < 1000)
        {
          // etwas tun 
        }
        // länger gedrückt
        else if (btnPressed < 2000)
        {
          // etwas tun 
        }
        // lange gedrückt
        else
        {
          // etwas tun 
        }
      }
    Vermutlich hängts mit meinen lausigen C-Kenntnissen zusammen . . . denn ich denke, dass bei btnPressed < 500 schon mal die ersten drei Fälle "// etwas tun" bis btnPressed < 2000 abgearbeitet werden, hübsch der Reihe nach, aber eben alle drei. Ich war mal - theoretisch - über diese Abfragekonfiguration gestolpert und mache die Button-drück-Zeit-Analysen etwas anders.
    Ciao sagt der JoeamBerg

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    13.01.2014
    Beiträge
    398
    Blog-Einträge
    3
    Vermutlich hängts mit meinen lausigen C-Kenntnissen zusammen . . . denn ich denke, dass bei btnPressed < 500 schon mal die ersten drei Fälle "// etwas tun" bis btnPressed < 2000 abgearbeitet werden, hübsch der Reihe nach, aber eben alle drei.
    Nope. Die Else machts möglich...

  5. #5
    Vielen Dank, ich werde irgenwann die Woche weiter am Code basteln, wird sicher hilfreich sein.

Ähnliche Themen

  1. RF12 - 433Mhz Funkmodul von Pollin. Fragen zum Code
    Von Kai.s0r im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 16
    Letzter Beitrag: 10.06.2010, 17:37
  2. Anfänger Einige Fragen zum Asuro
    Von kaeLum im Forum Asuro
    Antworten: 78
    Letzter Beitrag: 09.01.2008, 17:02
  3. drei Fragen zum Oszilloskop Tastkopf :-)
    Von wischwasch im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 29.03.2007, 20:37
  4. Anfänger mit vielen Allgemeinen und Fragen zum Asuro.
    Von Warlock im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 4
    Letzter Beitrag: 15.12.2006, 20:13
  5. Antworten: 1
    Letzter Beitrag: 23.12.2005, 08:10

Stichworte

Berechtigungen

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