/************************************************************* Download latest Blynk library here: https://github.com/blynkkk/blynk-library/releases/latest Blynk is a platform with iOS and Android apps to control Arduino, Raspberry Pi and the likes over the Internet. You can easily build graphic interfaces for all your projects by simply dragging and dropping widgets. Downloads, docs, tutorials: http://www.blynk.cc Sketch generator: http://examples.blynk.cc Blynk community: http://community.blynk.cc Follow us: http://www.fb.com/blynkapp http://twitter.com/blynk_app Blynk library is licensed under MIT license This example code is in public domain. ************************************************************* This example shows how to synchronize Button widget and physical button state. App project setup: Button widget attached to V2 (Switch mode) *************************************************************/ /* Comment this out to disable prints and save space */ #define BLYNK_PRINT Serial #include #include #include // You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon). char auth[] = "YourAuthToken"; // Set your LED and physical button pins here const int ledPin = 7; const int btnPin = 8; BlynkTimer timer; void checkPhysicalButton(); int ledState = LOW; int btnState = HIGH; // Every time we connect to the cloud... BLYNK_CONNECTED() { // Request the latest state from the server Blynk.syncVirtual(V2); // Alternatively, you could override server state using: //Blynk.virtualWrite(V2, ledState); } // When App button is pushed - switch the state BLYNK_WRITE(V2) { ledState = param.asInt(); digitalWrite(ledPin, ledState); } void checkPhysicalButton() { if (digitalRead(btnPin) == LOW) { // btnState is used to avoid sequential toggles if (btnState != LOW) { // Toggle LED state ledState = !ledState; digitalWrite(ledPin, ledState); // Update Button Widget Blynk.virtualWrite(V2, ledState); } btnState = LOW; } else { btnState = HIGH; } } void setup() { // Debug console Serial.begin(9600); Blynk.begin(auth); pinMode(ledPin, OUTPUT); pinMode(btnPin, INPUT_PULLUP); digitalWrite(ledPin, ledState); // Setup a function to be called every 100 ms timer.setInterval(100L, checkPhysicalButton); } void loop() { Blynk.run(); timer.run(); }