I have an arduino mega and an uno, mega has an xbee s2c as coordinator and uno an xbee s2c as router, both in AT ( transparent ) mode. When I send integers from uno with Serial.write() coordinator receives just fine, but when i try float, negative numbers and chars, i get still integers but as I found out sending chars it is in ASCII. I tried Serial.print() but no result. Is there a way to send a negative float from one xbee to the other in AT mode?

Coordinator code

void setup() {
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  Serial.println("Comersing test!");

void loop() {

UNO code

#include <SoftwareSerial.h>
 SoftwareSerial xbSerial(8, 7); // RX, TX
void setup() {
  xbSerial.write("First data sent!");

int x=4;
void loop() {
  // put your main code here, to run repeatedly:

if I change x in Uno to float, negative or char, I get weird values.

  • Please add your code (for send/receive). Sounds like you have an implicit type conversion. – Mikael Patel Dec 29 '16 at 15:13
  • If you can send ASCII and you have control over both ends of the data then you could send the numbers as text strings (not very efficient). If the number have a limited range i.e. -127 -> +127 then you could send 0 when you wanted to transmit -127, 1 for -126, etc. – Code Gorilla Feb 15 '17 at 8:56

XBee cannot send negative integers, as it is working in hexadecimal and it has range between 0-255

| improve this answer | |
  • 2
    I'm afraid that's not true, if it was then no computer would be able to represent negative numbers. It all depends on the encoding. – Code Gorilla Feb 15 '17 at 8:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.