- Labornetzteil AliExpress         
Seite 7 von 9 ErsteErste ... 56789 LetzteLetzte
Ergebnis 61 bis 70 von 89

Thema: Zwei Arduino´s drahtlos verbinden ??

  1. #61
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Sie werden echt gut warm und brummen leicht, der Serielle Monitor gibt immer -1 aus!
    Der Empfänger empfängt nichts (-1). Verkabelung und Kontakte überprüfen.

    Dieser Code funzt:

    Sender:
    Code:
    ...
    void loop (void)
    {
      byte data[2]; 
      data[0] = map(analogRead(xPot1Pin), 0, 1023, 255, 0);      
      data[1] = map(analogRead(yPot2Pin), 0, 1023, 255, 0);         
      radio.write(data, 2);   
    }
    Empfänger:
    Code:
    #include <Servo.h>
    #include <SPI.h>
    #include "RF24.h"
    
    Servo myServo1;
    Servo myServo2;
    const uint64_t pipe = 0xE8E8F0F0E1LL; 
    
    RF24 radio(9,10);
    
    byte parabel(byte val)
    {
      float a = (val - 128) / 13.45;
      byte b = a*a;
      if (val < 127) b = -b;
      return b + 90;
    }
    
    void setup()
    {
      Serial.begin(9600);  // zum Debuggen Kommentarzeichen entfernen 
                              // und diesen Arduino über Serial Mointor auslesen
      myServo1.attach(3);     // Pin 3
      myServo2.attach(5);     // Pin 5
      radio.begin();
    
      radio.openReadingPipe(1, pipe); 
      radio.startListening(); 
    }
    
    void loop()
    {
      if (radio.available())
      {
        bool done = false;
        byte msg[2];
        while (!done)
        {
          done = radio.read(msg, 2);
        }
      
        //_DEBUG:        
        Serial.print("Wert 1: ");
        Serial.print(msg[0]);      
        Serial.print(" / ");
        Serial.print(parabel(msg[0]));  
        Serial.print("     Wert 2: ");
        Serial.print(msg[1]);
        Serial.print (" / ");
        Serial.println(parabel(msg[1]));  
        //_END_DEBUG
        
        myServo1.write ( parabel(msg[0]) );
        myServo2.write ( parabel(msg[1]) );
      }
    }
    Wie du siehst, wird der Motor erst gesteuert, wenn auch Daten empfangen wurden.
    Und ich hab die Datentypen getauscht, Byte statt Integer, weil die 8 Bit eines Byte ausreichen bzw. die restlichen Nullen des Integer überflüssig sind. -> Code effizienter.
    Geändert von Sisor (12.04.2014 um 11:00 Uhr)

  2. #62
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2011
    Ort
    Heilbronn
    Alter
    35
    Beiträge
    180
    Okay Danke Sisor;

    ich habe heute mittag zeit es zu testen und kann dann anschließend wieder berichten,

    ich muss nur schauen zwecks der Verkabelung, wobei ich ja nichts geändert hatte an der Verkabelung

  3. #63
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2011
    Ort
    Heilbronn
    Alter
    35
    Beiträge
    180
    So ich kann nur positives Berichten ....

    die Code Änderung von Integer auf Byte hat funktioniert ....
    Genau so wie Sisor´s Parabel Umprogrammierung extrem geil funktioniert hat.

    Der Roboter reagiert genau richtig auf die Potti´s, so das ein schönes Fahrbild entsteht ....

    Also das mit der Parabel war Gold richtig und ebenso Gold wert
    Die NRF2401L+PA+LNA Module arbeiten sauber und ich konnte mal ein reichweiten Test von
    400 Metern durchführen ohne Störung und jegliches Zucken. Das ist für den Mäheinsatz in unserem
    Garten mehr als ausreichend.

    Ich bedanke mich für eure Tipps und Sisor´s Hilfe beim Code und die geniale Idee mit der Parabel ..... echt super.
    Ich hab ja noch weitere Ideen ... da kann ich die ganzen Info´s gut verwenden =)

    Mfg Benny

  4. #64
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Zitat Zitat von Benny1989 Beitrag anzeigen
    So ich kann nur positives Berichten ....

    die Code Änderung von Integer auf Byte hat funktioniert ....
    Genau so wie Sisor´s Parabel Umprogrammierung extrem geil funktioniert hat.

    Der Roboter reagiert genau richtig auf die Potti´s, so das ein schönes Fahrbild entsteht ....

    Also das mit der Parabel war Gold richtig und ebenso Gold wert
    Die NRF2401L+PA+LNA Module arbeiten sauber und ich konnte mal ein reichweiten Test von
    400 Metern durchführen ohne Störung und jegliches Zucken. Das ist für den Mäheinsatz in unserem
    Garten mehr als ausreichend.

    Ich bedanke mich für eure Tipps und Sisor´s Hilfe beim Code und die geniale Idee mit der Parabel ..... echt super.
    Ich hab ja noch weitere Ideen ... da kann ich die ganzen Info´s gut verwenden =)

    Mfg Benny
    Freut mich. Wenn du zufrieden und fertig mit dem Projekt bist, kannst du es ja mal als Ganzes vorstellen. Ich glaube nämlich, dass so ein Mähroboter-Projekt viele Nachahmer haben könnte.

    Nochmal zur 'Parabel':
    Klicke auf die Grafik für eine größere Ansicht

Name:	para.gif
Hits:	6
Größe:	3,8 KB
ID:	27981
    Für Mathe-Freaks: Es handelt sich um eine in den Wertebereich von 0-180 eingepasste Parabel 2.Ordnung, wobei der linke Teil nach unten gespiegelt ist.
    Code:
    byte parabel(byte val)
    {
      float a = (val - 128) / 13.45;
      byte b = a*a;
      if (val < 128) b = -b;
      return b + 90;
    }
    Wie man sieht, werden Werte von 0 - 255 von der Funktion als Eingabewerte erwartet. Der Bereich um 127 repräsentiert hierbei die Ruhelage oder Mittelstellung des Joystickpotis. Die Funktion beruhigt den diesen Mittelstellungsbereich und rechnet gleichzeitig auf den vom Fahrtenregler erwarteten Wertebereich zwischen 0 und 180 um.

  5. #65
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2011
    Ort
    Heilbronn
    Alter
    35
    Beiträge
    180
    ja wenn der RSL-7 fertig ist werde ich ihn mal vorstellen.
    Habe gestern 1h damit gemäht.
    Werde die reifen jetzt noch optimieren, ich hab schon neue mit wesentlich mehr Profil bestellt,
    da die Traktion nicht so war wie ich es mir mit den jetzigen Reifen vorgestellt hatte.

    Ich muss auch mal meine Fernsteuerung vorstellen, mit den Display, und dem LED Bargraphen ....
    Wo es in meinen anderen Themen drum ging mit den Schieberegistern, ist echt toll geworden.

    Ich hab noch so paar Ideen unter anderem ein kleineren Roboter mit Kettenantrieb, ein Servo Roboterarm der
    den kleinen von dem großen auf den Boden hebt.

    Also noch jede Mänge vor .... =)

    Das mit der Parabel ist echt eine geniale Geschichte, zumindest für meine Zwecke, bzw kann das ja jeder anwenden
    der sanftere Servobewegungen braucht!

  6. #66
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2011
    Ort
    Heilbronn
    Alter
    35
    Beiträge
    180
    Hallo Community,

    könntet ihr euch nochmals meine beiden Code´s anschauen?
    folgendes, ich hab meine Schaltung komplett mit neuen Kabeln ausgestattet und jetzt funkt es ned mehr

    Das Gas also Vorwärts und Rückwärts geht aber die Lenkung nicht?
    Ich hab aber extra immer eins nach dem anderen getauscht das ich ja nicht was falsch mach.

    Wenn ich im Sender Code ....

    data[1] = map(analogRead(yPot2Pin), 0, 1023, 255, 0);

    die 255 mit der 0 tausche bekommt mein Fahrtenregler kein Signal mehr ....
    Ich hab aber eigentlich am Code nichts geändert.

    Nur hab ich jetzt schon drei Tage lang so viel zeit an Kabel kontrollieren und Code kontrollieren verbracht
    das ich jetzt vor lauter Bäumen den Wald nicht mehr sehe, wenn ihr wisst was ich meine !

    Vllt könnt ihr mal drüber schaun ob doch wo ein Fehler drin ist! Danke im Voraus.

    Sender:
    Code:
    #include <SPI.h>
    #include "RF24.h"
    
    const uint64_t pipe = 0xE8E8F0F0E1LL;            // Adresse des Übertragungskanals
    const int xPot1Pin = A1;                         // Joystick 1 Pin X Achse        
    const int yPot2Pin = A2;                         // Joystick 2 Pin Y Achse
    
    // Funkmodul NRF24L01 mit Arduino-Pins verbinden:
    // SCK -> 13 // MISO -> 12 // MOSI -> 11 // CSN -> 10  // CE -> 9
    // SPI-Bus Pins 9 und 10
    
    RF24 radio(9,10);
    
    void setup (void)
    {
      radio.begin();
      radio.openWritingPipe(pipe);        // Kanal öffnen
    }
    
    void loop (void)
    {
      byte data[2]; 
      data[0] = map(analogRead(xPot1Pin), 0, 1023, 255, 0);          // liest den Wert des Potentiometers (Wert zwischen 0 und 1023)
      data[1] = map(analogRead(yPot2Pin), 0, 1023, 255, 0);          // und skalierter den Wert (zwischen 0 und 255) für den Servo / Fahrtenregler 
    
      radio.write(data, 2);                                          // Adresse (data) und Länge (2) der zu sendenden Daten
    }
    Empfänger:

    Code:
    #include <Servo.h>
    #include <SPI.h>
    #include "RF24.h"
    
    Servo myServo1;
    Servo myServo2;
    const uint64_t pipe = 0xE8E8F0F0E1LL; 
    
    RF24 radio(9,10);
    
    byte parabel(byte val)
    {
     float a = (val - 128) / 13.45;
     byte b = a*a;
     if (val < 127) b = -b;
     return b + 90;
    }
    
    void setup()
    {
      //Serial.begin(9600);   // zum Debuggen Kommentarzeichen entfernen 
                              // und diesen Arduino über Serial Mointor auslesen
      myServo1.attach(5);     // Pin 3
      myServo2.attach(6);     // Pin 5
      radio.begin();
    
      radio.openReadingPipe(1, pipe); 
      radio.startListening(); 
    }
    
    
    void loop()
    {
      if (radio.available())
      {
        bool done = false;
        byte msg[2];
        while (!done)
        {
          done = radio.read(msg, 2);
        }
      
    /*  
        //_DEBUG:        
        Serial.print("Wert 1: ");
        Serial.print(msg[0]);      
        Serial.print(" / ");
        Serial.print(parabel(msg[0]));  
        Serial.print("     Wert 2: ");
        Serial.print(msg[1]);
        Serial.print (" / ");
        Serial.println(parabel(msg[1]));  
        //_END_DEBUG
    */
        
        myServo1.write ( parabel(msg[0]) );
        myServo2.write ( parabel(msg[1]) );
      }
    }
    Meine Homepage www.belagra.de

  7. #67
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Das mal überprüfen:
    Empfänger:
    Code:
    void setup()
    {
      //Serial.begin(9600);   // zum Debuggen Kommentarzeichen entfernen 
                              // und diesen Arduino über Serial Mointor auslesen
      myServo1.attach(5);     // Pin 3
      myServo2.attach(6);     // Pin 5
      ...
    }
    Ansonsten siehts ok aus.

  8. #68
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2011
    Ort
    Heilbronn
    Alter
    35
    Beiträge
    180
    ja grins wollte es grade noch bearbeiten und ändern!
    denn ich hab die Pins am Empfänger Arduino geändert um zu testen.

    wie gesagt sehr komisch ist wenn ich die Lenkbewegung umdrehen möchte, sagt mir der Fahrtenregler das er kein Signal bekommt.

    also von

    data[1] = map(analogRead(yPot2Pin), 0, 1023, 255, 0);

    in

    data[1] = map(analogRead(yPot2Pin), 0, 1023, 0, 255);

    Aber dann bleibt mir nichts anderes übrig als nochmals alle Kabel zu checken,
    wenn ihr wissen wollt, wie die ganze Geschichte aussieht, könnt ihr meine neue Homepage besuchen,
    da sind schon jede Mänge Bilder in der " Roboter RSL-7 " Galerie drin.
    Die Seite ist noch im Aufbau aber ich mach Stück für Stück =)

    p.s. Hab jetzt auch den Fahrtenregler getauscht, in der Galerie ist noch der Alte zu sehen
    Meine Homepage www.belagra.de

  9. #69
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Zitat Zitat von Benny1989 Beitrag anzeigen
    wie gesagt sehr komisch ist wenn ich die Lenkbewegung umdrehen möchte, sagt mir der Fahrtenregler das er kein Signal bekommt.
    ...
    An deiner Stelle würde ich:
    - im Fahrtenregler-Datenblatt schauen, wann bzw warum der Fahrtenregler auf 'kein Signal' schaltet
    - wieder mit dem Arduino-Monitor (DEBUG-Teile im Code entkommentieren) schauen, was der Empfänger-Arduino ausspuckt
    - evtl. Pins wechseln bzw. auf Funktion (Multimeter - Spannungsmessung) überprüfen

  10. #70
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2011
    Ort
    Heilbronn
    Alter
    35
    Beiträge
    180
    Okay das ne gute Idee. Werde mal schauen was der ausgibt. Dann weis ich bescheid
    Meine Homepage www.belagra.de

Seite 7 von 9 ErsteErste ... 56789 LetzteLetzte

Ähnliche Themen

  1. Antworten: 16
    Letzter Beitrag: 01.12.2011, 17:12
  2. Verbinden von zwei Schrittmotoren mit RN-Control
    Von mklayton im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 3
    Letzter Beitrag: 13.01.2010, 20:38
  3. Mit Rs 232 zwei avr verbinden
    Von fofi1 im Forum AVR Hardwarethemen
    Antworten: 14
    Letzter Beitrag: 16.08.2009, 11:53
  4. Zwei PIC über CAN verbinden
    Von Tonelli im Forum PIC Controller
    Antworten: 6
    Letzter Beitrag: 17.11.2007, 15:10
  5. Signale von zwei Encodern verbinden neue frage!
    Von sdz55 im Forum Elektronik
    Antworten: 68
    Letzter Beitrag: 21.03.2006, 18:31

Berechtigungen

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

Solar Speicher und Akkus Tests