- Akku Tests und Balkonkraftwerk Speicher         
Seite 7 von 7 ErsteErste ... 567
Ergebnis 61 bis 64 von 64

Thema: fahrzeug mit vier motoren und vier encodern

  1. #61
    Benutzer Stammmitglied
    Registriert seit
    19.05.2015
    Beiträge
    69
    Anzeige

    Powerstation Test
    Danke inka, Dir auch gutes neues Jahr!

    Es tut mir leid, ich war so fixiert darauf Deine if's ein bischen zu vereinfachen, dass ich einen Seiteneffekt nicht gesehen habe:
    Du triffst die Entscheidungen was als nächstes kommt in den if's, die sich jetzt gegenseitig nicht mehr ausschliessen.
    Das klar aus dieser Ausgabe ablesbar
    Code:
    Ping: 71 cm
    loop - rotiere_links - if-abfrage_2
    loop - rotiere_rechts - if-abfrage_4
    loop - alle_stepper_vorwärts - if-abfrage_5
    Ping: 82 cm
    das Programm springt ins zweite if, ändert die Variablen und eigentlich müßte hier jetzt die Fahrt ausgeführt werden, bevor es weiter zu den folgenden if's geht.
    Oder die if's müssten prüfen ob vorangegangene if's ein neues Fahrkommando angewiesen haben, dass noch nicht ausgeführt wurde.
    Im Beispiel muss im 4. if geprüft werden ob alle stepper.isDone() eben gegeben ist oder nicht.

    Ich hatte ein andere Auswahlmethode im Hinterkopf, deswegen hatte das übersehen das diese Prüfung doch immer gemacht werden muss.

    Wie lässt sich's ändern?
    Zuerst einmal ein Wort zu den for(idx...)-Schleifen mit denen Du über die Stepper iterierst: In Anweisungen ist das praktisch, in logischen Aussagen wie
    Code:
      while ( ! (stepper[stepper_VL].isDone() && stepper[stepper_HL].isDone()
                 && stepper[stepper_VR].isDone() && stepper[stepper_HR].isDone() ) )
    leider nicht. Das wir diese Bedingung mehrfach brauchen lässt sich das in eine Funktion lesbarer zusammenfassen
    Code:
    boolean fahrt_fertig() {
      return        stepper[stepper_VL].isDone() && stepper[stepper_HL].isDone()
                 && stepper[stepper_VR].isDone() && stepper[stepper_HR].isDone();
    }
    Ausserdem bietet es sich an, noch eine Funktion zu schreiben:
    Code:
    void fahrt_ausfuehren() {
      while ( ! fahrt_fertig() )
      {
        for (idx = stepper_VL; idx < stepper_MAX; idx++)
        {
          stepper[idx].run();
         // delay(1);
        }
      }
    }
    damit ändert sich Dein letztes loop-Beispiel so ab:
    Code:
    void loop()
    {
        hindernis_vorh();
        /****************************************/
        if(fahrt_fertig()) {
          if (rueckwaerts == false && hindernis == true)
          {
            Serial.println("start - Stepper rückwärts- if-abfrage_1");
            alle_stepper_rueckwaerts();
    
          }
          else if (vorwaerts == false && hindernis == false)
          {
            Serial.println("start - Stepper vorwärts- else-abfrage_1");
            alle_stepper_vorwaerts();
    
          }
        }
        /*************************************/
    
        if (fahrt_fertig())
        {
          if (rueckwaerts == false && rotate_li == false)
          {
            Serial.println("loop - rotiere_links - if-abfrage_2");
            rotieren_links();
          }
        }
    
    
        if (fahrt_fertig())
        {
          if (rotate_li == true && vorwaerts == false)
          {
            Serial.println("loop - alle_stepper_vorwärts - if-abfrage_3");
            alle_stepper_vorwaerts();
          }
        }
    
        if (fahrt_fertig())
        {
          if (vorwaerts == true && rotate_re == false)
          {
            Serial.println("loop - rotiere_rechts - if-abfrage_4");
            rotieren_rechts();
          }
        }
    
        if (fahrt_fertig())
        {
          if (rotate_re == true && vorwaerts == true)
          {
            Serial.println("loop - alle_stepper_vorwärts - if-abfrage_5");
            alle_stepper_vorwaerts();
          }
        }
      /*****************************************/
      fahrt_ausfuehren();
    }
    ich kann das gerade hier gerade leider nicht durchcompilieren doch ich hoffe das Schema ist klar.
    Die Äusseren if(fahrt_fertig()) sorgen jetzt dafür das nur etwas geändert wird, wenn noch kein neues Fahrtkommando gesetzt wurde.
    Natürlich könntest Du Deine if's auch so
    Code:
          if (fahrt_fertig() && vorwaerts == true && rotate_re == false)
          {
            Serial.println("loop - rotiere_rechts - if-abfrage_4");
            rotieren_rechts();
          }
    schreiben, das ist Geschmackssache.

    Dadurch das es jetzt "fahrt_ausfuehren()" gibt kannst Du die Stepper auch einfach an anderen Stellen ein vorgegebenen Kommando ausführen lassen. Damit lassen sich dann Sequenzen wie
    Code:
    alle_stepper_vorwaert();
    fahrt_ausfuehren();
    
    rotieren_rechts();
    fahrt_ausfuehren();
    
    usw...
    schreiben.

    Noch ein ganz anderer Gedanke.
    In allen deinen Kommandofunktionen hast Du "setSPR()" "setRPM()" mit immer wieder den gleichen Werten drin. Du könntest _einmal_ das in die "setup()" Funktion schreiben und das sonst überall löschen. Dazu dann aber
    Code:
    void alle_stepper_stop()
    {
      stepper_stop = true;
      for (idx = stepper_VL; idx < stepper_MAX; idx++)
      {
        stepper[idx].setDirection(STOP);
      }
      fahrt_ausfuehren();
    }
    abändern.
    "setDirection(STOP)" hält die Stepper erst an, wenn "run()" einen internen Step ausführt (die CostumStepper-Lib implementiert das so).

    Wenn Du die mehrfachen "setSPR", setRPM" dann löschen kannst, wird Dein Sketch kürzer und dadurch etwas übersichtlicher.


    Gruss

    Chris
    Geändert von botty (07.01.2016 um 15:31 Uhr)

  2. #62
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    76
    Beiträge
    2.180
    hallo,


    der ausbau des fahrgestells geht weiter, linienfolgesensoren sind dazugekommen (hier steht das fahrgestell auf der induktiven ladestation):

    Klicke auf die Grafik für eine größere Ansicht

Name:	IMG_8881-1.jpg
Hits:	14
Größe:	62,0 KB
ID:	31265


    auch habe ich wohl den großteil (so hoffe ich zumindest) der lib "customStepper" verstanden, trotzdem gibt es da noch lücken, ich komme jetzt wieder nicht weiter:


    aus dem gesamtcode habe ich die die loopschleife und die funktionen herauskopiert wo ich den fehler vermute, der ganze code schien mir zu viel und auch nicht unbedingt erforderlich, ich poste den aber gerne nach...


    Problem nr.1:
    nach dem starten prüft der robby ob hindernis vorhanden, wenn keines da ist, fährt er nach vorne, reagiert auf ein hindernis, in dem er auf rückwärts schaltet, allerdings sollte er nur eine umdrehung der räder von 30° durchführen, er kommt aber aus dem rückwärtsgang nicht mehr raus:


    hier die loopschleife:


    Code:
    void loop()
    {
      hindernis_vorh();
    
    
        if (fahrt_fertig())
        {
          if (hindernis == true)
          {
            Serial1.println("start - Stepper rückwärts- hindernis if-abfrage_1");
            Serial.println("start - Stepper rückwärts- hindernis if-abfrage_1");
            hindernis = false;
            alle_stepper_rueckwaerts();
          }
          else 
          {
            Serial1.println("start - Stepper vorwärts- hindernis else-abfrage_1");
            Serial.println("start - Stepper vorwärts- hindernis else-abfrage_1");
    //        rechts_oder_links();
            alle_stepper_vorwaerts();
          }
        }
      fahrt_ausfuehren();
    }

    "fahrt fertig" und "fahrt ausführen" funktionen:
    Code:
    boolean fahrt_fertig()
    {
      return        stepper[stepper_VL].isDone() && stepper[stepper_HL].isDone()
                    && stepper[stepper_VR].isDone() && stepper[stepper_HR].isDone();
    }
    
    
    void fahrt_ausfuehren()
    {
      while ( ! fahrt_fertig() )
      {
        for (idx = stepper_VL; idx < stepper_MAX; idx++)
        {
          stepper[idx].run();
          // delay(1);
        }
      }
    }

    "alle_stepper_vorwaerts" und "alle_stepper_rueckwaerts" funktionen:
    Code:
    void alle_stepper_vorwaerts(void)
    {
      if (fahrt_fertig()) rechts_oder_links();
      
      if (start_ping == true) ping_distanz();
    
    
      if (hindernis == true)
      {
    
    
        Serial1.print(hindernis);
        Serial1.println("  hindernis - true - alle_stepper_rückwärts - if-abfrage_6");
        Serial.print(hindernis);
        Serial.println("  hindernis - true - alle_stepper_rückwärts - if-abfrage_6");
        hindernis = false;
    
    
        for (idx = stepper_VL; idx < stepper_MAX; idx++) //alle Stepper rückwärts
        {
          stepper[idx].setRPM(12);
          stepper[idx].setSPR(4075.7728395);
          stepper[idx].setDirection(CCW);
          stepper[idx].rotateDegrees(30); //rotate(1)
        }
    
    
      }
      else
      {
    
    
        for (idx = stepper_VL; idx < stepper_MAX; idx++)//alle Stepper vorwärts
        {
          stepper[idx].setRPM(12);
          stepper[idx].setSPR(4075.7728395);
          stepper[idx].setDirection(CW);
          stepper[idx].rotateDegrees(30);//rotate(1)
        }
      }
    }
    
    
    
    
    
    
    void alle_stepper_rueckwaerts(void)
    {
      if (hindernis = true)
      {
        hindernis = false;
        for (idx = stepper_VL; idx < stepper_MAX; idx++)
        {
          stepper[idx].setRPM(12);
          stepper[idx].setSPR(4075.7728395);
          stepper[idx].setDirection(CCW);
          stepper[idx].rotateDegrees(30);//rotate(1)
        }
      }
    }



    problem nr.2:
    ich vermute eine ähnliche ursache, wie beim problem nr.1. Der robby prüft in der funktion "alle_stepper_vorwaerts" - da er ja auf einer linie fährt - ob er evtl. nach rechts, bzw. links rotieren soll, weil die werte der beiden seitlichen IR-sensore zu unterschiedlich sind. Er gibt per print noch zurück, dass er rotiert (reagiert also auf die sich verändernden werte der Sensoren li/re), rotiert aber nicht...


    die funktionen "rechts_oder_links", "rotieren_links" und rotieren_rechts"
    Code:
    void rechts_oder_links (void)
    {
      read_IR ();
      print_IR ();
    
    
      wert_li_A0 = analogRead(Analog_Pin_0);//links
      //basis_A1 = (analogRead(Analog_Pin_1) + 20); //mitte
      wert_re_A2 = analogRead(Analog_Pin_2);//rechts
    
    
    
    
      if (wert_li_A0 > wert_re_A2) rotieren_links();
    
    
      else rotieren_rechts();
    }
    
    
    void rotieren_links(void)
    {
      rotate_li = true;
      Serial1.println("rotiere_links");
      Serial.println("rotiere_links");
    
    
      for (idx = stepper_VL; idx < stepper_VR; idx++)
      {
        stepper[idx].setRPM(12);
        stepper[idx].setSPR(4075.7728395);
        stepper[idx].setDirection(CCW);
        stepper[idx].rotateDegrees(180);//rotate(1)
      }
    
    
      for (idx = stepper_VR; idx < stepper_MAX; idx++)
      {
        stepper[idx].setRPM(12);
        stepper[idx].setSPR(4075.7728395);
        stepper[idx].setDirection(CW);
        stepper[idx].rotateDegrees(180);//rotate(1)
      }
    }
    
    
    void rotieren_rechts(void)
    {
    
    
      rotate_re = true;
      Serial1.println("rotiere_rechts");
      Serial.println("rotiere_rechts");
    
    
      for (idx = stepper_VL; idx < stepper_VR; idx++)
      {
        stepper[idx].setRPM(12);
        stepper[idx].setSPR(4075.7728395);
        stepper[idx].setDirection(CW);
        stepper[idx].rotateDegrees(180);//rotate(1)
      }
    
    
      for (idx = stepper_VR; idx < stepper_MAX; idx++)
      {
        stepper[idx].setRPM(12);
        stepper[idx].setSPR(4075.7728395);
        stepper[idx].setDirection(CCW);
        stepper[idx].rotateDegrees(180);//rotate(1)
      }
    }

    könnte sich jemand bitte die zeit nehmen und drüberschauen?

    danke...
    gruß inka

  3. #63
    Benutzer Stammmitglied
    Registriert seit
    19.05.2015
    Beiträge
    69
    Hallo inka,

    Dein robby nimmt ja richtig Gestalt an, klasse!

    Dein erstes Problem liegt in
    Code:
    void alle_stepper_rueckwaerts(void)
    {
      if (hindernis = true)
    im "if" ist eine Zuweisung und kein Vergleich, sprich der Ausdruck ist immer wahr und daher rennt er da immer rein.

    Dein zweites Problem liegt daran, das du in "rotieren_links()" bzw. "rotieren_rechts()" zwar die Stepper richtig konfigurierst, dann die Konfiguration aber nicht mit "fahrt_ausfuehren()" durchführen läßt.
    Statt dessen wird die Stepperkonfiguration in "alle_stepper_vorwaerts()" wieder überschrieben und diese dann in "loop()" ausgeführt.
    Wenn Du die Funktionsaufruffolge

    alle_stepper_vorwaerts
    > rechts_oder_links
    -> z.B. rotieren_rechts

    gedanklich durchgehst, siehst Du das dieses Überschreiben der Seiteneffekt auf die Stepper ist.

    Du mußt also immer auch Überlegen ob nach Deiner Entscheidungsfindung die Stepper nicht nur konfiguriert sondern auch ausgeführt werden müssen.

    Hoffe das bringt Dich einen Schritt weiter.

    Gruß

    Chris

  4. #64
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    76
    Beiträge
    2.180
    Hi botty,
    Zitat Zitat von botty Beitrag anzeigen
    Hallo inka, Dein erstes Problem liegt in
    Code:
    void alle_stepper_rueckwaerts(void)
    {
      if (hindernis = true)
    im "if" ist eine Zuweisung und kein Vergleich, sprich der Ausdruck ist immer wahr und daher rennt er da immer rein.
    zu blöd, dass ich immer wieder über so etwas stolpere


    Zitat Zitat von botty Beitrag anzeigen
    Dein zweites Problem liegt daran, das du in "rotieren_links()" bzw. "rotieren_rechts()" zwar die Stepper richtig konfigurierst, dann die Konfiguration aber nicht mit "fahrt_ausfuehren()" durchführen läßt.
    ........

    Du mußt also immer auch Überlegen ob nach Deiner Entscheidungsfindung die Stepper nicht nur konfiguriert sondern auch ausgeführt werden müssen.
    ich dachte dieses " fahrt_ausfuehren();" reicht einmal in der loop? Muss ich dann doch jedes mal nach dem aufruf einer funktion wie z.b. " alle_stepper_vorwaerts();" dieses "fahrt_ausfuehren();" aufrufen?

    übrigens, habe ich - einem vorschlag von Rabenauge folgend - die unübersichtlichen if-abfragen durch switch / case ersetzt. Jetzt sieh es so aus, dass ich hindernisse abfragen kann, mit dem mittleren IR-sensor abfragen kann ob der robby auf einer linie ist und per abfrage der Li/Re IR-sensoren entscheiden kann, ob links zu der linienmitte oder rechts rotiert werden soll. Die grenzparameter für alle abfragen der IR Sensoren stimmen noch nicht, da bin ich noch dran...

    Code:
    // entstanden aus "cruise_avoid_collision_4_2_enum_idx_new_ping"
    
    
    #include <CustomStepper.h>
    #include <NewPing.h>
    
    
    #define TRIGGER_PIN  6  // Arduino pin tied to trigger pin on the ultrasonic sensor. //12
    #define ECHO_PIN     7  // Arduino pin tied to echo pin on the ultrasonic sensor. //11
    #define MAX_DISTANCE 400 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
    
    
    NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
    
    
    uint8_t idx;
    uint16_t distanz;
    uint16_t uS;
    uint8_t bewegung, li_re;
    
    
    uint8_t Analog_Pin_0 = A0; //analog pin 0
    uint8_t Analog_Pin_1 = A1; //analog pin 1
    uint8_t Analog_Pin_2 = A2; //analog pin 2
    
    
    uint8_t IR_Reading_A0; //IR wert analog sensor_0 - links
    uint8_t IR_Reading_A1; //IR wert analog sensor_1 - mitte
    uint8_t IR_Reading_A2; //IR wert analog sensor_2 - rechts
    uint8_t wert_li_A0;
    uint8_t basis_A1;
    uint8_t wert_re_A2;
    
    
    
    
    
    
    enum stepper_e
    { stepper_VL, stepper_HL, stepper_VR, stepper_HR, stepper_MAX };
    
    
    
    
    CustomStepper stepper[stepper_MAX]
    {
      CustomStepper(23, 25, 27, 29),
      CustomStepper(31, 33, 35, 37),
      CustomStepper(47, 49, 51, 53),
      CustomStepper(46, 48, 50, 52)
    };
    
    
    boolean start_ping;
    boolean hindernis;
    
    
    void setup()
    {
    
    
      start_ping = false;
      hindernis = false;
    
    
      Serial.begin(115200);
      Serial1.begin(115200);
      Serial.println("setup_ende");
      Serial1.println("setup_ende");
    }
    
    
    void loop()
    {
    
    
      hindernis_vorh();
      read_IR ();
      print_IR();
    
    
      switch (bewegung)
      {
        default:
          {
            alle_stepper_vorwaerts();
            if (bewegung == 1)
            {
              read_IR ();
              wert_li_A0 = analogRead(Analog_Pin_0);//links
              basis_A1 = analogRead(Analog_Pin_1); //mitte
              wert_re_A2 = analogRead(Analog_Pin_2);//rechts
              if ((basis_A1 <= 240) && (basis_A1 >= 210)) //auf der linie?
              {
              if (wert_li_A0 > 1, 5 * (wert_re_A2)) rotieren_links();
              else if (wert_re_A2 < 1, 5 * (wert_li_A0)) rotieren_rechts();
              }
            }
            break;
          }
    
    
      }
    
    
      fahrt_ausfuehren();
    }
    
    
    /***********************************************************/
    
    
    
    
    boolean fahrt_fertig()
    {
      return        stepper[stepper_VL].isDone() && stepper[stepper_HL].isDone()
                    && stepper[stepper_VR].isDone() && stepper[stepper_HR].isDone();
    }
    
    
    void fahrt_ausfuehren()
    {
      while ( ! fahrt_fertig() )
      {
        for (idx = stepper_VL; idx < stepper_MAX; idx++)
        {
          stepper[idx].run();
          // delay(1);
        }
      }
    }
    
    
    
    
    void ping_distanz(void)
    {
      //delay(500);// Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
      uS = sonar.ping(); // Send ping, get ping time in microseconds (uS).
      Serial1.print("Ping: ");
      Serial1.print(uS / US_ROUNDTRIP_CM); // Convert ping time to distance in cm and print result (0 = outside set distance range)
      Serial1.println(" cm");
      Serial.print("Ping: ");
      Serial.print(uS / US_ROUNDTRIP_CM); // Convert ping time to distance in cm and print result (0 = outside set distance range)
      Serial.println(" cm");
      start_ping = true;
    }
    
    
    
    
    void hindernis_vorh(void)
    {
      if (start_ping == false) ping_distanz();
      if (uS != NO_ECHO)
    
    
      {
        if (((uS / US_ROUNDTRIP_CM) <= 25))
        {
          hindernis = true;
          bewegung = 4;
        }
    
    
        else
        {
          hindernis = false;
          bewegung = 1;
        }
      }
    }
    
    
    void alle_stepper_stop()
    {
      //  stepper_stop = true;
      for (idx = stepper_VL; idx < stepper_MAX; idx++)
      {
        stepper[idx].setRPM(0);
        stepper[idx].setSPR(4075.7728395);
        stepper[idx].setDirection(STOP);
      }
    }
    
    
    
    
    void alle_stepper_vorwaerts(void)
    {
    
    
      read_IR ();
      wert_li_A0 = analogRead(Analog_Pin_0);//links
      basis_A1 = (analogRead(Analog_Pin_1) + 20); //mitte
      wert_re_A2 = analogRead(Analog_Pin_2);//rechts
    
    
      if (wert_li_A0 < wert_re_A2) rotieren_links(); //bewegung = 2; //rotiere links
      else rotieren_rechts(); //bewegung = 3;//rotiere rechts
    
    
      if (start_ping == true) ping_distanz();
    
    
      if (hindernis == true)
      {
    
    
        bewegung = 4;
    
    
        Serial1.print(hindernis);
        Serial1.println("  hindernis - true - alle_stepper_rückwärts - if-abfrage_6");
        Serial.print(hindernis);
        Serial.println("  hindernis - true - alle_stepper_rückwärts - if-abfrage_6");
        hindernis = false;
    
    
        for (idx = stepper_VL; idx < stepper_MAX; idx++) //alle Stepper rückwärts
        {
          stepper[idx].setRPM(12);
          stepper[idx].setSPR(4075.7728395);
          stepper[idx].setDirection(CCW);
          stepper[idx].rotateDegrees(60); //rotate(1)
        }
    
    
      }
      else
      {
        hindernis = false;
        bewegung = 1;
    
    
        for (idx = stepper_VL; idx < stepper_MAX; idx++)//alle Stepper vorwärts
        {
          stepper[idx].setRPM(12);
          stepper[idx].setSPR(4075.7728395);
          stepper[idx].setDirection(CW);
          stepper[idx].rotateDegrees(60);//rotate(1)
        }
      }
    }
    
    
    
    
    
    
    void alle_stepper_rueckwaerts(void)
    {
    
    
      for (idx = stepper_VL; idx < stepper_MAX; idx++)
      {
        stepper[idx].setRPM(12);
        stepper[idx].setSPR(4075.7728395);
        stepper[idx].setDirection(CCW);
        stepper[idx].rotateDegrees(60);//rotate(1)
      }
    }
    
    
    
    
    void rotieren_links(void)
    {
    
    
      Serial1.println("rotiere_links");
      Serial.println("rotiere_links");
    
    
      for (idx = stepper_VL; idx < stepper_VR; idx++)
      {
        stepper[idx].setRPM(12);
        stepper[idx].setSPR(4075.7728395);
        stepper[idx].setDirection(CCW);
        stepper[idx].rotateDegrees(30);//rotate(1)
      }
    
    
      for (idx = stepper_VR; idx < stepper_MAX; idx++)
      {
        stepper[idx].setRPM(12);
        stepper[idx].setSPR(4075.7728395);
        stepper[idx].setDirection(CW);
        stepper[idx].rotateDegrees(30);//rotate(1)
      }
    }
    
    
    
    
    void rotieren_rechts(void)
    {
    
    
      Serial1.println("rotiere_rechts");
      Serial.println("rotiere_rechts");
    
    
      for (idx = stepper_VL; idx < stepper_VR; idx++)
      {
        stepper[idx].setRPM(12);
        stepper[idx].setSPR(4075.7728395);
        stepper[idx].setDirection(CW);
        stepper[idx].rotateDegrees(30);//rotate(1)
      }
    
    
      for (idx = stepper_VR; idx < stepper_MAX; idx++)
      {
        stepper[idx].setRPM(12);
        stepper[idx].setSPR(4075.7728395);
        stepper[idx].setDirection(CCW);
        stepper[idx].rotateDegrees(30);//rotate(1)
      }
    }
    
    
    
    
    
    
    void read_IR (void)
    {
      IR_Reading_A0 = analogRead(Analog_Pin_0);//links
      IR_Reading_A1 = analogRead(Analog_Pin_1);//mitte
      IR_Reading_A2 = analogRead(Analog_Pin_2);//rechts
    }
    
    
    
    
    void print_IR (void)
    
    
    {
      Serial.print("links: ");
      Serial1.print("links: ");
      Serial.print(IR_Reading_A0);
      Serial1.print(IR_Reading_A0);
    
    
      Serial.print("  mitte: ");
      Serial1.print("  mitte: ");
      Serial.print(IR_Reading_A1);
      Serial1.print(IR_Reading_A1);
    
    
      Serial.print("  rechts: ");
      Serial1.print("  rechts: ");
      Serial.println(IR_Reading_A2);
      Serial1.println(IR_Reading_A2);
    }
    gruß inka

Seite 7 von 7 ErsteErste ... 567

Ähnliche Themen

  1. Vier PWM-Lüfter steuern
    Von Bammer im Forum AVR Hardwarethemen
    Antworten: 22
    Letzter Beitrag: 22.10.2010, 10:21
  2. Vier Servos steuern
    Von Brantiko im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 10
    Letzter Beitrag: 14.04.2008, 23:17
  3. Wie vier Motoren ansteuern???
    Von cinhcet im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 9
    Letzter Beitrag: 29.06.2006, 12:37
  4. vier L297 und VREF
    Von schmek im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 01.12.2005, 19:47
  5. Bot mit vier Rädern
    Von themaddin im Forum Mechanik
    Antworten: 17
    Letzter Beitrag: 06.11.2005, 21:39

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress