Der Strandbeest Arduino Sketch

Ursprünglich sollte der Quelltext eigentlich beim Make Magazin auf der Seite gehostet werden, ich übernehme das jetzt mal hier. Die nachfolgenden Zeilen machen zusammengefasst folgendes: Nach der Initialisierung in setup() wird in loop() zunächst geprüft, ob an einem der beiden RC Kanäle (hier: chA) überhaupt ein Puls anliegt. Falls nein, so ist das (mindestens) beim FlySky Receiver das Signal dafür, dass keine Verbindung zum Sender besteht. Dann bekommen die Servos ein Stoppsignal.

Ist auf Kanal A ein Puls messbar, so wird auch noch der zweite Kanal gemessen. Je nach Wertebereich werden dann die Servos angesteuert.

// Strandbeest RC V1.1 -- 2016-01-19
// OHNE 45° Steuerknüppel-Stellungen
// FlySky Receiver

#include <Servo.h> 

Servo links;
Servo rechts;

#define RechtsFwd 180
#define RechtsBck 0
// Neutral kann angepasst werden, wenn Servos "kriechen"
#define RechtsNeutral 90

#define LinksFwd 0 
#define LinksBck 180
// Neutral kann angepasst werden, wenn Servos "kriechen"
#define LinksNeutral 90

#define RCchA 9
#define RCchB 8

long chA;
long chB;

void setup()
{
  // Pins für den RC Receiver auf Input
  pinMode(RCchA, INPUT);
  pinMode(RCchB, INPUT);

  //Servos anmelden und auf Neutral stellen
  rechts.attach(5);
  rechts.write(RechtsNeutral);
  links.attach(6);
  links.write(LinksNeutral);
}

void loop()
{
  //Fernbedienungskanal A abfragen
  chA = pulseIn(RCchA, HIGH, 30000);
  //Wenn =0, dann kein RC Connect
  if (chA==0)
  {
    //Servos stoppen, falls keine RC Verbindung
    rechts.write(RechtsNeutral);
    links.write(LinksNeutral);
    chA = pulseIn(RCchA, HIGH, 30000);
  }
  else
  {
    //RC Verbindung vorhanden, also auch noch 
    //Fernbedienungskanal B abfragen
    chB = pulseIn(RCchB, HIGH, 30000);
    
    if (chB < 1200) //Steuerknüppel nach links 
    { 
      if ((chA > 1300)&&(chA < 1600)) 
      // Vor/Rück in etwa in Mittelstellung? 
      { //rechtes Servo vorwärts, linkes Servo rückwärts 
        rechts.write(RechtsFwd); 
        links.write(LinksBck);
      }
    } 
    else if (chB > 1700) //Steuerknüppel nach rechts
    {
      if ((chA > 1300)&&(chA < 1600)) 
      // Vor/Rück in etwa in Mittelstellung? 
      { //rechtes Servo rückwärts, linkes Servo vorwärts 
        rechts.write(RechtsBck); 
        links.write(LinksFwd); 
      } 
    } 
    else //Steuerknüppel Kanal B etwa auf Mitte 
    { 
      if (chA > 1700) //Steuerknüppel nach vorn
      {
        //Rechtes und linkes Servo vorwärts
        rechts.write(RechtsFwd);
        links.write(LinksFwd);  
      }
      else if  (chA < 1200) //Steuerknüppel nach hinten
      {
        //Rechtes und linkes Servo rückwärts
        rechts.write(RechtsBck);
        links.write(LinksBck);        
      }
      else // Kanal A und B etwa auf Mitte - also Stopp
      {
        //Beide Servos Stopp
        rechts.write(RechtsNeutral);
        links.write(LinksNeutral);
      }
    }
  }
}

5 Gedanken zu „Der Strandbeest Arduino Sketch

  1. hallo jo!
    ich bin gerade dabei, das strandbeest nachzubauen…
    vielen dank für den bausatz, einfach super!
    aber kannst du mir bitte den genauen typ der verwendeten servomotoren verraten? welches drehmoment sollte der motor schaffen?
    und wofür brauchts das LM2596 schaltreglermodul, das im make-heft in der liste der benötigten teile steht?
    lg jedenfalls aus innsbruck,
    susanna

    • Hallo Susanna,

      der Schaltregler ist dazu da, die Spannungsversorung für den RC Empfänger und die Servos zu gewährleisten. Je nach Akku und verwendeten Komponenten kann die Spannung, die direkt vom Akku kommt, zu hoch sein. Wenn das bei Dir passt, kann der Schaltregler entfallen. Wenn Du bei aliexpress.com nach „dc dc step down lm2596“ suchst, bekommt Du einen für ~80 Cent.

      Bei den Servos würde ich die Version mit Metallgetriebe bevorzugen. „Metal Gear Servo Continuous Rotation“ führt Dich ebenfalls wieder bei Aliexpress zu den gewünschten Teilen. Mit rund 6,50EUR pro Stück bist Du dabei.

      Viel Spaß beim Nachbauen!
      Viele Grüße
      Joachim

      • Bitte, bitte, bitte:
        Teil doch die Maße mit!
        Denn „MG995“ gibt es bei banggood.com (da kann man mit PayPal zahlen) schon für 4,79€

        • Sorry, aber ich habe nicht gedacht, dass das mit den so ein Problem ist. Standard Servos wie MG995/MG996 passen in die Ausschnitte – die sind in der Zeichnung 41*21mm groß.

          Viele Grüße
          Joachim

          • Danke für die Antwort!

            Ich wollte nur sicher gehen, da ich mich mit Servos nicht auskenne.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.