Genuino101CurieBLECallbackLED

Bu öğretici ile Arduino veya Genuino 101'in yerleşik Bluetooth Düşük Enerji (BLE) özelliklerini kullanarak bir akıllı telefon veya tabletten Pin 13'e bağlı LED'i açabilirsiniz. Merkezi yoklayan ve geri aramalarla yönetilen BLE olayları oluşturan bir LED hizmeti oluşturursunuz. Değerler, Android ve iOS için kullanılabilen nRF Ana Kontrol Paneli (BLE) uygulaması kullanılarak gönderilir.

Gerekli Donanım

Yazılım Gerekli

  • Android ve iOS için nRF Ana Kontrol Paneli (BLE)

Devre

Yazılım Temelleri

Kütüphaneler

CurieBLE .h , 101 kartının BLE modülünün tüm parametrelerine, özelliklerine ve işlevlerine erişim sağlayan kütüphanedir. Bluetooth Düşük Enerji ile bu standardı destekleyen akıllı telefonlara, tabletlere ve çevre birimlerine bağlanmak ve bunlarla iletişim kurmak mümkündür. Bu öğreticide, akıllı telefondaki bir kontrol uygulamasıyla bağlantı kurmak ve bir LED'i açmak veya kapatmak için kullanılan değeri almak için kullanılır.

Fonksiyonlar

Aşağıdaki işlevler BLE olayları tarafından yönlendirilen geri çağrılardır.
blePeripheralConnectHandler () - BLE merkezi 101 kartına bağlandığında çağrılır. Arduino Software (IDE) Seri Monitörüne BLE merkezi adresli bir bağlantı mesajı yazdırır.

blePeripheralDisconnectHandler () - BLE merkezi 101 kartından ayrıldığında çağrılır. Arduino Software (IDE) Seri Monitörüne BLE merkezi adresli bir bağlantı kesme mesajı yazdırır.

switchCharacteristicWritten () - BLE merkezi anahtar özelliğini yazdığında çağrılır. NRF Ana Kontrol Panelinde kullanıcı tarafından karakterize edilen değere bağlı olarak LED'i açar veya kapatır.

Akıllı Telefonda

Arduino veya Genuino 101'in yerleşik LED'ini sürmek için Android ve iOS için nRF Ana Kontrol Paneline (BLE) ihtiyacınız var. Başlatın ve bir TARAMA yapın. LEDCB sekmesini bir bağlantı düğmesiyle bulmalısınız


101 kartı tarafından sunulan BLE hizmetimizin açıklamasını bulacağınız aşağıdaki ekranı açmak için bağlan üzerine dokunun. Bilinmeyen hizmet bir UUID 19B10000- E8F2 -537E-4F6C- D104768A1214'e sahiptir ve BLEService ledService("19B10000- E8F2 -537E-4F6C- D104768A1214 "); tarafından ayarlanır BLEService ledService("19B10000- E8F2 -537E-4F6C- D104768A1214 "); taslağın başında ifade.


Aşağıda gösterildiği gibi, özelliğini açmak için Bilinmeyen Hizmete dokunun. Bir Yazma İsteği ile yazılabilen özellikler içerir. ayrıca Bilinmeyen Karakteristik'in sağında iki simge bulunur. Aşağı dönük ok okumak , diğeri yazmak demektir.


Yazma değeri açılır penceresini açmak için yukarıyı gösteren oka dokunun, ardından veri türünü UINT 8 olarak ayarlayın ve seçtiğiniz değeri yazmak için hatta dokunun ("0" veya "1"). Gönder düğmesine dokunduğunuzda değer 101 panosuna gönderilir ve LED anında buna göre değişir.


Kod

/*
 * Copyright (c) 2016 Intel Corporation.  All rights reserved.
 * See the bottom of this file for the license terms.
 */


#include <CurieBLE.h>

const int ledPin = 13; // set ledPin to use on-board LED
BLEPeripheral blePeripheral; // create peripheral instance

BLEService ledService("19B10000-E8F2-537E-4F6C-D104768A1214"); // create service

// create switch characteristic and allow remote device to read and write
BLECharCharacteristic switchChar("19B10001-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite);

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT); // use the LED on pin 13 as an output

  // set the local name peripheral advertises
  blePeripheral.setLocalName("LEDCB");
  // set the UUID for the service this peripheral advertises
  blePeripheral.setAdvertisedServiceUuid(ledService.uuid());

  // add service and characteristic
  blePeripheral.addAttribute(ledService);
  blePeripheral.addAttribute(switchChar);

  // assign event handlers for connected, disconnected to peripheral
  blePeripheral.setEventHandler(BLEConnected, blePeripheralConnectHandler);
  blePeripheral.setEventHandler(BLEDisconnected, blePeripheralDisconnectHandler);

  // assign event handlers for characteristic
  switchChar.setEventHandler(BLEWritten, switchCharacteristicWritten);
// set an initial value for the characteristic
  switchChar.setValue(0);

  // advertise the service
  blePeripheral.begin();
  Serial.println(("Bluetooth device active, waiting for connections..."));
}

void loop() {
  // poll peripheral
  blePeripheral.poll();
}

void blePeripheralConnectHandler(BLECentral& central) {
  // central connected event handler
  Serial.print("Connected event, central: ");
  Serial.println(central.address());
}

void blePeripheralDisconnectHandler(BLECentral& central) {
  // central disconnected event handler
  Serial.print("Disconnected event, central: ");
  Serial.println(central.address());
}

void switchCharacteristicWritten(BLECentral& central, BLECharacteristic& characteristic) {
  // central wrote new value to characteristic, update LED
  Serial.print("Characteristic event, written: ");

  if (switchChar.value()) {
    Serial.println("LED on");
    digitalWrite(ledPin, HIGH);
  } else {
    Serial.println("LED off");
    digitalWrite(ledPin, LOW);
  }
}

/*
  Copyright (c) 2016 Intel Corporation. All rights reserved.

  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.

  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General Public
  License along with this library; if not, write to the Free Software
  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-
  1301 USA
*/
[Kodu Al]

See Also