88 lines
2.1 KiB
C++
88 lines
2.1 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 monitor a button state
|
|
using interrupts mechanism.
|
|
|
|
App project setup:
|
|
LED widget on V1
|
|
*************************************************************/
|
|
|
|
/* 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";
|
|
|
|
WidgetLED led1(V1);
|
|
|
|
// We make these values volatile, as they are used in interrupt context
|
|
volatile bool pinChanged = false;
|
|
volatile int pinValue = 0;
|
|
|
|
// Most boards won't send data to WiFi out of interrupt handler.
|
|
// We just store the value and process it in the main loop.
|
|
void checkPin()
|
|
{
|
|
// Invert state, since button is "Active LOW"
|
|
pinValue = !digitalRead(2);
|
|
|
|
// Mark pin value changed
|
|
pinChanged = true;
|
|
}
|
|
|
|
void setup()
|
|
{
|
|
// Debug console
|
|
Serial.begin(9600);
|
|
|
|
Blynk.begin(auth);
|
|
|
|
// Make pin 2 HIGH by default
|
|
pinMode(2, INPUT_PULLUP);
|
|
// Attach INT to our handler
|
|
attachInterrupt(digitalPinToInterrupt(2), checkPin, CHANGE);
|
|
}
|
|
|
|
void loop()
|
|
{
|
|
Blynk.run();
|
|
|
|
if (pinChanged) {
|
|
|
|
// Process the value
|
|
if (pinValue) {
|
|
led1.on();
|
|
} else {
|
|
led1.off();
|
|
}
|
|
|
|
// Clear the mark, as we have processed the value
|
|
pinChanged = false;
|
|
}
|
|
}
|
|
|