// https://wokwi.com/projects/373213655222061057
// https://forum.arduino.cc/t/flipflop-type-of-code/1156858
// if a 'lock' signal is received:
// mirror fold pin: go HIGH for 50ms, then go LOW.
// hazard lights and horn pin: go high for 200ms, go low
// if 'unlock' signal is received:
// mirror fold pin: go HIGH for 50ms, then go LOW.
// hazard lights and horn pin: go high for 200ms, go low for 200ms,
// go high for 200ms, go low.
const byte PinLock = 2;
const byte PinUnlock = 3;
const byte PinMirror = 11;
const byte PinHorn = 5;
const byte PinHazzard = 8;
enum { Off = LOW, On = HIGH };
bool locked;
// -----------------------------------------------------------------------------
void
loop (void)
{
if (! locked && LOW == digitalRead (PinLock)) { // lock
Serial.println ("lock");
locked = true;
digitalWrite (PinMirror, On);
digitalWrite (PinHorn, On);
digitalWrite (PinHazzard, On);
delay (50);
digitalWrite (PinMirror, Off);
delay (150);
digitalWrite (PinHorn, Off);
digitalWrite (PinHazzard, Off);
}
if (locked && LOW == digitalRead (PinUnlock)) { // un-lock
Serial.println ("un-lock");
locked = false;
digitalWrite (PinMirror, On);
digitalWrite (PinHorn, On);
digitalWrite (PinHazzard, On);
delay (50);
digitalWrite (PinMirror, Off);
delay (150);
digitalWrite (PinHorn, Off);
digitalWrite (PinHazzard, Off);
delay (200);
digitalWrite (PinHorn, On);
digitalWrite (PinHazzard, On);
delay (200);
digitalWrite (PinHorn, Off);
digitalWrite (PinHazzard, Off);
}
}
void
setup (void)
{
Serial.begin (9600);
pinMode (PinLock, INPUT_PULLUP);
pinMode (PinUnlock, INPUT_PULLUP);
pinMode (PinHorn, OUTPUT);
pinMode (PinHazzard, OUTPUT);
pinMode (PinMirror, OUTPUT);
digitalWrite (PinHorn, LOW);
digitalWrite (PinHazzard, LOW);
digitalWrite (PinMirror, LOW);
}
/*
// if a 'lock' signal is received:
// mirror fold pin: go HIGH for 50ms, then go LOW.
// hazard lights and horn pin: go high for 200ms, go low
// if 'unlock' signal is received:
// mirror fold pin: go HIGH for 50ms, then go LOW.
// hazard lights and horn pin: go high for 200ms, go low for 200ms,
// go high for 200ms, go low.
const byte PinLock = 2;
const byte PinUnlock = 3;
const byte PinMirror = 11;
const byte PinHorn = 5;
const byte PinHazzard = 8;
enum { Off = LOW, On = HIGH };
bool locked;
# define PRESST LOW
// -----------------------------------------------------------------------------
void
loop (void)
{
if (!locked && digitalRead(PinLock) == PRESST) { // lock
Serial.println ("lock");
locked = true;
digitalWrite (PinMirror, On);
tone(PinHorn, 520);
digitalWrite (PinHazzard, On);
delay (50);
digitalWrite (PinMirror, Off);
delay (150);
noTone(PinHorn);
digitalWrite (PinHazzard, Off);
}
if (locked && digitalRead(PinUnlock) == PRESST) { // un-lock
Serial.println ("un-lock");
locked = false;
digitalWrite (PinMirror, On);
tone(PinHorn, 400);
digitalWrite (PinHazzard, On);
delay (50);
digitalWrite (PinMirror, Off);
delay (150);
noTone(PinHorn);
digitalWrite (PinHazzard, Off);
delay (200);
tone(PinHorn, 400);
digitalWrite (PinHazzard, On);
delay (200);
noTone(PinHorn);
digitalWrite (PinHazzard, Off);
}
}
void
setup (void)
{
Serial.begin (9600);
pinMode (PinLock, INPUT_PULLUP);
pinMode (PinUnlock, INPUT_PULLUP);
pinMode (PinHorn, OUTPUT);
pinMode (PinHazzard, OUTPUT);
pinMode (PinMirror, OUTPUT);
digitalWrite (PinHorn, LOW);
digitalWrite (PinHazzard, LOW);
digitalWrite (PinMirror, LOW);
}
*/