Hello,
I am doing a simple home automation project using one Arduino and 2 XBee Series 1.
I am currently trying to toggle the D0 (output) value of the XBee attached to the Arduino using API packet (AT Command) through serial connection (SoftwareSerial).
The loop function has two parts:
- I change the D0 value from HIGH to LOW (this works)
- I change the D0 value from LOW to HIGH (this does not work)
So, the state of D0 stays at LOW the whole time.
Is there a restriction in terms of toggling data output pin values? What is the problem?
Code:
#include <SPI.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(9, 10);
void setup() {
mySerial.begin(9600);
Serial.begin(9600);
delay(5000);
}
void loop() {
Serial.println("D0 aç?l?yor");
// ATD05 command is sent to local XBee
sendByte(0x7E);
sendByte(0x00);
sendByte(0x05);
sendByte(0x08);
sendByte(0x00);
sendByte(0x44);
sendByte(0x30);
sendByte(0x05);
sendByte(0x7E);
delay(1000);
// ATWR command sent to local Xbee
sendByte(0x7E);
sendByte(0x00);
sendByte(0x04);
sendByte(0x08);
sendByte(0x00);
sendByte(0x57);
sendByte(0x52);
sendByte(0x4E);
delay(1000);
// ATAC command is being sent to local Xbee
sendByte(0x7E);
sendByte(0x00);
sendByte(0x04);
sendByte(0x08);
sendByte(0x00);
sendByte(0x41);
sendByte(0x43);
sendByte(0x73);
delay(5000);
Serial.println("D0 kapan?yor");
// ATD04 is being sent to local XBee
sendByte(0x7E);
sendByte(0x00);
sendByte(0x05);
sendByte(0x08);
sendByte(0x00);
sendByte(0x44);
sendByte(0x30);
sendByte(0x04);
sendByte(0x7F);
delay(1000);
// ATWR is being sent to local XBee
sendByte(0x7E);
sendByte(0x00);
sendByte(0x04);
sendByte(0x08);
sendByte(0x00);
sendByte(0x57);
sendByte(0x52);
sendByte(0x4E);
delay(1000);
// ATAC is being sent to local XBee
sendByte(0x7E);
sendByte(0x00);
sendByte(0x04);
sendByte(0x08);
sendByte(0x00);
sendByte(0x41);
sendByte(0x43);
sendByte(0x73);
delay(5000);
}
byte sendByte(byte val)
{
byte length;
length = mySerial.write(val);
return val;
}
Thanks.