/*
Berk Muammer Kuzu - Converting decimal to binary and getting output via LEDs using UART
kullanılan kart : Arduino MEGA 2560
eklenebilir özellikler
-işaret biti eklenebilir.
-iki sayıdan daha fazla işlem yapabilen bir sistem tasarlanabilir.
-6 led bize maks 63 e kadar işlem yapma olanağı tanıyor bu sorun girilmeye çalışılabilir. 63 den sonrasında sadece son 6 bite bakarak çıktı veriyor.
*/
const int ledPins[6] = {13, 12, 11, 10, 9, 8}; // order LSB to MSB
void setup() {
Serial.begin(9600);
for (int i = 0; i < 6; i++) {
pinMode(ledPins[i], OUTPUT);
}
Serial.println("Please enter your operation(ex: 3+6): ");
}
void loop() {
if (Serial.available()) {
int x = Serial.parseInt();
char op = Serial.read();
int y = Serial.parseInt();
int result = 0;
switch (op) {
case '+':
result = x + y;
break;
case '-':
result = x - y;
break;
case '*':
result = x * y;
break;
case '/':
if (y != 0) result = x / y;
else {
Serial.println("ERROR: Division by 0!");
clearLeds();
resetSerial();
return;
}
break;
default:
Serial.println("INVALID OPERATION");
clearLeds();
resetSerial();
return;
}
Serial.print("Result: ");
Serial.println(result);
for (int i = 0; i < 6; i++) {
digitalWrite(ledPins[i], bitRead(result, i));
}
resetSerial();
}
}
void clearLeds() {
for (int i = 0; i < 6; i++) {
digitalWrite(ledPins[i], LOW);
}
}
void resetSerial() {
while (Serial.available()) Serial.read();
}
Bir yanıt yazın