Reference Language | Libraries | Comparison | Changes
CurieBLE : BLECharacteristic class
BLECharacteristic constructor
Description
Characteristics contain at least two attributes: a characteristic declaration, which contains
metadata about the data, and the characteristic value, which contains the data itself.
Since characteristics have:
- names
- UUIDs
- values
- read/write/notify property
There are many Characteristic constructors depending on the data type you plan to use, like showed below.
Syntax
- BLEBoolCharacteristic yourCharacteristicName(UUID, properties)
- BLECharCharacteristic yourCharacteristicName(UUID, properties)
- BLEUnsignedCharCharacteristic yourCharacteristicName(UUID, properties)
- BLEShortCharacteristic yourCharacteristicName(UUID, properties)
- BLEUnsignedShortCharacteristic yourCharacteristicName(UUID, properties)
- BLEIntCharacteristic yourCharacteristicName(UUID, properties)
- BLEUnsignedIntCharacteristic yourCharacteristicName(UUID, properties)
- BLELongCharacteristic yourCharacteristicName(UUID, properties)
- BLEUnsignedLongCharacteristic yourCharacteristicName(UUID, properties)
- BLEFloatCharacteristic yourCharacteristicName(UUID, properties)
- BLEDoubleCharacteristic yourCharacteristicName(UUID, properties)
Note: BLE characteristics are typed.
Parameters
- UUID: standard 16-bit characteristic UUID
- properties: what remote clients will be able to get notifications if this characteristic changes. It can assume the following values:
- BLERead
- BLEWrite
- BLENotify
Example
/*
* Copyright (c) 2016 Intel Corporation. All rights reserved.
* See the bottom of this file for the license terms.
*/
#include <CurieBLE.h>
BLEPeripheral blePeripheral; // BLE Peripheral Device (the board you're programming)
BLEService ledService("19B10000-E8F2-537E-4F6C-D104768A1214"); // BLE LED Service
// BLE LED Switch Characteristic - custom 128-bit UUID, read and writable by central
BLEUnsignedCharCharacteristic switchCharacteristic("19B10001-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite);
const int ledPin = 13; // pin to use for the LED
void setup() {
Serial.begin(9600);
// set LED pin to output mode
pinMode(ledPin, OUTPUT);
// set advertised local name and service UUID:
blePeripheral.setLocalName("LED");
blePeripheral.setAdvertisedServiceUuid(ledService.uuid());
// add service and characteristic:
blePeripheral.addAttribute(ledService);
blePeripheral.addAttribute(switchCharacteristic);
// set the initial value for the characeristic:
switchCharacteristic.setValue(0);
// begin advertising BLE service:
blePeripheral.begin();
Serial.println("BLE LED Peripheral");
}
void loop() {
// listen for BLE peripherals to connect:
BLECentral central = blePeripheral.central();
// if a central is connected to peripheral:
if (central) {
Serial.print("Connected to central: ");
// print the central's MAC address:
Serial.println(central.address());
// while the central is still connected to peripheral:
while (central.connected()) {
// if the remote device wrote to the characteristic,
// use the value to control the LED:
if (switchCharacteristic.written()) {
if (switchCharacteristic.value()) { // any value other than 0
Serial.println("LED on");
digitalWrite(ledPin, HIGH); // will turn the LED on
} else { // a 0 value
Serial.println(F("LED off"));
digitalWrite(ledPin, LOW); // will turn the LED off
}
}
}
// when the central disconnects, print it out:
Serial.print(F("Disconnected from central: "));
Serial.println(central.address());
}
}
/*
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
*/
See Also
Reference Home
Corrections, suggestions, and new documentation should be posted to the Forum.
The text of the Arduino reference is licensed under a
Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.