Arduino:Примеры/Series2 IoSamples
Перейти к навигации
Перейти к поиску
Поддержать проект | Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.
Содержание
Получение данных от удаленного XBee-модуля (Series 2)[1]
Этот пример показывает, как при помощи библиотеки XBee настроить XBee-модуль на получение данных от удаленного XBee-модуля. Работает только для XBee-модуля типа Series 2.
Код
1 /**
2 * Автор – Эндрю Рэпп (Andrew Rapp). 2009 год, все права защищены.
3 *
4 * Этот файл – часть библиотеки XBee-Arduino.
5 *
6 * Библиотека XBee для Arduino – это бесплатное ПО: его можно
7 * распространять и/или модифицировать согласно условиям Универсальной
8 * общественной лицензии GNU, изданной Фондом свободного ПО – будь то
9 * 3-тья или более поздняя версия этой лицензии (на ваш выбор).
10 *
11 * Библиотека XBee-Arduino распространяется бесплатно в надежде на то,
12 * что окажется полезной, но БЕЗО ВСЯКОЙ ГАРАНТИИ; включая даже
13 * обязательную гарантию на КОММЕРЧЕСКОЕ КАЧЕСТВО и ПРИГОДНОСТЬ
14 * КОНКРЕТНОЙ ЦЕЛИ. Более подробно читайте в Универсальной
15 * общественной лицензии GNU.
16 *
17 * Вы должны получить копию Универсальной общественной лицензии GNU
18 * вместе с библиотекой XBee-Arduino. Если не получили, ее можно найти
19 * на http://www.gnu.org/licenses/.
20 */
21
22 #include <XBee.h>
23 #include <SoftwareSerial.h>
24
25 /*
26 Этот пример – только для XBee-модуля типа Series 2 (ZigBee).
27 Он принимает данные от удаленного XBee-модуля. У удаленного
28 XBee-модуля IR должно быть больше «0», а также должен быть активирован
29 как минимум один цифровой или аналоговый входной контакт.
30 Также к Arduino должен быть подключен XBee-координатор.
31
32 Чтобы видеть информацию об XBee-коммуникации, этот пример использует
33 библиотеку SoftSerial. Я использую плату Modern Device USB BUB
34 (http://moderndevice.com/connect) и просматриваю выдачу при помощи
35 монитора порта в IDE Arduino.
36 */
37
38 // Задаем TX и RX контакты для NewSoftSerial.
39 // Подключаем 8-ой контакт Arduino к TX-контакту конвертера USB-Serial:
40 uint8_t ssRX = 8;
41 // Подключаем 9-ый контакт Arduino к RX-контакту конвертера USB-Serial:
42 uint8_t ssTX = 9;
43 // Не забудьте подключить все устройства к общей «земле»: XBee,
44 // Arduino и конвертер USB-Serial
45 SoftwareSerial nss(ssRX, ssTX);
46
47 XBee xbee = XBee();
48
49 ZBRxIoSampleResponse ioSample = ZBRxIoSampleResponse();
50
51 XBeeAddress64 test = XBeeAddress64();
52
53 void setup() {
54 Serial.begin(9600);
55 xbee.setSerial(Serial);
56 // Запускаем коммуникацию SoftSerial:
57 nss.begin(9600);
58 }
59
60 void loop() {
61 // Пытаемся прочесть пакет:
62 xbee.readPacket();
63
64 if (xbee.getResponse().isAvailable()) {
65 // Что-то получили
66
67 if (xbee.getResponse().getApiId() == ZB_IO_SAMPLE_RESPONSE) {
68 xbee.getResponse().getZBRxIoSampleResponse(ioSample);
69
70 nss.print("Received I/O Sample from: "); // "Получили I/O порцию от: "
71
72 nss.print(ioSample.getRemoteAddress64().getMsb(), HEX);
73 nss.print(ioSample.getRemoteAddress64().getLsb(), HEX);
74 nss.println("");
75
76 if (ioSample.containsAnalog()) {
77 nss.println("Sample contains analog data"); // "Порция содержит аналоговые данные "
78 }
79
80 if (ioSample.containsDigital()) {
81 nss.println("Sample contains digtal data"); // "Порция содержит цифровые данные"
82 }
83
84 // Считываем входные аналоговые данные:
85 for (int i = 0; i <= 4; i++) {
86 if (ioSample.isAnalogEnabled(i)) {
87 nss.print("Analog (AI");
88 nss.print(i, DEC);
89 nss.print(") is ");
90 nss.println(ioSample.getAnalog(i), DEC);
91 }
92 }
93
94 // Считываем входные цифровые данные:
95 for (int i = 0; i <= 12; i++) {
96 if (ioSample.isDigitalEnabled(i)) {
97 nss.print("Digital (DI");
98 nss.print(i, DEC);
99 nss.print(") is ");
100 nss.println(ioSample.isDigitalOn(i), DEC);
101 }
102 }
103
104 // Отображаем все данные, находящиеся в секции «frame data» API-фрейма:
105 //for (int i = 0; i < xbee.getResponse().getFrameDataLength(); i++) {
106 // nss.print("byte [");
107 // nss.print(i, DEC);
108 // nss.print("] is ");
109 // nss.println(xbee.getResponse().getFrameData()[i], HEX);
110 //}
111 }
112 else {
113 nss.print("Expected I/O Sample, but got "); // "Ожидалась I/O порция, но получили "
114 nss.print(xbee.getResponse().getApiId(), HEX);
115 }
116 } else if (xbee.getResponse().isError()) {
117 nss.print("Error reading packet. Error code: "); // "Ошибка при чтении пакета. Код ошибки: "
118 nss.println(xbee.getResponse().getErrorCode());
119 }
120 }
См.также
Внешние ссылки