работает в паре с micro:bit мигалкой
Dependencies: mbed BLE_API nRF51822
Программа для управляющего устройства на nRF51822. Используется одна Button1 для включения\выключения светодиода на устройстве приемнике.
Revision 14:e31da6a3279f, committed 2019-12-14
- 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 |
diff -r 7b6d69a11fb5 -r e31da6a3279f main.cpp --- 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() +{ +}