работает в паре с micro:bit мигалкой

Dependencies:   mbed BLE_API nRF51822

Программа для управляющего устройства на nRF51822. Используется одна Button1 для включения\выключения светодиода на устройстве приемнике.

Files at this revision

API Documentation at this revision

Comitter:
mamont090671
Date:
Sat Dec 14 12:50:37 2019 +0000
Parent:
13:7b6d69a11fb5
Commit message:
use button1

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Sat Dec 14 07:44:31 2019 +0000
+++ b/main.cpp	Sat Dec 14 12:50:37 2019 +0000
@@ -26,6 +26,20 @@
 
 bool                     triggerLedCharacteristic = false;
 DiscoveredCharacteristic ledCharacteristic;
+uint8_t bVal = 0;
+
+//Функции обработки событий кнопок
+void triggerfall_1();   //Button1 falling interrupt function
+void triggerrise_1();   //Button1 rising interrupt function
+void triggerfall_2();   //Button2 falling interrupt function
+void triggerrise_2();   //Button2 rising interrupt function
+
+DigitalIn  sw1(BUTTON1);
+DigitalIn  sw2(BUTTON2);
+
+//Initiate input interrupts
+InterruptIn sw1Press(BUTTON1);
+InterruptIn sw2Press(BUTTON2);
 
 BLE        ble;
 Ticker ticker;
@@ -48,6 +62,8 @@
 }
 //поиск сервисов
 void serviceDiscoveryCallback(const DiscoveredService *service) {
+    printf("TEST!!!!!!!!\r\n");
+    printf("S UUID-%x\r\n", service->getUUID().getShortUUID());
     if (service->getUUID().shortOrLong() == UUID::UUID_TYPE_SHORT) {
         printf("S UUID-%x attrs[%u %u]\r\n", service->getUUID().getShortUUID(), service->getStartHandle(), service->getEndHandle());
     } else {
@@ -61,7 +77,7 @@
 }
 //поиск характеристик и вывод инфы
 void characteristicDiscoveryCallback(const DiscoveredCharacteristic *characteristicP) {
-    printf("  C UUID-%x valueAttr[%u] props[%x]\r\n", characteristicP->getUUID().getShortUUID(), characteristicP->getValueHandle(), (uint8_t)characteristicP->getProperties().broadcast());
+    printf("C UUID-%x valueAttr[%u] props[%x]\r\n", characteristicP->getUUID().getShortUUID(), characteristicP->getValueHandle(), (uint8_t)characteristicP->getProperties().broadcast());
     if (characteristicP->getUUID().getShortUUID() == 0xa001) { /* !ALERT! Alter this filter to suit your device. */
         ledCharacteristic        = *characteristicP;
         triggerLedCharacteristic = true;
@@ -77,6 +93,8 @@
         BLE::Instance().gattClient().onServiceDiscoveryTermination(discoveryTerminationCallback);
         BLE::Instance().gattClient().launchServiceDiscovery(params->handle, serviceDiscoveryCallback, characteristicDiscoveryCallback, 0xa000, 0xa001);
     }
+    printf("connected\r\n");
+    connectLED = 1;
 }
 
 //Вызывается событием "onDataRead"
@@ -90,7 +108,8 @@
         printf("\r\n");
 //#endif
 //пишем в характеристику 0х00 или 0х01, т.е. моргаем диодом дистанционно
-        uint8_t toggledValue = response->data[0] ^ 0x1;
+//        uint8_t toggledValue = response->data[0] ^ 0x1;
+        uint8_t toggledValue = bVal;
         ledCharacteristic.write(1, &toggledValue);
         printf("onDataRead\r\ntoggledValue: %02x\r\n", toggledValue);
     }
@@ -109,6 +128,7 @@
     printf("disconnected\r\n");
     pc.printf("Rescan\r\n");
     ble.gap().startScan(advertisementCallback);
+    connectLED = 0;
 }
 
 /**
@@ -151,6 +171,12 @@
 int main(void) {
     pc.baud(9600);
     printf("--- Start!!! ---\r\n");
+
+//Set falling and rising edge to apppropriate interrup function
+    sw1Press.fall(&triggerfall_1);
+    sw1Press.rise(&triggerrise_1);
+    sw2Press.fall(&triggerfall_2);
+    sw2Press.rise(&triggerrise_2);
     
     ticker.attach(periodicCallback, 1);
 
@@ -175,3 +201,22 @@
         ble.waitForEvent();
     }
 }
+
+//Button1 falling interrupt function
+void triggerfall_1()
+{
+    bVal =! bVal;
+}
+//Button1 rising interrupt function
+void triggerrise_1()
+{
+}
+
+//Button1 falling interrupt function
+void triggerfall_2()
+{
+}
+//Button1 rising interrupt function
+void triggerrise_2()
+{
+}