Pages: [1]   Go Down
Author Topic: Problem mit RF-Modul beim Senden von Daten  (Read 626 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 23
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

ich benutze folgendes RF-Modul von Watterott: http://www.watterott.com/de/RF-Link-Sender-434MHz

der Code für Sender und empfänger hängt unten an...das kleine Testprogramm funktioniert auch super...nur jezt hab ich ein Problem...

Ich lese über einen Sensor Werte aus...bekomme also Integer Werte die um 1000 herum sind...wenn ich jetzt mit Serial.print(val) versuche die Werte zu übertragen, kommt nur Mist auf der anderen Seite an, weil es ja in Bytes konvertiert wird...und wenn was größeres als 255 kommt gehts ned so wirklich anscheinend...

Wenn ich jetzt aber Serial.print("1000"); mach, dann geht es wieder ohne Probleme, weil dann jeder Charakter einzeln gesendet wird...

Nur wie mach ich das jetzt mit meine int val?...

Falls jmd ne Ahnung davon hat bitte antworten

MfG & Thx

Code:
/*
 * Simple Transmitter Code
 * This code simply counts up to 255
 * over and over
 * (TX out of Arduino is Digital Pin 1)
 */
byte counter;
  
void setup(){
   //2400 baud for the 434 model
   Serial.begin(2400);
   counter = 0;
}
void loop(){
   //send out to transmitter
   Serial.print(counter);
   counter++;
   delay(10);
}

Code:
/*
 * Simple Receiver Code
 * (TX out of Arduino is Digital Pin 1)
 * (RX into Arduino is Digital Pin 0)
 */
int incomingByte = 0;
void setup(){
   //2400 baud for the 434 model
   Serial.begin(2400);
}
void loop(){
   // read in values, debug to computer
   if (Serial.available() > 0) {
      incomingByte = Serial.read();
      Serial.println(incomingByte, DEC);
   }
incomingByte = 0;
}
Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 2
Posts: 770
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich kanns jetzt hier nicht testen, daher frage ich Dich: Was kommt denn an, wenn Du 1000 als Zahl verschickst? Rein theoretisch sollten es eigentlich 2 Bytes sein...
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 23
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

es komme 4 Sonderzeichen..irgendwie verhaut das das modul also 4 bytes eigentlich, weil der serial monitor das ja in DEC umwandelt...
« Last Edit: August 19, 2010, 03:11:07 am by real_hunter » Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 2
Posts: 770
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Also Integer in Bytes teilen kannst Du über Bitwise Operators, z.B. macht Dir "value & 0xff" die eine Hälfte des 2-Bytigen Integers zum 1-Bytigen Wert, und "value >>8 & 0xFF" die andere.

Wenn dann "3" und "232" auf der Empfängerseite ankommen, dann stimmts. smiley

Zusammenbauen kannst Du das dann über etwas wie "value2 << 8 | value1"...
« Last Edit: August 19, 2010, 03:24:52 am by Joghurt » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 23
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

geht nicht auch einfach der befehl byte(val);? Ist haltnur komisch, dass Arduino einen String ohne Probleme umwandeln kann aber ein Integer ned....hatte auch versucht mein int val als string auszugeben..aber die konvertierung klappt ned...nur was man in "" schreibt konvertiert arduino ohne probleme...
Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 2
Posts: 770
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Nein, byte(val) würde ja ein Byte aus Deinem Integer machen, und damit würdest Du Daten verlieren.

Ein String ist nur eine andere Schreibweise für ein Array aus chars, und die sind jeweils nur ein Byte lang.

Wie hast Du versucht, Dein Integer als String auszugeben? Per sprintf?

Du könntest auch ein char[2] oder einen String mit mindestens zwei Zeichen anlegen, per Bitoperationen füllen/überschreiben, und das dann komplett an die Serielle übergeben...
« Last Edit: August 19, 2010, 05:56:16 am by Joghurt » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 23
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hatte es mit String stringOne =  String(val); probiert...
Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 2
Posts: 770
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Das geht definitiv nicht.

Such mal auf www.arduino.cc nach sprintf, das muss irgendwie so ähnlich laufen wie "sprintf(buffer, "%d", val);" ...
« Last Edit: August 19, 2010, 07:52:22 am by Joghurt » Logged

Pages: [1]   Go Up
Jump to: