#include <LiquidCrystal_I2C.h>
#define Pin1 3
#define Pin2 4
#define Pin3 5
#define Pin4 6
#define Pin5 7
#define VolCtl A3
#define SelSw1 8
#define SelSw2 9
#define SelSw3 10
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
int FreqVal = 0; //Volume Control
int Volume = 0;
byte Sig1 = 0; //Channel Switch
byte Sig2 = 0;
byte Sig3 = 0;
byte Sig4 = 0;
byte Sig5 = 0;
byte sw1 = 0; //Selector Switch
byte sw2 = 0;
byte sw3 = 0;
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
int FlashLED (int x){
//Function to Flash the on-board LED pin 13 to match x
//Flash the LED to match the Freq Value
int i = 0;
do{
digitalWrite(13, HIGH);
delay(250); // LED Pause
i = (i+1); // increase i by 1
digitalWrite(13, LOW);
delay(250);
}while (i < x); // repeat FreqVal times
digitalWrite(13, LOW); //Shut off the LED
delay(1000);
return i;
}
int DisplayFreq(int x){
//Display the FreqVal on the LCD
lcd.setCursor(0,0);
lcd.print("FreqVal ");
if (x==0) lcd.print("G");
else
lcd.print(x);
}
int DisplayVol(int x){
//Display the Volume Level
lcd.setCursor(0,1);
lcd.print("Vol ");
lcd.print(x);
}
int DisplaySel(int x){
//Display Power Switch Status
lcd.setCursor(8,1);
if (x == 0){
//Power off
lcd.print("Sel Off");
}
else if (x == 1){
lcd.print("T/R ");
}
else if (x==2){
lcd.print("T/R G ");
}
else if (x == 3){
lcd.print("ADF ");
}
}
void setup() {
// put your setup code here, to run once:
pinMode(Pin1, INPUT); //Channel Switch
pinMode(Pin2, INPUT);
pinMode(Pin3, INPUT);
pinMode(Pin4, INPUT);
pinMode(Pin5, INPUT);
pinMode(VolCtl, INPUT); //Volume Control
pinMode(SelSw1, INPUT); //Selector Switch
pinMode(SelSw2, INPUT);
pinMode(SelSw3, INPUT);
// Init LCD
lcd.init();
lcd.backlight();
}
void loop(){
int k = 0;
int FreqVal = 0;
int SelSw = 0;
//Read Volume Control
int v = analogRead(VolCtl);
if (v != Volume) {
Volume = v;
DisplayVol(Volume);
//Set DCS-Bios Radio Volume Here
}
//Check the Selector Switch
sw1 = digitalRead(SelSw1);
sw2 = digitalRead(SelSw2);
sw3 = digitalRead(SelSw3);
if ((sw1 == HIGH) && (sw2 == LOW) && (sw3 == LOW)) {
SelSw = 1;
DisplaySel(SelSw);
//Set Radio Selector to T/R
}
else if ((sw1 == LOW) && (sw2 == HIGH) && (sw3 == LOW)){
SelSw = 2;
DisplaySel(SelSw);
//Set Radio Selector to T/R + G
}
else if ((sw1 == LOW) && (sw2 == LOW) && (sw3 == HIGH)) {
SelSw = 3;
DisplaySel(SelSw);
//Set Radio Selector to ADF
}
else{
SelSw = 0;
DisplaySel(SelSw);
//Set Radio to Off
}
//Freq Selector Switch
//Read the pin values
Sig1 = digitalRead(Pin1);
Sig2 = digitalRead(Pin2);
Sig3 = digitalRead(Pin3);
Sig4 = digitalRead(Pin4);
Sig5 = digitalRead(Pin5);
if ( (Sig1 == HIGH) && (Sig2 == HIGH) && (Sig3 == HIGH) && (Sig4 == HIGH) && (Sig5 == LOW) ) {
FreqVal = 1;
k = DisplayFreq(FreqVal);
//Set DCS-Bios Radio channel here
goto CheckAgain;
}
else if ( (Sig1 == HIGH) && (Sig2 == HIGH) && (Sig3 == HIGH) && (Sig4 == LOW) && (Sig5 == LOW) ){
FreqVal = 2;
k = DisplayFreq(FreqVal);
//Set DCS-Bios Radio channel here
goto CheckAgain;
}
else if ( (Sig1 == HIGH) && (Sig2 == HIGH) && (Sig3 == LOW) && (Sig4 == LOW) && (Sig5 == LOW) ){
FreqVal = 3;
k = DisplayFreq(FreqVal);
//Set DCS-Bios Radio channel here
goto CheckAgain;
}
else if ( (Sig1 == HIGH) && (Sig2 == LOW) && (Sig3 == LOW) && (Sig4 == HIGH) && (Sig5 == LOW) ){
FreqVal = 4;
k = DisplayFreq(FreqVal);
//Set DCS-Bios Radio channel here
goto CheckAgain;
}
else if ( (Sig1 == LOW) && (Sig2 == LOW) && (Sig3 == HIGH) && (Sig4 == LOW) && (Sig5 == HIGH) ){
FreqVal = 5;
k = DisplayFreq(FreqVal);
//Set DCS-Bios Radio channel here
goto CheckAgain;
}
else if ( (Sig1 == LOW) && (Sig2 == HIGH) && (Sig3 == LOW) && (Sig4 == HIGH) && (Sig5 == LOW) ){
FreqVal = 6;
k = DisplayFreq(FreqVal);
//Set DCS-Bios Radio channel here
goto CheckAgain;
}
else if ( (Sig1 == HIGH) && (Sig2 == LOW) && (Sig3 == HIGH) && (Sig4 == HIGH) && (Sig5 == LOW) ){
FreqVal = 7;
k = DisplayFreq(FreqVal);
//Set DCS-Bios Radio channel here
goto CheckAgain;
}
else if ( (Sig1 == LOW) && (Sig2 == HIGH) && (Sig3 == HIGH) && (Sig4 == LOW) && (Sig5 == LOW) ){
FreqVal = 8;
k = DisplayFreq(FreqVal);
//Set DCS-Bios Radio channel here
goto CheckAgain;
}
else if ( (Sig1 == HIGH) && (Sig2 == HIGH) && (Sig3 == LOW) && (Sig4 == LOW) && (Sig5 == LOW) ){
FreqVal = 9;
k = DisplayFreq(FreqVal);
//Set DCS-Bios Radio channel here
goto CheckAgain;
}
else if ( (Sig1 == HIGH) && (Sig2 == LOW) && (Sig3 == LOW) && (Sig4 == LOW) && (Sig5 == HIGH) ){
FreqVal = 10;
k = DisplayFreq(FreqVal);
//Set DCS-Bios Radio channel here
goto CheckAgain;
}
else if ( (Sig1 == LOW) && (Sig2 == LOW) && (Sig3 == LOW) && (Sig4 == HIGH) && (Sig5 == HIGH) ){
FreqVal = 11;
k = DisplayFreq(FreqVal);
//Set DCS-Bios Radio channel here
goto CheckAgain;
}
else if ( (Sig1 == LOW) && (Sig2 == LOW) && (Sig3 == HIGH) && (Sig4 == HIGH) && (Sig5 == LOW) ){
FreqVal = 12;
k = DisplayFreq(FreqVal);
//Set DCS-Bios Radio channel here
goto CheckAgain;
}
else if ( (Sig1 == LOW) && (Sig2 == HIGH) && (Sig3 == HIGH) && (Sig4 == LOW) && (Sig5 == HIGH) ){
FreqVal = 13;
k = DisplayFreq(FreqVal); //Set DCS-Bios Radio channel here
goto CheckAgain;
}
else if ( (Sig1 == HIGH) && (Sig2 == HIGH) && (Sig3 == LOW) && (Sig4 == HIGH) && (Sig5 == LOW) ){
FreqVal = 14;
k = DisplayFreq(FreqVal);
//Set DCS-Bios Radio channel here
goto CheckAgain;
}
else if ( (Sig1 == HIGH) && (Sig2 == LOW) && (Sig3 == HIGH) && (Sig4 == LOW) && (Sig5 == LOW) ){
FreqVal = 15;
k = DisplayFreq(FreqVal);
//Set DCS-Bios Radio channel here
goto CheckAgain;
}
else if ( (Sig1 == LOW) && (Sig2 == HIGH) && (Sig3 == LOW) && (Sig4 == LOW) && (Sig5 == HIGH) ){
FreqVal = 16;
k = DisplayFreq(FreqVal);
//Set DCS-Bios Radio channel here
goto CheckAgain;
}
else if ( (Sig1 == HIGH) && (Sig2 == LOW) && (Sig3 == LOW) && (Sig4 == HIGH) && (Sig5 == HIGH) ){
FreqVal = 17;
k = DisplayFreq(FreqVal);
//Set DCS-Bios Radio channel here
goto CheckAgain;
}
else if ( (Sig1 == LOW) && (Sig2 == LOW) && (Sig3 == HIGH) && (Sig4 == HIGH) && (Sig5 == HIGH) ){
FreqVal = 18;
k = DisplayFreq(FreqVal);
//Set DCS-Bios Radio channel here
goto CheckAgain;
}
CheckAgain:
k = DisplayFreq(FreqVal);
}