Advertisement
Guest User

Untitled

a guest
May 17th, 2016
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.60 KB | None | 0 0
  1. #include <CurieBle.h>
  2.  
  3. BLEPeripheral blePeripheral;       // Устройство BLE
  4. BLEService heartRateService("00000000000000000000000072646372"); // Сервис. 00000000000000000000000072646372 - ID сервиса, может быть использовано любое значение размером в 32 байта
  5.  
  6. // Характеристика для посылки измерений
  7. BLECharacteristic heartRateChar("2A37",  // стандартный 16-битный ID
  8.     BLERead | BLENotify, 2);  // BLERead | BLENotify говорит о том что характеристика будет оповещать всех клиентов о своем изменении                              // Характеристика занимает два байта (по спецификации)                              // https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.heart_rate_measurement.xml
  9.  
  10. int oldHeartRate = 0;  // переменная для того чтобы убедиться в том что не произойдет повторной отправки результатов
  11. long previousMillis = 0;  // Переменная для контроля за частотой проверки данных
  12.  
  13. void setup() {
  14.   Serial.begin(9600);  
  15.   pinMode(13, OUTPUT);   // инициализация лампочки на борде, которая будет зажигаться, когда к Genuino подключается другое устройство
  16.  
  17.   /* Задает имя для устройства*/
  18.   blePeripheral.setLocalName("HeartRateSketch");
  19.   blePeripheral.setAdvertisedServiceUuid(heartRateService.uuid());  //Включает уведомления о том что наше устройство вышло в сеть и обладает определенным сервисом
  20.   blePeripheral.addAttribute(heartRateService);   //добавляет  сервис
  21.   blePeripheral.addAttribute(heartRateChar); // Добавляет характеристике
  22.  
  23.   /* Включает BLE */
  24.   blePeripheral.begin();
  25.   Serial.println("Bluetooth device active, waiting for connections...");
  26. }
  27.  
  28. void loop() {
  29.   // Проверяет, подключился ли к нам кто то:
  30.   BLECentral central = blePeripheral.central();
  31.  
  32.   // Если подключился:
  33.   if (central) {
  34.     Serial.print("Connected to central: ");
  35.     // зажигает лампочке:
  36.     digitalWrite(13, HIGH);
  37.  
  38.     // пока к нам подключен клиент
  39.     //передаем ему значения пульсометра каждые 200мс:
  40.     while (central.connected()) {
  41.       long currentMillis = millis();
  42.       if (currentMillis - previousMillis >= 200) {
  43.         previousMillis = currentMillis;
  44.         updateHeartRate();
  45.       }
  46.     }
  47.     // при отключении от клиента выключает лампочке:
  48.     digitalWrite(13, LOW);
  49.     Serial.print("Disconnected from central: ");
  50.     Serial.println(central.address());
  51.   }
  52. }
  53.  
  54. void updateHeartRate() {
  55.   /*Читает данные с аналогового входа
  56.   */
  57.   int heartRate = analogRead(A0);
  58.   if (heartRate != oldHeartRate) {      // при изменении значения
  59.     Serial.print("Heart Rate is now: ");
  60.     Serial.println(heartRate);
  61.     const unsigned char heartRateCharArray[2] = { 0, (char)heartRate };
  62.     heartRateChar.setValue(heartRateCharArray, 2);  // обновляет характеристику
  63.     oldHeartRate = heartRate;          
  64.   }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement