#define SEG_A 6 #define SEG_B 7 #define SEG_C 8 #define SEG_D 9 #define SEG_E 10 #define SEG_F 11 #define SEG_G 12 #define SEG_DP 5 #define DISP_1 2 #define DISP_2 4 uint8_t cnt = 0; uint8_t target = 0; uint8_t step_map[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; void setup() { pinMode(SEG_A, OUTPUT); pinMode(SEG_B, OUTPUT); pinMode(SEG_C, OUTPUT); pinMode(SEG_D, OUTPUT); pinMode(SEG_E, OUTPUT); pinMode(SEG_F, OUTPUT); pinMode(SEG_G, OUTPUT); pinMode(SEG_DP, OUTPUT); pinMode(DISP_1, OUTPUT); pinMode(DISP_2, OUTPUT); } void loop() { uint8_t data1 = step_map[(analogRead(5)/(1024/11))]; uint8_t digi10 = data1 / 10; uint8_t digi1 = data1 - (digi10 * 10); digitalWrite(DISP_1, LOW); digitalWrite(DISP_2, LOW); if(target == 0 ){ seven_seg_out( digi1 ); digitalWrite(DISP_1, HIGH); digitalWrite(DISP_2, LOW); target = 1; } else { seven_seg_out( digi10 ); digitalWrite(DISP_1, LOW); digitalWrite(DISP_2, HIGH); target = 0; } } void seven_seg_out(uint8_t input) { input = input & 0xf; switch(input){ case 0: digitalWrite(SEG_A,HIGH); digitalWrite(SEG_B,HIGH); digitalWrite(SEG_C,HIGH); digitalWrite(SEG_D,HIGH); digitalWrite(SEG_E,HIGH); digitalWrite(SEG_F,HIGH); digitalWrite(SEG_G,LOW); break; case 1: digitalWrite(SEG_A,LOW); digitalWrite(SEG_B,HIGH); digitalWrite(SEG_C,HIGH); digitalWrite(SEG_D,LOW); digitalWrite(SEG_E,LOW); digitalWrite(SEG_F,LOW); digitalWrite(SEG_G,LOW); break; case 2: digitalWrite(SEG_A,HIGH); digitalWrite(SEG_B,HIGH); digitalWrite(SEG_C,LOW); digitalWrite(SEG_D,HIGH); digitalWrite(SEG_E,HIGH); digitalWrite(SEG_F,LOW); digitalWrite(SEG_G,HIGH); break; case 3: digitalWrite(SEG_A,HIGH); digitalWrite(SEG_B,HIGH); digitalWrite(SEG_C,HIGH); digitalWrite(SEG_D,HIGH); digitalWrite(SEG_E,LOW); digitalWrite(SEG_F,LOW); digitalWrite(SEG_G,HIGH); break; case 4: digitalWrite(SEG_A,LOW); digitalWrite(SEG_B,HIGH); digitalWrite(SEG_C,HIGH); digitalWrite(SEG_D,LOW); digitalWrite(SEG_E,LOW); digitalWrite(SEG_F,HIGH); digitalWrite(SEG_G,HIGH); break; case 5: digitalWrite(SEG_A,HIGH); digitalWrite(SEG_B,LOW); digitalWrite(SEG_C,HIGH); digitalWrite(SEG_D,HIGH); digitalWrite(SEG_E,LOW); digitalWrite(SEG_F,HIGH); digitalWrite(SEG_G,HIGH); break; case 6: digitalWrite(SEG_A,HIGH); digitalWrite(SEG_B,LOW); digitalWrite(SEG_C,HIGH); digitalWrite(SEG_D,HIGH); digitalWrite(SEG_E,HIGH); digitalWrite(SEG_F,HIGH); digitalWrite(SEG_G,HIGH); break; case 7: digitalWrite(SEG_A,HIGH); digitalWrite(SEG_B,HIGH); digitalWrite(SEG_C,HIGH); digitalWrite(SEG_D,LOW); digitalWrite(SEG_E,LOW); digitalWrite(SEG_F,LOW); digitalWrite(SEG_G,LOW); break; case 8: digitalWrite(SEG_A,HIGH); digitalWrite(SEG_B,HIGH); digitalWrite(SEG_C,HIGH); digitalWrite(SEG_D,HIGH); digitalWrite(SEG_E,HIGH); digitalWrite(SEG_F,HIGH); digitalWrite(SEG_G,HIGH); break; case 9: digitalWrite(SEG_A,HIGH); digitalWrite(SEG_B,HIGH); digitalWrite(SEG_C,HIGH); digitalWrite(SEG_D,HIGH); digitalWrite(SEG_E,LOW); digitalWrite(SEG_F,HIGH); digitalWrite(SEG_G,HIGH); break; case 10: digitalWrite(SEG_A,HIGH); digitalWrite(SEG_B,HIGH); digitalWrite(SEG_C,HIGH); digitalWrite(SEG_D,LOW); digitalWrite(SEG_E,HIGH); digitalWrite(SEG_F,HIGH); digitalWrite(SEG_G,HIGH); break; case 11: digitalWrite(SEG_A,LOW); digitalWrite(SEG_B,LOW); digitalWrite(SEG_C,HIGH); digitalWrite(SEG_D,HIGH); digitalWrite(SEG_E,HIGH); digitalWrite(SEG_F,HIGH); digitalWrite(SEG_G,HIGH); break; case 12: digitalWrite(SEG_A,HIGH); digitalWrite(SEG_B,LOW); digitalWrite(SEG_C,LOW); digitalWrite(SEG_D,HIGH); digitalWrite(SEG_E,HIGH); digitalWrite(SEG_F,HIGH); digitalWrite(SEG_G,LOW); break; case 13: digitalWrite(SEG_A,LOW); digitalWrite(SEG_B,HIGH); digitalWrite(SEG_C,HIGH); digitalWrite(SEG_D,HIGH); digitalWrite(SEG_E,HIGH); digitalWrite(SEG_F,LOW); digitalWrite(SEG_G,HIGH); break; case 14: digitalWrite(SEG_A,HIGH); digitalWrite(SEG_B,LOW); digitalWrite(SEG_C,LOW); digitalWrite(SEG_D,HIGH); digitalWrite(SEG_E,HIGH); digitalWrite(SEG_F,HIGH); digitalWrite(SEG_G,HIGH); break; case 15: digitalWrite(SEG_A,HIGH); digitalWrite(SEG_B,LOW); digitalWrite(SEG_C,LOW); digitalWrite(SEG_D,LOW); digitalWrite(SEG_E,HIGH); digitalWrite(SEG_F,HIGH); digitalWrite(SEG_G,HIGH); break; default: break; } }