Ardunio – UART practise

/*

          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();
}

Yorumlar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir