// Библиотека для общения устройств по BLE #include // Номер пина, к которому подключена кнопка constexpr uint8_t PIN_ARDUINO_BUTTON = 19; // Переменная, для хранения состояния светодиода boolean ledSwitch; // BLE LED Service BLEService LEDService("19B10000-E8F2-537E-4F6C-D104768A1214"); // BLE LED Switch Characteristic - custom 128-bit UUID, read and writable by central BLEByteCharacteristic LEDCharacteristic("19B10001-E8F2-537E-4F6C-D104768A1214", BLERead | BLENotify | BLEWrite); void setup() { // Открываем Serial-порт Serial.begin(9600); // Ожидаем подключение по USB // Если не используете отладку, удалите строку while (!Serial); // Кнопку в режим входа pinMode(PIN_ARDUINO_BUTTON, INPUT); // Инициализируем BLE if (!BLE.begin()) { Serial.println("Starting BLE failed!"); } // Устанавливаем локальное имя BLE.setLocalName("Button Device LED"); // Устанавливаем службу UUID BLE.setAdvertisedService(LEDService); // Добавляем характеристику LEDService.addCharacteristic(LEDCharacteristic); // Добавляем сервис BLE.addService(LEDService); // Запускаем BLE.advertise(); Serial.println("BLE LED Peripheral, waiting for connections…"); } void loop() { // Слушаем все устройства BLE BLEDevice central = BLE.central(); // Если Central Device подключилось if (central) { Serial.print("Connected to central: "); // Выводим MAC-адрес подключенного устройства Serial.println(central.address()); // Пока Central Device подключено к переферийному while (central.connected()) { // Считываем состояние кнопки bool buttonState = digitalRead(PIN_ARDUINO_BUTTON); // Если кнопка нажата if (buttonState == LOW) { ledSwitch = !ledSwitch; delay(500); // Если светодиод не горит, включаем его // Если светодиод горит, выключаем его if (ledSwitch) { Serial.println("ON"); LEDCharacteristic.writeValue((byte)0x01); } else { LEDCharacteristic.writeValue((byte)0x00); Serial.println("OFF"); } } } // Если Central Device отключилось // Выводим сообщение в Serial-порт Serial.print(F("Disconnected from central: ")); Serial.println(central.address()); } }