Interactive Shack Sign

This is an Arduino controlled disused LED traffic light which functions as a TX/RX indicator, wired into my footswitch PTT and as a call beacon for my XYL to call me when I'm in the shack with headphones on! I used simple black cardboard to make the lettering.  See below on how it works...

Electronics

The brains is an UnoR3 Arduino board which has a simple program to control the 12v relays on switch input, which in turn feeds 12v (high current) to the LED lights. Switches are wired into the board for PTT and XYL call downstairs

Modified footswitch

I added an extra microswitch so there are two; one for the rig PTT and one for the shack sign both actuated by the same foot press!

XYL Switch

Mounted downstairs and hardwired into the shack sign controller!

20211220_204140_1.mp4

In action...

Arduino Code (paste this into your arduino editor):


int RELAY1 = A0;int RELAY2 = A1;int RELAY3 = A2;int delayValue = 1000;int delayValue2 = 4000;int pin_switch1 = 2;int pin_switch2 = 3;
boolean oldSwitchState = LOW;boolean newSwitchState = LOW;boolean oldSwitchState2 = LOW;boolean newSwitchState2 = LOW;
void setup() {  // put your setup code here, to run once:  pinMode(RELAY1, OUTPUT);  pinMode(RELAY2, OUTPUT);  pinMode(RELAY3, OUTPUT);
  digitalWrite(RELAY1, HIGH);  digitalWrite(RELAY2, HIGH);  digitalWrite(RELAY3, HIGH);
  Serial.begin(9600);   pinMode(pin_switch1, INPUT);  pinMode(pin_switch2, INPUT);}
void loop(){    newSwitchState = digitalRead(pin_switch1);    newSwitchState2 = digitalRead(pin_switch2);     if ( newSwitchState != oldSwitchState )     { //AMBER CALLING       if ( newSwitchState == HIGH )        {        digitalWrite(RELAY1, LOW);        delay(delayValue);        digitalWrite(RELAY1, HIGH);        delay(delayValue);        digitalWrite(RELAY1, LOW);        delay(delayValue);        digitalWrite(RELAY1, HIGH);        delay(delayValue);       digitalWrite(RELAY1, LOW);        delay(delayValue);        digitalWrite(RELAY1, HIGH);        delay(delayValue);       }       else                                 { digitalWrite(RELAY1, HIGH);               }        oldSwitchState = newSwitchState;    }       if ( newSwitchState2 != oldSwitchState2 )     {   //ON AIR       if ( newSwitchState2 == HIGH )        {        digitalWrite(RELAY2, LOW);       digitalWrite(RELAY3, HIGH);                     }       else                                 { digitalWrite(RELAY2, HIGH);        digitalWrite(RELAY3, LOW);       delay(delayValue2);       digitalWrite(RELAY3, HIGH);              }        oldSwitchState2 = newSwitchState2;    }   }