105 lines
2.5 KiB
C++
105 lines
2.5 KiB
C++
/*************************************************************
|
|
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 <SPI.h>
|
|
#include <Ethernet.h>
|
|
#include <BlynkSimpleEthernet.h>
|
|
|
|
// 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();
|
|
}
|
|
|