// Different segments const unsigned int A = 5; const unsigned int F = 4; const unsigned int G = 33; const unsigned int B = 3; const unsigned int E = 29; const unsigned int D = 30; const unsigned int C = 32; const unsigned int DP = 31; const unsigned int Anode1 = 9; const unsigned int Anode2 = 11; const unsigned int Anode3 = 12; const unsigned int Anode4 = 13; // digit is the digit to display. Note that 4 is the furthest right and 1 is the furthest left unsigned int digit = 1; // incoming byte value String value = "0"; char a; unsigned int decimal = 0; unsigned int length = 1; void setup() { Serial.begin(9600); // Pin Setup pinMode(Anode1, OUTPUT); pinMode(Anode2, OUTPUT); pinMode(Anode3, OUTPUT); pinMode(Anode4, OUTPUT); pinMode(A,OUTPUT); pinMode(B,OUTPUT); pinMode(C,OUTPUT); pinMode(D,OUTPUT); pinMode(E,OUTPUT); pinMode(F,OUTPUT); pinMode(G,OUTPUT); pinMode(DP,OUTPUT); } void decodeAndWrite(unsigned int value){ // Write values all high to turn off the previous number digitalWrite(A,HIGH); digitalWrite(B,HIGH); digitalWrite(C,HIGH); digitalWrite(D,HIGH); digitalWrite(E,HIGH); digitalWrite(F,HIGH); digitalWrite(G,HIGH); digitalWrite(DP,HIGH); switch(value){ // cases for each digit case 0: digitalWrite(A,LOW); digitalWrite(F,LOW); digitalWrite(E,LOW); digitalWrite(D,LOW); digitalWrite(C,LOW); digitalWrite(B,LOW); break; case 1: digitalWrite(C,LOW); digitalWrite(B,LOW); break; case 2: digitalWrite(A,LOW); digitalWrite(G,LOW); digitalWrite(E,LOW); digitalWrite(D,LOW); digitalWrite(B,LOW); break; case 3: digitalWrite(C,LOW); digitalWrite(B,LOW); digitalWrite(A,LOW); digitalWrite(G,LOW); digitalWrite(D,LOW); break; case 4: digitalWrite(F,LOW); digitalWrite(B,LOW); digitalWrite(G,LOW); digitalWrite(C,LOW); break; case 5: digitalWrite(A,LOW); digitalWrite(F,LOW); digitalWrite(G,LOW); digitalWrite(C,LOW); digitalWrite(D,LOW); break; case 6: digitalWrite(C,LOW); digitalWrite(G,LOW); digitalWrite(E,LOW); digitalWrite(D,LOW); digitalWrite(F,LOW); break; case 7: digitalWrite(A,LOW); digitalWrite(B,LOW); digitalWrite(C,LOW); break; case 8: digitalWrite(A,LOW); digitalWrite(F,LOW); digitalWrite(B,LOW); digitalWrite(G,LOW); digitalWrite(C,LOW); digitalWrite(D,LOW); digitalWrite(E,LOW); break; case 9: digitalWrite(A,LOW); digitalWrite(F,LOW); digitalWrite(B,LOW); digitalWrite(G,LOW); digitalWrite(C,LOW); break; default: // if unknown value, display nothing break; } } void loop() { //listen for serial transmissions if (Serial.available() > 0) { value=""; while (Serial.available() > 0) { a=Serial.read(); value.concat(a-48); delay(5); } Serial.println(value); } length = value.length(); for (int i=0; i