const byte LED_PIN = 2; // This is a placeholder since WOKWI does not support an mp3 player
const byte PIR_PIN = 3;
const byte RELAY_PIN = 4;
void setup()
{
pinMode( LED_PIN, OUTPUT); // This is a placeholder since WOKWI does not support an mp3 player
pinMode( PIR_PIN, INPUT);
pinMode( RELAY_PIN, OUTPUT);
}
enum states { Off, On, Wait};
const unsigned long ON_TIME = 10000; // 10 seconds
const unsigned long WAIT_TIME = 30000; // 30 seconds
states currentState = Off;
unsigned long lastStateChange = 0;
void loop()
{
switch( currentState)
{
case On:
if( millis() - lastStateChange >= ON_TIME)
{
mp3( Off); // Turn off the mp3 player
relay( Off); // Turn off the relay
lastStateChange = millis();
currentState = Wait;
}
break;
case Wait:
if( millis() - lastStateChange >= WAIT_TIME)
{
currentState = Off;
}
break;
case Off:
{
if( digitalRead( PIR_PIN) == HIGH)
{
mp3( On); // Turn off the mp3 player
relay( On); // Turn off the relay
lastStateChange = millis();
currentState = On;
}
break;
}
}
}
void mp3( bool state)
{
// This is a placeholder since WOKWI does not support an mp3 player
digitalWrite( 2, state);
}
void relay( bool state)
{
digitalWrite( RELAY_PIN, state);
}