Arduino:Библиотеки/CurieBLE/Класс BLECentral

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Класс BLECentral[1]

Класс, с помощью которого создается объект для центрального устройства, которое, как правило, является устройством, запрашивающим данные у периферийного BLE-устройства.

Синтаксис

BLECentral yourBleCentralName

Параметры

Нет.

Пример

/*
   Правообладатель – Intel Corporation (2015).  Все права защищены.

   Эта библиотека является бесплатной; ее можно распространять 
   и/или модифицировать согласно условиям Стандартной общественной
   лицензии ограниченного применения GNU (т.к. она выпущена Фондом
   свободного ПО) – либо версии 2.1 этой лицензии, либо более поздней
   версии (на ваш выбор). 

   Эта библиотека распространяется в надежде на то, что будет 
   полезна кому-либо, но БЕЗО ВСЯКИХ ГАРАНТИЙ – даже без гарантий на 
   коммерческое качество и пригодность применения для конкретных 
   целей. Более подробно читайте в Стандартной общественной лицензии
   ограниченного применения GNU. 

   Вы должны получить копию Стандартной общественной лицензии
   ограниченного применения вместе с этой библиотекой. Если не
   получили, напишите в Фонд бесплатного ПО на адрес: Free Software
   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,    
   MA  02110-1301  USA 
*/
#include <CurieBLE.h>

BLEPeripheral blePeripheral;  // периферийное BLE-устройство (плата, которую вы программируете)
BLEService ledService("19B10000-E8F2-537E-4F6C-D104768A1214"); // LED-сервис BLE

// характеристика для LED-переключателя; 128-битный UUID, возможность
// записи и считывания центральным устройством:
BLEUnsignedCharCharacteristic switchCharacteristic("19B10001-E8F2-537E-4F6C-D104768A1214", BLERead |BLEWrite);

const int ledPin = 13; // контакт, используемый для светодиода

void setup() {
  Serial.begin(9600);

  // устанавливаем контакт для светодиода в режим OUTPUT:
  pinMode(ledPin, OUTPUT);

  // задаем локальное название и UUID для «рекламируемого» сервиса: 
  blePeripheral.setLocalName("LED");
  blePeripheral.setAdvertisedServiceUuid(ledService.uuid());

  // добавляем сервис и характеристику:
  blePeripheral.addAttribute(ledService);
  blePeripheral.addAttribute(switchCharacteristic);

  // задаем начальное значение характеристики: 
  switchCharacteristic.setValue(0);

  // начинаем «рекламировать» BLE-сервис:
  blePeripheral.begin();

  Serial.println("BLE LED Peripheral");  //  "Управление светодиодом на периферийном BLE-устройстве"
}

void loop() {
  // ищем периферийные устройства, к которым можно подключиться: 
  BLECentral central = blePeripheral.central();

  // если центральное устройство подключилось к периферийному: 
  if (central) {
    Serial.print("Connected to central: ");  //  "Подключились к центральному устройству: "

    // показываем MAC-адрес центрального устройства:
    Serial.println(central.address());

    // пока центральное устройство подключено к периферийному... 
    while (central.connected()) {
      // ...и если центральное устройство делает запись в 
      // характеристику, используем это значение 
      // для управления светодиодом:
      if (switchCharacteristic.written()) {
        if (switchCharacteristic.value()) {   // любое значение, кроме «0»
          Serial.println("LED on");  //  "Светодиод включен"
          digitalWrite(ledPin, HIGH);         // включит светодиод,
        } else {                              // а значение «0»
          Serial.println(F("LED off"));  //  "Светодиод выключен "
          digitalWrite(ledPin, LOW);          // выключит светодиод
        }
      }
    }

    // когда центральное устройство отключится, сообщаем об этом: 
    Serial.print(F("Disconnected from central: "));  //  "Отключились от центрального устройства: "
    Serial.println(central.address());
  }
}

См.также

  1. connected()
  2. poll()
  3. address()
  4. disconnect()

Внешние ссылки