Hallo Uwe, schau mal bitte, ich hab jetz mal etwas zusammen geschrieben, was im grunde Funktioniert, ich habe nur ein problem (vermutlich mit dem addieren der bits beim wieder zusammen setzen) Die Pakete werden gesendet, und auch empfangen und zugeordnet, allerdings ist irgendwo ein klitze Fehler.Wenn ich das Poti einlese bekomme ich nur 0 heraus, wenn ich den TEST_counter hochzählen lasse, funktioniert das ganze nur in 256er schritten, als würden die ersten 8 bit nicht anerkannt 0oder wären Nullen, weiß nicht. Kannst du mir vieleicht nochmal Helfen und mal kurz reinlesen..Lach bitte nich über meine Programmierweise ich weiß es nich anders....:-)
Die Sende Seite...
//SENDEN
#include <Ports.h>
#include <RF12.h>
#include <RF12sio.h>
int sensorPin = A0;
unsigned int Value1 = 0;
byte Send_A = 0; //besteht aus 2 Header Bits (10) und den ersten 6 Datenbits von Value1
byte Send_B = 0; //besteht aus 2 Header Bits (01) und den bits 7-12 von Value1
byte Send_C = 0; //besteht aus 2 Header Bits (00) und den bits 13-16 und 4 Nullen von Value1
byte Send_X = 0; // Wert zum Senden
int TEST_counter = 0; //Testcounter
RF12 RF12;
void setup()
{
Serial.begin(57600);
rf12_config();
rf12_easyInit(0);
}
void loop()
{
//Value1 = analogRead(sensorPin); // Poti einlesen /testcounter
Value1 = TEST_counter;
TEST_counter++;
Send_A = Value1; //8bit Sendepaket A und Header eintragen
bitWrite(Send_A, 7, 0);
bitWrite(Send_A, 8, 1);
Send_B = Value1 >> 6; //8bit Sendepaket B und Header eintragen
bitWrite(Send_B, 7, 1);
bitWrite(Send_B, 8, 0);
Send_C = Value1 >> 12; //8bit Sendepaket C und Header eintragen + nichtbenötigte bits werden 0
bitWrite(Send_C, 5, 0);
bitWrite(Send_C, 6, 0);
bitWrite(Send_C, 7, 0);
bitWrite(Send_C, 8, 0);
rf12_easyPoll(); // RFM12 Pollen (wird benötigt)
for (byte i = 0; i < 4; i++) // 3 Sendepackete nacheinander Senden
{
if (i == 1)
{Send_X =Send_A;
Serial.println("A");
}
if (i == 2)
{Send_X =Send_B;
Serial.println("B");
}
if (i == 3)
{Send_X =Send_C;
Serial.println("C");
}
rf12_easySend(&Send_X, sizeof Send_X); // und Senden!!
}
}
und Die Empfänger Seite....
//EMPFANGEN
#include <Ports.h>
#include <RF12.h>
#include <RF12sio.h>
byte readarduino_8bit = 0; // empfangener 8bit Wert
unsigned int Value_1 = 0; // Ausgabe Varriable
byte LowBitV1 = 0; // wert für ersten 8 bits von Value1
byte HighBitV1 = 0; // wert für bit 9 bis 16 von Value1
byte Read_A = 0; // 3 verschiedene empfangene Daten
byte Read_B = 0;
byte Read_C = 0;
RF12 RF12; // wird irgendwie benötigt warum weiß ich nicht
void setup() {
Serial.begin(57600);
rf12_config(); // initialisieren von RFM12 ( wie mans voreingestellt hat(demo.PDE))
}
void loop()
{
if (RF12.poll()) //wenn RFM12 verfügbar ist...
readarduino_8bit = RF12.read(); // lese das.....
if ( bitRead(readarduino_8bit,8)==1) //wenn bit 8 eine 1 ist kanns nur Read_A sein
{
if ( bitRead(readarduino_8bit,7)==0)
Read_A = readarduino_8bit;
}
if ( bitRead(readarduino_8bit,8)==0) // weitere Paketidentifikation
{
if ( bitRead(readarduino_8bit,7)==1)
Read_B = readarduino_8bit;
if ( bitRead(readarduino_8bit,7)==0)
Read_C = readarduino_8bit;
}
bitWrite(Read_A, 8, 0); // den Header wieder mit nullen Füllen
bitWrite(Read_B, 7, 0);
bitWrite(Read_C, 5, 0);
bitWrite(Read_C, 6, 0);
LowBitV1 = (Read_B << 6) + Read_A; // die ersten 8 bits vom Value1 zusammen kleben
HighBitV1 =(Read_B >> 2) + Read_C; // bit 9 bis 16 zusammenkleben
Value_1 = word(HighBitV1,LowBitV1); // beide 8bit werte zu 16bit wert zusammenbauen
Serial.println(Value_1); // und siehe da da sollte unser gesendeter 16bit sein
}
viele Grüße Tobias