xbee was not declared in this scope
- Войдите на сайт для отправки комментариев
Hello to everybody!
I Have two boards Arduino Uno Rev3, two IO Wireless Shields and two modules XBee Pro. And I have two computers. I wish to make program for transmitting some data from Comp_1 to Comp_2.
When I run some example-codes without XBee's library, all works good.
But when I use XBee library, I have errors: "xbee was not declared in this scope".
It's wonderfull for me, why I have this errors only for loop-section, but not for setup-section?
My code for transmitter is:
#include
#include
void setup() {
XBee xbee = XBee(); // no any errors!
xbee.setSerial(Serial); // no any errors!
// start serial
Serial.begin(9600);
uint8_t payload[] = { 'H', 'i' };
XBeeAddress64 addr64 = XBeeAddress64(0x0013a200, 0x12345678);
ZBTxRequest zbTx = ZBTxRequest(addr64, payload, sizeof(payload));
}
void loop {
if (Serial.available())
{
int val = Serial.read();
xbee.send(zbTx); //-----error: 'xbee' was not declared in this scope
Serial.flush();
delay(1000);
}
}
I can not compile this code. My question is: why there is no error setup-section, but in loop-section there is?
What I did wrong?
I was reading different forums during two weeks, but unsuccessfully. Please help.
Thanks.
Потому что вы жолжны определять
XBee xbee = XBee();
вне команды setup, чтобы получать доступ к нему из других функций таких как loopПочитайте про обасть видимости переменных.
Именно так, ХВее действительно "was not declared in this scope", поскольку scope ограничен функцией void setup().
uint8_t payload[] = { 'H', 'i' };
XBeeAddress64 addr64 = XBeeAddress64(0x0013a200, 0x12345678);
ZBTxRequest zbTx = ZBTxRequest(addr64, payload, sizeof(payload));
тоже не забудьте "наверх" перенести.
// Да я читал про область видимости переменных. Но я не понял, что вызов методов разрешается делать вне
// какой-либо функции. Признаюсь, затупил! перенёс всё вверх и сразу откомпилировалось!
// Всем спасибо за помощь! Тему закрываю.