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.
02.12.14 11-00, Vlad7: --------------------------------------------------------------------------------------------- Item: xbee was not declared in this scope Прошу прощения за то что поместил пост на английском! перепутал файлы и взял текст, который готовил для англоязычного форума! Исправляю свою ошибку: Доброго времени суток всем! У меня есть две платы Arduino UNO Rev3, две платы IO Wireless Shields и два модуля XBee Pro. И ещё есть два компьютера. Хочу написать программку для пересылки некоторых данных с компа_1 на комп_2. Когда я запускаю некоторые примеры без библиотеки ХВее, всё работает хорошо. Но когда я использую библиотеку ХВее, получаю ошибку: "xbee was not declared in this scope". Меня удивляет, почему я вижу эту ошибку только в loop-section, а в setup-section такую ошибку не выдаёт? Мой код для передатчика: #include <XBee.h> #include <SoftwareSerial.h> void setup() { XBee xbee = XBee(); // ошибок нет! xbee.setSerial(Serial); // ошибок нет! Serial.begin(9600); uint8_t payload[] = { 'H', 'i' }; XBeeAddress64 addr64 = XBeeAddress64(0x0013a200, 0x40C04446); ZBTxRequest zbTx = ZBTxRequest(addr64, payload, sizeof(payload)); } void loop() { if (Serial.available()) { int val = Serial.read(); xbee.send(zbTx); //-----ЗДЕСЬ ОШИБКА: xbee was not declared in this scope Serial.flush(); // clear bufer delay(1000); } } Я не могу откомпилировать этот код. Мой вопрос звучит так: Почему нет этой ошибки в setup-section? Почему она в loop-section есть? Что я сделал неправильно? Две недели рылся по разным форумам и следовал разным советам, которые сводятся к тому, что надо правильно инсталлировать библиотеку ХВее. Но если бы она у меня была неправильно инсталлирована, то и в setup-е эту ошибку выдавало бы! Значит, здесь что-то другое? Прошу помощи. Любые идеи приветствуются. Спасибо.Потому что вы жолжны определять
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));
тоже не забудьте "наверх" перенести.
// Да я читал про область видимости переменных. Но я не понял, что вызов методов разрешается делать вне
// какой-либо функции. Признаюсь, затупил! перенёс всё вверх и сразу откомпилировалось!
// Всем спасибо за помощь! Тему закрываю.