//Declare and assign led pins
const int LEDS[16] = {27, 26, 23, 22, 21, 19, 18, 5, 17, 16, 4, 0, 2, 15, 12, 14};
const int IN_LEDS[3][4] = {{23, 22, 21, 19}, {18, 5, 17, 16}, {27, 26, 26, 27}};
const int OUT_LEDS[6] = {4, 0, 2, 15, 12, 14};
//Variables for arithmetic operation
long input1, input2, result, op;
void setup() {
Serial.begin(115200);
//Mark all 16 Led Pins as OUTPUT
for (int a = 0; a < 16; a++) {
pinMode(LEDS[a], OUTPUT);
}
}
//FOR INPUT 1 LEDs, INPUT 2 LEDs, and Operator LEDs
//Funtion for converting integer into byte array, byte array
//Match Led output pins into byte array, turn on Led when byte is 1
void outLeds(int num, int index) {
String binaryStr = String( num, BIN);
binaryStr = ("0000" + binaryStr).substring(binaryStr.length());
for (int a = 0; a < 4; a++) {
digitalWrite(IN_LEDS[index][a], binaryStr.charAt(a) == '1' ? HIGH : LOW);
}
}
//FOR OUTPUT LEDs
void resultLeds(int num) {
String binaryStr = String( num, BIN);
binaryStr = ("000000" + binaryStr).substring(binaryStr.length());
for (int a = 0; a < 6; a++) {
digitalWrite(OUT_LEDS[a], binaryStr.charAt(a) == '1' ? HIGH : LOW);
}
}
void loop() {
Serial.println("Input any key to start... ");
while (Serial.available() == 0)
{
}
//Wait for any input in the terminal to start
Serial.readString();
//Turn OFF all LEDs
for (int a = 0; a < 16; a++) {
digitalWrite(LEDS[a], LOW);
}
Serial.print("Enter the first input (Red LED): ");
while (Serial.available() == 0)
{
}
//Wait for input 1
input1 = Serial.readString().toInt();
Serial.println(input1);
//Call function to turn on LEDs for Input 1
outLeds(input1, 0);
Serial.print("Enter the second input (Green LED): ");
while (Serial.available() == 0)
{
}
//Wait for input 2
input2 = Serial.readString().toInt();
Serial.println(input2);
//Call function to turn on LEDs for Input 2
outLeds(input2, 1);
Serial.println("\nOperation:");
Serial.println("[1] Addition (Yellow LED)");
Serial.println("[2] Subtraction (Blue LED)");
Serial.print("Choose your operation: ");
while (Serial.available() == 0) {
}
//Wait for operator input
op = Serial.readString().toInt();
Serial.println(op);
outLeds(op, 2);
//Perform arithmetic operation
switch (op) {
case 1:
result = input1 + input2;
break;
case 2:
result = input1 - input2;
break;
default:
Serial.println("Invalid input.");
}
//Display the result of the operation
Serial.print("Result (Cyan LED): ");
Serial.println(result);
//Call funtion to turn on LEDs for Output
resultLeds(result);
}