- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: mehrere Programme

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

    mehrere Programme

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    kann man auf dem Arduino auch mehrere Programme abspielen ohne ein anderes zu unterbrechen? Weil ich baue einen Roboterarm und immer wenn das nächste Programm abgespielt wird fällt der untere Teil wieder runter,weil die Hand schwerer ist als der Unterarm.
    Wenn nicht hat jemand eine Idee wie man das beheben kann das der Unterarm nicht immer runter fällt.

    Danke im Voraus!

  2. #2
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Hey,

    nein das geht nicht, da ein Mikrocontroller über keinerlei Möglichkeiten verfügt die Ausführung mehrerer Programme zu steuern.
    Du musst die Programme zu einem verbinden oder du greifst auf mehrere Mikrocontroller mit einem Kommunikationsbus wie z.B. I²C zurück.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  3. #3
    RN-Premium User Roboter Genie Avatar von 5Volt-Junkie
    Registriert seit
    06.03.2008
    Alter
    37
    Beiträge
    947
    Wie Kampi schon gesagt hat, ist es möglich, dass man alle Servos mit einem Programm auf einem Mikrocontroller steuern kann. Poste doch mal dein Programm hier rein.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.10.2013
    Ort
    Bitburg
    Beiträge
    119
    Ich setzt die Pins und Winkel dem entsprechend immer ein aber das ist so das Musterprogramm. Der Arm belegt die Pwm Pins 2-5.
    Code:
    #include <Servo.h> 
     
    Servo myservo;   
    int pos = 0;   
     
    void setup() 
    { 
      myservo.attach(5);  
      for(pos = 0; pos < 180; pos += 1)  
      {                                  
        myservo.write(pos);              
        delay(15);                     
      } 
     
    } 
     
    void loop() 
    {
    }

  5. #5
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Hallo !

    Mann könnte auch quasi Multitasking machen, indem alle wichtige Daten z.B. nacheinander neu berechnete Positionen von mehreren Servos bis zur nächster Ausrechnung im RAM zwischengespeichert und den Servos ständig zugeführt werden. Über "Cäh" habe ich aber k.A.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.10.2013
    Ort
    Bitburg
    Beiträge
    119
    Okay danke erstmal ich schreibe das alles in ein Programm das ist glaub ich am effektivsten.

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Ein Servo will immer Pulse haben, so ist es gebaut. Wie man mehrere Servos gleichzeitig und andauernd mit Pulsen versorgt, hat oberallgeier an anderer Stelle gezeigt. Such mal danach.

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

  8. #8
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Ist kurz OT, aber das fiel mir gerade ein

    Zitat Zitat von 5Volt-Junkie Beitrag anzeigen
    Wie Kampi schon gesagt hat, ist es möglich, dass man alle Servos mit einem Programm auf einem Mikrocontroller steuern kann. Poste doch mal dein Programm hier rein.
    Wobei....wenn ich es ganz genau nehme, habe ich murks erzählt. Es gibt einen Kerl der hat auf nem 8-Bit Controller einen ARM Emulator gebaut und dadrüber Linux laufen lassen...das ist schon mega krank und wenn man die 2h Bootzeit in Kauf nimmt, hat man auch Multitasking, allerdings mit einer Frequenz von etwa 6kHz meine ich ^.^

    http://www.pro-linux.de/news/1/18217...prozessor.html
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    49
    Beiträge
    1.146
    Zitat Zitat von Kampi Beitrag anzeigen
    nein das geht nicht, da ein Mikrocontroller über keinerlei Möglichkeiten verfügt die Ausführung mehrerer Programme zu steuern.
    Auch ohne gleich ein Linux aufspielen zu müssen, kann man sich mit einem relativ einfachen Scheduler ein durchaus brauchbares Multitasking für einen ATMega bauen.
    Man findet da ne ganze Menge Beispiele im Netz...

    Gruß,
    askazo

  10. #10
    Max Web
    Gast
    Auch ohne gleich ein Linux aufspielen zu müssen, kann man sich mit einem relativ einfachen Scheduler ein durchaus brauchbares Multitasking für einen ATMega bauen.
    Man findet da ne ganze Menge Beispiele im Netz...
    Wenn's nicht unbedingt ein eigener Scheduler sein soll, dann könnte sich ein Blick auf FreeRTOS o.Ä. lohnen.
    Dafür gibt es auch schon Ports für den ATMega, ggfs. muss man dort noch manuell ein Paar Anpassungen machen.
    Ein weiterer Vorteil von FreeRTOS ist die Portabilität auf andere µC-Familien, die High-Level-Programmierung
    funktioniert auf einem ATMega (fast) genauso wie etwa auf einem ARM Cortex Mx µC.

    Das wäre allerdings die "Mit Atombomben auf Ameisen geschossen"-Lösung, die auch nicht gerade die Performanteste ist.

    Statt die Servos nur zu gewissen Zeiten in irgendeinem Unterprogramm anzusteuern bietet es sich doch an, die eigentliche Servosteuerung (->Pulsgenerierung) interruptgesteuert mit einem
    der Timer des ATMega zu erledigen. In Deinen Unterprogrammen berechnest Du dann die neuen Sollwerte, welche dann in der ISR an die Servos weitergegeben werden.
    Vermutlich macht Deine Library genau dies - poste doch mal die Inhalte der Servo.h und Servo.c. Ein Auszug aus Deinem Hauptptogramm (wo setup() und loop() aufgerufen werden könnte auch noch hilfreich sein.

    Grüße,

    Max

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Neue Programme
    Von Martinius11 im Forum Asuro
    Antworten: 3
    Letzter Beitrag: 07.11.2009, 14:46
  2. Mehrere Programme
    Von RobotMichi im Forum Robby RP6
    Antworten: 1
    Letzter Beitrag: 03.07.2009, 17:59
  3. Programme
    Von AsUro-KidY im Forum Asuro
    Antworten: 6
    Letzter Beitrag: 16.03.2007, 21: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, 20: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, 22:29

Berechtigungen

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

12V Akku bauen