   }    
 }
 
-void drawDigit(short value) {
+void drawDigit(short value, boolean hasDecimalPoint) {
   switch (value) {
-    case DEGREE:
-      digitalWrite(SEGMENT_A_PIN, HIGH);
-      digitalWrite(SEGMENT_B_PIN, HIGH);
-      digitalWrite(SEGMENT_C_PIN, LOW);
-      digitalWrite(SEGMENT_D_PIN, LOW);
-      digitalWrite(SEGMENT_E_PIN, LOW);
-      digitalWrite(SEGMENT_F_PIN, HIGH);
-      digitalWrite(SEGMENT_G_PIN, HIGH);
-      break;
-    case MINUS:
+    case R_SYMBOL:
+      digitalWrite(SEGMENT_A_PIN, LOW);
+      digitalWrite(SEGMENT_B_PIN, LOW);
+      digitalWrite(SEGMENT_C_PIN, LOW);
+      digitalWrite(SEGMENT_D_PIN, LOW);
+      digitalWrite(SEGMENT_E_PIN, HIGH);
+      digitalWrite(SEGMENT_F_PIN, LOW);
+      digitalWrite(SEGMENT_G_PIN, HIGH);
+      break;
+    case E_SYMBOL:
+      digitalWrite(SEGMENT_A_PIN, HIGH);
+      digitalWrite(SEGMENT_B_PIN, LOW);
+      digitalWrite(SEGMENT_C_PIN, LOW);
+      digitalWrite(SEGMENT_D_PIN, HIGH);
+      digitalWrite(SEGMENT_E_PIN, HIGH);
+      digitalWrite(SEGMENT_F_PIN, HIGH);
+      digitalWrite(SEGMENT_G_PIN, HIGH);
+      break;
+    case NOTHING_SYMBOL:
+      digitalWrite(SEGMENT_A_PIN, LOW);
+      digitalWrite(SEGMENT_B_PIN, LOW);
+      digitalWrite(SEGMENT_C_PIN, LOW);
+      digitalWrite(SEGMENT_D_PIN, LOW);
+      digitalWrite(SEGMENT_E_PIN, LOW);
+      digitalWrite(SEGMENT_F_PIN, LOW);
+      digitalWrite(SEGMENT_G_PIN, LOW);
+      break;
+    case HUMIDITY_SYMBOL:
+      digitalWrite(SEGMENT_A_PIN, LOW);
+      digitalWrite(SEGMENT_B_PIN, HIGH);
+      digitalWrite(SEGMENT_C_PIN, HIGH);
+      digitalWrite(SEGMENT_D_PIN, LOW);
+      digitalWrite(SEGMENT_E_PIN, HIGH);
+      digitalWrite(SEGMENT_F_PIN, HIGH);
+      digitalWrite(SEGMENT_G_PIN, HIGH);
+      break;
+    case DEGREE_SYMBOL:
+      digitalWrite(SEGMENT_A_PIN, HIGH);
+      digitalWrite(SEGMENT_B_PIN, HIGH);
+      digitalWrite(SEGMENT_C_PIN, LOW);
+      digitalWrite(SEGMENT_D_PIN, LOW);
+      digitalWrite(SEGMENT_E_PIN, LOW);
+      digitalWrite(SEGMENT_F_PIN, HIGH);
+      digitalWrite(SEGMENT_G_PIN, HIGH);
+      break;
+    case MINUS_SYMBOL:
       digitalWrite(SEGMENT_A_PIN, LOW);
       digitalWrite(SEGMENT_B_PIN, LOW);
       digitalWrite(SEGMENT_C_PIN, LOW);

  digitalWrite(SEGMENT_E_PIN, HIGH);
  digitalWrite(SEGMENT_F_PIN, HIGH);
  digitalWrite(SEGMENT_G_PIN, HIGH);
  
  digits[0] = MINUS;
  digits[1] = 2;
  digits[2] = 3;
  digits[3] = DEGREE;
}

void loop() {
  activateDigit(INACTIVE);
  drawDigit(digits[currentDigitIndex]);
  activateDigit(currentDigitIndex);
  
  currentDigitIndex++;
  if (currentDigitIndex >= 4) currentDigitIndex = 0;
  
  delayMicroseconds(DIGIT_DELAY);
}

      digitalWrite(SEGMENT_F_PIN, LOW);
      digitalWrite(SEGMENT_G_PIN, LOW);
  }
  digitalWrite(SEGMENT_DP_PIN, hasDecimalPoint ? HIGH : LOW);
}

int readData() {
  temperature = -23;
  humidity = 463;
  
  return 0;
}

void setErrorCode(int errorCode) {
  digits[0] = E_SYMBOL;
  digits[1] = R_SYMBOL;
  digits[2] = R_SYMBOL;
  digits[3] = 5;
}  

void setTemperature() {
  digits[0] = MINUS_SYMBOL;
  digits[1] = 2;
  digits[2] = 3;
  digits[3] = DEGREE_SYMBOL;
  
  decimalPoints[0] = false;
  decimalPoints[1] = true;
  decimalPoints[2] = false;
  decimalPoints[3] = false;
}

void setHumidity() {
  digits[0] = 4;
  digits[1] = 6;
  digits[2] = 3;
  digits[3] = HUMIDITY_SYMBOL;
  
  decimalPoints[0] = false;
  decimalPoints[1] = true;
  decimalPoints[2] = false;
  decimalPoints[3] = false;
}

void setup() {
