Pages: [1] 2   Go Down
Author Topic: Spektrum Sat. Empfänger am 2650  (Read 1173 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi


ich habe mal wieder ein kleines Proplem . Ich habe folgenden code um einen Spektrum Sataliten Empfänger auszuwerten :
Code:
#include <SatelliteRecive.h>
#include <Servo.h>

#define ledPin 13
SatelliteRecive reciver;
Servo myServo;
int time = 0;

void setup(){
  pinMode(ledPin, OUTPUT);
  Serial.begin(115200);
  myServo.attach(3);
}

void loop()
{
  if (Serial.available() > 0) {
    reciver.regByte(Serial.read());
  }
  // Will fail after a while. Maby to high baudrate. Could use SoftwareSerial for this dump to pc.
  if(millis() - time > 100){
    Serial.print(reciver.getThro());
    Serial.print("\t");
    Serial.print(reciver.getAile());
    Serial.print("\t");
    Serial.print(reciver.getElev());
    Serial.print("\t");
    Serial.print(reciver.getRudd());
    Serial.print("\t");
    Serial.print(reciver.getGear());
    Serial.print("\t");
    Serial.print(reciver.getFlap());
    Serial.println();
 
    time = millis();
  }
 
 
  myServo.write(map(reciver.getAile(),RXMIN,RXMAX,0,179));
 
  if(reciver.getGear() > RXCENTER) digitalWrite(ledPin,1);
  else digitalWrite(ledPin,0);
 
}

Der code funktioniert ohne Propleme auf meinem mini pro , allerdings nicht auf dem 2650 ... meine Vermutung ist das man im code noch angeben muss an welchen der 4 uarts des 2650 der Empfänger dran hängt.
jetzt zu meiner Frage : wie bestimme ich den Uart andem der Empfänger dran kommt ? bzw. ist überhaupt das , das proplem warum es nicht geht ?

ich hoffe ihr könnt mir helfen

MfG   


Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20182
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Serial ist der erste UART, der über den ATmega8U2 mit der USB-Schnittstele verbunden ist.
Seriel1 ist die 2te UART usw. siehe http://arduino.cc/en/Reference/Serial.

Der Mini PRO hat kein USB-Iinterface und die Pins 0 und 1 sind frei.
Versuch mal den Satelitenempfänger am MEGA den UAR2 mit Serial1 an den ppins 19 (RX) und 18 (TX).
Sonst habe ich keine Ahnung was das Problem sein könnte.
Grüße Uwe

 
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi

ich hab schon alle 3 uarts getestet aber bei keinem geht es .
muss ich wenn ich uart2 (seriel1) nutzen möchte noch was im code ändern ?

MfG


edit :
so hab jezt nochmal den code geändert .... so sollte es gehen oder ? werde es morgen testen


Code:
#include <SatelliteRecive.h>
#include <Servo.h>

#define ledPin 13
SatelliteRecive reciver;
Servo myServo;
int time = 0;

void setup(){
  pinMode(ledPin, OUTPUT);
  Serial.begin(115200);
  myServo.attach(3);
}

void loop()
{
  if (Serial1.available() > 0) {
    reciver.regByte(Serial1.read());
  }
  // Will fail after a while. Maby to high baudrate. Could use SoftwareSerial for this dump to pc.
  if(millis() - time > 100){
    Serial.print(reciver.getThro());
    Serial.print("\t");
    Serial.print(reciver.getAile());
    Serial.print("\t");
    Serial.print(reciver.getElev());
    Serial.print("\t");
    Serial.print(reciver.getRudd());
    Serial.print("\t");
    Serial.print(reciver.getGear());
    Serial.print("\t");
    Serial.print(reciver.getFlap());
    Serial.println();
 
    time = millis();
  }
 
 
  myServo.write(map(reciver.getAile(),RXMIN,RXMAX,0,179));
 
  if(reciver.getGear() > RXCENTER) digitalWrite(ledPin,1);
  else digitalWrite(ledPin,0);
 
}
« Last Edit: March 05, 2011, 05:57:24 pm by microller » Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20182
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Überall wo Serial steht mußt Du Serial1 schreiben;
also Serial1.begin ecc.
Grüeß Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi

so habs hinbekommen ... jezt gehts smiley

hier der code falls jemand ihn nutzen möchte :

Code:
#include <SatelliteRecive.h>
#include <Servo.h>

#define ledPin 13
SatelliteRecive reciver;
Servo myServo;
int time = 0;

void setup(){
  pinMode(ledPin, OUTPUT);
  Serial.begin(115200);
  Serial1.begin(115200);
  myServo.attach(3);
}

void loop()
{
  if (Serial1.available() > 0) {
    reciver.regByte(Serial1.read());
  }
 
  if(millis() - time > 100){
    Serial.print(reciver.getThro());
    Serial.print("\t");
    Serial.print(reciver.getAile());
    Serial.print("\t");
    Serial.print(reciver.getElev());
    Serial.print("\t");
    Serial.print(reciver.getRudd());
    Serial.print("\t");
    Serial.print(reciver.getGear());
    Serial.print("\t");
    Serial.print(reciver.getFlap());
    Serial.println();
 
    time = millis();
  }
 
 
  myServo.write(map(reciver.getAile(),RXMIN,RXMAX,0,179));
 
  if(reciver.getGear() > RXCENTER) digitalWrite(ledPin,1);
  else digitalWrite(ledPin,0);
 
}
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20182
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gut!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi

so der code funzt 1A ... allerdings hängt er sich manchmal auf wenn ich beide uarts gleichzeitig nutze . aber das ist erstmal nebensache !

ich hab noch eine andere frage :
weiss jemand wie das Protokoll des satempfänger´s aussieht oder kann mir jemand sagen wie ich das was an seriell 2 ankommt an seriell 1 ausgebe ?

mit
serial.println(serial2);

funktioniert es nicht 

MfG
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20182
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
mit serial.println(serial2); funktioniert es nicht  
Glaube ich Dir gerne
So müßte es gehen:
Code:
if (Serial2.available() > 0) {
    serial.print(Serial2.read());
  }

2 Auchtungen:
* Habs nicht ausprobiert;
* Auf diese Weise kanst Du die Daten nicht mitlesen; alles was an serial2 reinkommt wird an serial rausgeschrieben und ist somit gleich wieder verschwunden.
Zur Datenanalyse reichts aber.

Grüße Uwe
« Last Edit: March 07, 2011, 03:32:57 pm by uwefed » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi 


danke smiley
werde es nachher mal testen ...

Schönen Abend noch
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi

hab mal eine frage :

unzwar habe ich den code jezt auf 5 kanäle erweitert , und gebe sie einzeln  als servo singnal aus .
Jezt möchte ich das ganze als Summensingnal ausgeben , kann mir jemand sagen wie ich das ganze programmiere bzw kann mir jemand ein code beispiel geben ?

were super

Danke


Schönen Abend noch 
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20182
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Was verstehst Du unter Summensingnal?
Grüße Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi
summensingnal ist ein singnal was aus den einzelnen kanälen besteht bsp . :


     
Summensingnal :
      +---+  +--+  +------+  +-+
      |    | |    | |        | |  |
  ---+    +-+    +-+        +-+  +----------------



                 +---+
  Kanal 1     |    |
             ---+    +---------------------------------------

                         +---+
  Kanal 2             |    |
             ----------+    +--------------------------------

                                  +------+
  Kanal 3                      |       |
             -----------------+        +---------------------

                                               +--+
  Kanal 4                                   |  |
             ----------------------------+  +----------------

also muss man die 4 kanäle auf ein singnal quetschen ....... ich hoffe ihr könnt mmir helfen
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20182
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Von welchen Pulsdauer reden wird da?
Grüße Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi

hier mal ein post aus einem anderen forum (nich von mir )
Code:

Auf jedem Kanal wiederholt sich der Puls alle 20 Millisekunden aber die
Pulse sind zueinander versetzt.
Der Grund dafür ist:
Es gibt keinen Grund allen Servos einen Signalpuls anzubieten, der bei
allen Servos gleichzeitig die steigende Flanke aufweist.
Da das nicht notwendig ist, muss man auch den ganzen Aufwand dafür nicht
treiben.
Da man den Aufwand nicht treiben muss, ist die Aufteilung des
Summensignals auf die einzelnen Kanäle trivial
Trivial ist gut, da es dann zuverlässig läuft.

Um also diese 4 Kanäle wieder zu einem Summensignal zusammenzubringen,
genügt es völlig die einfach alle miteinander zu verodern und man erhält
...


               +----+ +----+ +--------+ +--+
               |    | |    | |        | |  |
            ---+    +-+    +-+        +-+  +----------------

... das Summensignal (in genau der Form, wie es über die Funkstrecke
übertragen wurde)


vllt hilft dir ja das weiter smiley
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20182
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Aha Du redest von Servoansteuerung.
Du willst mehrere Kanäle auf einer Leitung übertragen und dann wieder trennen.
Da rate ich Dir eine Servosteuerung zb die von Pololu. Da mußt Du nicht die Kanäle vereinen um sie dann wieder zu trennen.
zB: http://www.watterott.com/de/Pololu-Micro-Serial-Servo-Controller?xca2d4=mrt3vd27v6b4jn5fa40m2v6ve6
oder andere für 6 bis 24 Servos.
Grüße Uwe
Logged

Pages: [1] 2   Go Up
Jump to: