byte TP[28]={//pin assignment 2, 3,19, 5, 6, 8, 9,10,11,12, 22,23,25,27,29,33,35,37,39,41, 45,47,49,51,53,14,15,16 }; byte SevenSegAssign[3][8]={//7Seg assignment { 3,10, 2,11, 8, 9, 4,25}, {14,15,16,17,12,13, 1,26}, {21,22,23,24,18,20,19,} }; byte SegChar[10]={//7Seg character //GFEDCBA 0b00111111,//0 0b00000110,//1 0b01011011,//2 0b01001111,//3 0b01100110,//4 0b01101101,//5 0b01111101,//6 0b00000111,//7 0b01111111,//8 0b01101111 //9 }; boolean TP5,TP5_prev; //COM Port value boolean TPval[28]; //TP value byte SegError; byte SevenSeg[3]; //7Seg+DP. 0bxxxxxxxx => DP,G,F,E,D,C,B,A float displayval=0; //LCD Dispalay value float displayval_prev=10000; //dummy number void setup() { for(byte i=0;i<28;++i){ pinMode(TP[i], INPUT); } Serial.begin(115200); } void loop() { while(1){// Wait until the COM terminal changes + 1ms TP5=digitalRead(TP[5]); if(TP5!=TP5_prev){ delay(1); break; } } for(byte i=0;i<28;++i){//Read Terminal values TPval[i]=digitalRead(TP[i]); } if(TPval[5]==0){//Calculated when the COM port is 0. TPval2Seg();//TPvalue to 7Seg data Seg2Num(); //'Seg data to Number if(displayval!=displayval_prev && SegError==0){ Serial.print(millis()); Serial.print(","); Serial.println(displayval); } displayval_prev=displayval; } TP5_prev=TP5; } void TPval2Seg(){ for(byte j=0;j<3;++j){ SevenSeg[j]=0; for(byte i=0;i<8;++i){ SevenSeg[j]|=(TPval[SevenSegAssign[j][i]] &1)<> 7)== 1){ displayval*=0.01; } else if((SevenSeg[1] >> 7)==1){ displayval*=0.1; } }