- LiFePO4 Speicher Test         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: mehrere Programme

  1. #11
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.10.2013
    Ort
    Bitburg
    Beiträge
    119
    Anzeige

    E-Bike
    #include*<Servo.h>
    *
    Servo myservo;
    int pos = 0;
    *
    void setup()
    {*
    **myservo.attach(5);
    **for(pos = 0; pos < 500; pos += 1)
    **{**********************************
    ****myservo.write(pos);
    ****delay(15);
    **}*
    *myservo.attach(4);
    **for(pos = 0; pos < 30; pos += 1)
    **{**********************************
    ****myservo.write(pos);
    ****delay(15);
    **}*
    *myservo.attach(3);
    **for(pos = 0; pos < 0; pos += 1)
    **{**********************************
    ****myservo.write(pos);
    ****delay(15);
    **}*
    ***myservo.attach(2);
    **for(pos = 0; pos < 40; pos += 1)
    **{**********************************
    ****myservo.write(pos);
    ****delay(15);
    **}*
    *
    }*
    *
    void loop()
    {
    }
    Ich hab mich mal eingelesen über FreeRTOS. Die Idee ist ganz gut und sicher eine gute Lösung,aber ich habe im Moment wenig Zeit um mich in das Programm einzuarbeiten.

  2. #12
    RN-Premium User Roboter Genie Avatar von 5Volt-Junkie
    Registriert seit
    05.03.2008
    Alter
    37
    Beiträge
    947
    Die Antwort auf alle Fragen lautet nicht immer Linux
    @Andri: Dein Programm wird nur 1x im Setup ausgeführt, wenn der Mikrocontroller startet.

    Du musst die Ansteuerung schon in die Loop Schleife verlagern, damit die Servos ständig die Soll-Position bekommen und nicht nur einmal. Schau doch mal in das Beispielprogramm

    Code:
    // Sweep// by BARRAGAN <http://barraganstudio.com> 
    // This example code is in the public domain.
    
    
    
    
    #include <Servo.h> 
     
    Servo myservo;  // create servo object to control a servo 
                    // a maximum of eight servo objects can be created 
     
    int pos = 0;    // variable to store the servo position 
     
    void setup() 
    { 
      myservo.attach(9);  // attaches the servo on pin 9 to the servo object 
    } 
     
     
    void loop() 
    { 
      for(pos = 0; pos < 180; 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(15);                       // waits 15ms for the servo to reach the position 
      } 
      for(pos = 180; pos>=1; pos-=1)     // goes from 180 degrees to 0 degrees 
      {                                
        myservo.write(pos);              // tell servo to go to position in variable 'pos' 
        delay(15);                       // waits 15ms for the servo to reach the position 
      } 
    }

  3. #13
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.10.2013
    Ort
    Bitburg
    Beiträge
    119
    Ich will ja,dass das Programm nur einmal Ausgeführt wird.
    Geändert von Andri (19.12.2013 um 18:50 Uhr)

  4. #14
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.10.2013
    Ort
    Bitburg
    Beiträge
    119
    Kann man das in die Loop Schleife packen,ohne dass der Servo ständig hin und her dreht? Also sich nur einmal dreht,die Position hält und dann der nächste Ablauf kommt.
    Ich habs mal so Ausprobiert,hat aber nicht geklappt:

    //*Sweep
    //*by*BARRAGAN*<http://barraganstudio.com>*
    //*This*example*code*is*in*the*public*domain.


    #include*<Servo.h>
    *
    Servo myservo; // create servo object to control a servo
    ****************// a maximum of eight servo objects can be created
    *
    int pos = 0; // variable to store the servo position
    *
    void setup()
    {*
    **myservo.attach(5); // attaches the servo on pin 9 to the servo object

    **myservo.attach(4); // attaches the servo on pin 9 to the servo object
    }*
    *
    *
    *
    void loop()
    {*
    **for(pos = 0; pos < 80; 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(15); // waits 15ms for the servo to reach the position
    **}*
    **
    **for(pos = 0; pos < 70; 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(15); // waits 15ms for the servo to reach the position
    **}*
    }*

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Das größte Problem, dass ich bei deinem Source-Code sehe, ist, dass du nur ein Servo-Objekt für 4 Servos erstellst.
    Vorschlag:
    Code:
    #include<Servo.h>
    // 4 Servos
    Servo servo1; 
    Servo servo2; 
    Servo servo3; 
    Servo servo4; 
    
    // Positionen der 4 Servos
    int posServo1 = 0;  
    int posServo2 = 0;  
    int posServo3 = 0;  
    int posServo4 = 0;
    
    void setup()
    {
    // Servos den Pins zuweisen
       servo1.attach(2); 
       servo2.attach(3);
       servo3.attach(4); 
       servo4.attach(5);
    
    // Bewegungen 
       for(posServo4 = 0; posServo4 < 500; posServo4++)
       {
          servo4.write(posServo4);
          delay(15);
       }
       for(posServo3 = 0; posServo3 < 500; posServo3++)
       {
          servo3.write(posServo3);
          delay(15);
       }
       for(posServo2 = 0; posServo2 < 500; posServo2++)
       {
          servo2.write(posServo2);
          delay(15);
       }
       for(posServo1 = 0; posServo1 < 500; posServo1++)
       {
          servo1.write(posServo1);
          delay(15);
       }
    }
    
    void loop() {}
    Wenn du tatsächlich nur einmal den Bewegungsablauf ausführen willst, ist es ok die Befehle ins setup zu schreiben und die loop leer zu lassen.
    Allerdings soll das Programm später bestimmt auf irgendwelche Eingaben reagieren, dann muss das in die loop.
    Die vier Variablen für die Positionen kann man später so nutzen:

    Code:
    // weitere Bewegung: Servo4 zurück auf '250'
    for(; posServo4 > 250; posServo4--)
    {
       servo4.write(posServo4);
       delay(15);
    }
    Geändert von Sisor (13.01.2014 um 22:20 Uhr)

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Neue Programme
    Von Martinius11 im Forum Asuro
    Antworten: 3
    Letzter Beitrag: 07.11.2009, 13:46
  2. Mehrere Programme
    Von RobotMichi im Forum Robby RP6
    Antworten: 1
    Letzter Beitrag: 03.07.2009, 16:59
  3. Programme
    Von AsUro-KidY im Forum Asuro
    Antworten: 6
    Letzter Beitrag: 16.03.2007, 20:59
  4. Platinenlayout-Programme...
    Von morelli im Forum Konstruktion/CAD/3D-Druck/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 8
    Letzter Beitrag: 17.05.2006, 19:46
  5. Mehrere Programme gleichzeitig laufen lassen geht nicht.
    Von mesli-andres im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 23
    Letzter Beitrag: 11.06.2005, 21:29

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress