const int LEDS[16] = {27,25, 26, 23, 22, 19, 18, 5, 17, 16, 4, 0, 2, 15, 12, 14};
const int IN_LEDS[3][4] = {{19, 18, 5, 17}, {16, 4, 0, 2},{22,23,22,23}};
const int OUT_LEDS[5] = {12, 14, 27, 26, 25};
long input1, input2, result, op;
void setup() {
Serial.begin(115200);
for (int a = 0; a < 16; a++) {
pinMode(LEDS[a], OUTPUT);
}
}
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);
}
}
void resultLeds(int num) {
String binaryStr = String( num, BIN);
binaryStr = ("00000" + binaryStr).substring(binaryStr.length());
for (int a = 0; a < 5; a++) {
digitalWrite(OUT_LEDS[a], binaryStr.charAt(a) == '1' ? HIGH : LOW);
}
}
void loop() {
Serial.println("Input any key to start... ");
while (Serial.available() == 0)
{
}
Serial.readString();
for (int a = 0; a < 16; a++) {
digitalWrite(LEDS[a], LOW);
}
Serial.print("Enter the first number: ");
while (Serial.available() == 0)
{
}
input1 = Serial.readString().toInt();
Serial.println(input1);
outLeds(input1, 0);
Serial.print("Enter the second number: ");
while (Serial.available() == 0)
{
}
input2 = Serial.readString().toInt();
Serial.println(input2);
outLeds(input2, 1);
Serial.println("\nChoose Operation:");
Serial.println("[1] Addition (RED)");
Serial.println("[2] Subtraction (GREEN)");
Serial.print("Choose your operation: ");
while (Serial.available() == 0) {
}
op = Serial.readString().toInt();
Serial.println(op);
outLeds(op, 2);
switch (op) {
case 1:
result = input1 + input2;
break;
case 2:
result = input1 - input2;
break;
default:
Serial.println("Invalid input.");
}
Serial.print("Result : ");
Serial.println(result);
resultLeds(result);
}