Hi guys , I've been using Mr. Nick Gammon's Mode Switch Manager and it works and helps well .
however , I think I need a deeper understanding of this method .
below is my sketch and this is what i want to happen:
1- at button off
- turn off all ledPins
2- if button has been OFF for >=3s and i then press it
- turn on playPin
3- after 5s has passed upon pressing(button still being pressed)
- turn on all ledPins
HOwever, processes 1 and 2 are the only ones happening . process 3 is not .
am i coding it right ?
my perception is that if the intervals are met , i can do whatever i want ,
tnx in advance guys
#include <SwitchManager.h>
SwitchManager modeSW; // create the object
const byte ModeSW = 2;//input from the Mode push button switch
const int playPin = 7;
const int ledPin1 = 8;
const int ledPin2 = 9;
const int ledPin3 = 10;
const int ledPin4 = 11;
void setup ()
{
modeSW.begin (ModeSW, modeSwitchManager);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(playPin, OUTPUT);
}
void loop ()
{
//check to see what's happening with the Mode switch
modeSW.check();
//other suff
}
// M O D E S W I T C H M A N A G E R
//****************************************************************
// function looks after the Mode switch functions
void modeSwitchManager (const byte newState, const unsigned long interval)
{
if (newState == LOW) //in this case ignor a switch release
{
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
return;
}
//the newSatate must be LOW
//-----------------------------------
if (interval >=1000)
{
digitalWrite(playPin, HIGH);
return;
}
//-----------------------------------
if (interval >=5000)
{
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, HIGH);
return;
}
//-----------------------------------
if (interval <= 250)
{
return;
}
return;
} // END of modeSwitchManager()