Go Down

Topic: Not displaying correct values (Read 1 time) previous topic - next topic

PaulS

Quote
The serial monitor is displaying some trash. Please tell me whats wrong with my program.

Probably nothing is wrong with the program. Most likely, you don't have the Serial Monitor baud rate set to match the Arduino's serial baud rate.

Nick Gammon

Quote
The serial monitor is displaying some trash. Please tell me whats wrong with my program.


I don't see where you did Serial.begin().

Plus see reply #4.

jahnavi


Hi,

   I am trying to send information from arduino to the xbee explorer using Xbee series-1.I am using the following code

Code: [Select]

/**
* Copyright (c) 2009 Andrew Rapp. All rights reserved.
*
* This file is part of XBee-Arduino.
*
* XBee-Arduino is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* XBee-Arduino is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with XBee-Arduino.  If not, see <http://www.gnu.org/licenses/>.
*/

#include <XBee.h>
#include <SoftwareSerial.h>

#include <I2C.h>
#include <MMA8453_n0m1.h>
MMA8453_n0m1 accel;
// Define SoftwareSerial TX/RX pins
// Connect Arduino pin 9 to TX of usb-serial device
uint8_t ssRX = 9;
// Connect Arduino pin 10 to RX of usb-serial device
uint8_t ssTX = 10;
// Remember to connect all devices to a common Ground: XBee, Arduino and USB-Serial device
SoftwareSerial nss(ssRX, ssTX);

/*
This example is for Series 1 XBee
Sends a TX16 or TX64 request with the value of analogRead(pin5) and checks the status response for success
Note: In my testing it took about 15 seconds for the XBee to start reporting success, so I've added a startup delay
*/

XBee xbee = XBee();

unsigned long start = millis();

// allocate two bytes for to hold a 10-bit analog reading
uint8_t payload[] = { 0, 0 };

// with Series 1 you can use either 16-bit or 64-bit addressing

// 16-bit addressing: Enter address of remote XBee, typically the coordinator
Tx16Request tx = Tx16Request(0x1234, payload, sizeof(payload));

// 64-bit addressing: This is the SH + SL address of remote XBee
//XBeeAddress64 addr64 = XBeeAddress64(0x0013a200, 0x406c3887);
// unless you have MY on the receiving radio set to FFFF, this will be received as a RX16 packet
//Tx64Request tx = Tx64Request(addr64, payload, sizeof(payload));

TxStatusResponse txStatus = TxStatusResponse();

int pin5 = 0;

int statusLed = 11;
int errorLed = 12;

void flashLed(int pin, int times, int wait) {
   
    for (int i = 0; i < times; i++) {
      digitalWrite(pin, HIGH);
      delay(wait);
      digitalWrite(pin, LOW);
     
      if (i + 1 < times) {
        delay(wait);
      }
    }
}

void setup() {
  pinMode(statusLed, OUTPUT);
  pinMode(errorLed, OUTPUT);
 
  xbee.begin(9600);
  nss.begin(9600);
  nss.println("starting up yo!");
   accel.setI2CAddr(0x1D); //change your device address if necessary, default is 0x1C
  accel.dataMode(true, 2); //enable highRes 10bit, 2g range [2g,4g,8g]
}

void loop() {
   
    accel.update();
 
   // start transmitting after a startup delay.  Note: this will rollover to 0 eventually so not best way to handle
    if (millis() - start > 15000) {
      // break down 10-bit reading into two bytes and place in payload
      pin5 = accel.x();
      payload[0] = pin5 >> 8 & 0xff;
      payload[1] = pin5 & 0xff;
      Tx16Request tx = Tx16Request(0x1234, payload, sizeof(payload));
      xbee.send(tx);

      // flash TX indicator
     // flashLed(statusLed, 1, 100);
    }
 
    // after sending a tx request, we expect a status response
    // wait up to 5 seconds for the status response
    if (xbee.readPacket(5000)) {
        // got a response!

        // should be a znet tx status           
    if (xbee.getResponse().getApiId() == TX_STATUS_RESPONSE) {
       xbee.getResponse().getZBTxStatusResponse(txStatus);
   
       // get the delivery status, the fifth byte
           if (txStatus.getStatus() == SUCCESS) {
            // success.  time to celebrate
            flashLed(statusLed, 5, 50);
           } else {
            // the remote XBee did not receive our packet. is it powered on?
            flashLed(errorLed, 3, 500);
           }
        }     
    } else if (xbee.getResponse().isError()) {
      nss.print("Error reading packet.  Error code: "); 
      //nss.println(xbee.getResponse().getErrorCode());
      // or flash error led
    } else {
      // local XBee did not provide a timely TX Status Response.  Radio is not configured properly or connected
     flashLed(errorLed, 2, 50);
    }
   
    delay(1000);
}



     The serial monitor is displaying some trash. Please tell me whats wrong with my program.

Thnaku very much

jahnavi

Hi,Even though after including  Serial.begin() also it is showing some trash in the serial monitor and the baud rate is same for serial monitor also.
Can u please tell me the configuration settings of the two xbees using XCTU.

Thanku very much

GoForSmoke

Code: [Select]
// Connect Arduino pin 9 to TX of usb-serial device
uint8_t ssRX = 9;
// Connect Arduino pin 10 to RX of usb-serial device
uint8_t ssTX = 10;
// Remember to connect all devices to a common Ground: XBee, Arduino and USB-Serial device
SoftwareSerial nss(ssRX, ssTX);


What Arduino are you using? My UNO does (hardware) usb-serial on pins 2 and 3 only.
But I could go softserial on 9 and 10 to a serial-USB adapter, I suppose.
I find it harder to express logic in English than in Code.
Sometimes an example says more than many times as many words.

Go Up