Ev v30 10: Relay input
This example show how the external input works when the source power is down.
Required Materials
1 x Waspmote 1 x Battery 1 x MiniUSB wire 1 x Events Board v30 1 x External input
Notes
- This example is valid only for Waspmote v15
Code
/*
--[Ev_v30_10] - Reading external input
Explanation: This example show how the external input works
when the source power is down. The SOCKET_6 is used for the external
input by default
Copyright (C) 2016 Libelium Comunicaciones Distribuidas S.L.
http://www.libelium.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Version: 3.1
Design: David Gascón
Implementation: Carlos Bello
*/
#include <WaspSensorEvent_v30.h>
//Instance objects
relayClass relay;
uint8_t value = 0;
void setup()
{
// 1. Initialization of the modules
// Turn on the USB and print a start message
USB.ON();
USB.println(F("Start program"));
// Turn on the sensor board
Events.ON();
// Enable interruptions from the board
Events.attachInt();
}
void loop()
{
///////////////////////////////////////
// 1. Read the sensor level
///////////////////////////////////////
// Read the sensor level
value = relay.readInRel();
// Print the info
if (value == 1)
{
USB.println(F("Sensor output: External input enabled"));
}
else
{
USB.println(F("Sensor output: External input disabled"));
}
///////////////////////////////////////
// 2. Go to deep sleep mode
///////////////////////////////////////
USB.println(F("enter deep sleep"));
PWR.deepSleep("00:00:00:10", RTC_OFFSET, RTC_ALM1_MODE1, SENSOR_ON);
USB.ON();
USB.println(F("wake up\n"));
///////////////////////////////////////
// 3. Check Interruption Flags
///////////////////////////////////////
// Check interruption from RTC alarm
if (intFlag & RTC_INT)
{
USB.println(F("-----------------------------"));
USB.println(F("RTC INT captured"));
USB.println(F("-----------------------------"));
// clear flag
intFlag &= ~(RTC_INT);
}
// Check interruption from Sensor Board
if (intFlag & SENS_INT)
{
// Disable interruptions from the board
Events.detachInt();
// Load the interruption flag
Events.loadInt();
// In case the interruption came from Relay Ext Int
if (relay.getInt())
{
USB.println(F("-----------------------------"));
USB.println(F("Interruption from Relay Input"));
USB.println(F("-----------------------------"));
}
// Clean the interruption flag
intFlag &= ~(SENS_INT);
// Enable interruptions from the board
Events.attachInt();
}
}
Output
H#
Start program
Sensor output: Main Source is Work
enter deep sleep
wake up
Sensor output: Main Source is Work
-----------------------------
RTC INT captured
-----------------------------
enter deep sleep
wake up
Sensor output: Main Source is Work
-----------------------------
RTC INT captured
-----------------------------
enter deep sleep
wake up
Sensor output: Main Source is Work
-----------------------------
RTC INT captured
-----------------------------
enter deep sleep
wake up
Sensor output: Main Source is Work
-----------------------------
RTC INT captured
-----------------------------
enter deep sleep
wake up
Sensor output: Main Source is Work
-----------------------------
RTC INT captured
-----------------------------
...
Last updated