//a,b,c,d,e,f,g
byte segValue[10][7] = {
{0,0,0,0,0,0,1}, //0
{1,0,0,1,1,1,1}, //1
{0,0,1,0,0,1,0}, //2
{0,0,0,0,1,1,0}, //3
{1,0,0,1,1,0,0}, //4
{0,1,0,0,1,0,0}, //5
{0,1,0,0,0,0,0}, //6
{0,0,0,1,1,1,1}, //7
{0,0,0,0,0,0,0}, //8
{0,0,0,0,1,0,0} //9
};
byte segPin[8]={2,3,4,5,6,7,8,9}; //{a,b,c,d,e,f,g,dp}
byte digitPin[2] = {A0,A1}; //segment
void setup() {
for(int i=0;i<10;i++){//ប្រកាស់អញាតិបើសិនលេខនិងស្មើ10អោយវានិងត្រលប់ទៅស្មើនិង0វិញ
pinMode(segPin[i], OUTPUT);//អោយវាបង្ហាញទិន្នន័យនៃ(i)
}
pinMode(digitPin[0], OUTPUT);//ដំណាងអោយA0
pinMode(digitPin[1], OUTPUT);//ដំណាងអោយA1
digitalWrite(digitPin[0], LOW); //ដំណាងអោយA0
digitalWrite(digitPin[1], LOW); //ដំណាងអោយA1
Serial.begin(9600);
//for input and output on 7 sgement
}
void loop()
{
//អោយវាពី0លោតដល់99លើ7sgement
for (int i = 0; i<100; i++)
{
display_N(i);
delay(1);
}
}
void display_N(int num)
{
// Convierte unidades y decenas
int und = num % 10;// យកចំនួននិងចែកនិង10
int dec = (num % 100) / 10 ; // យកចំនួននិងចែកនិង100 យកសំណល់ចែកនិង10
// Refresco dinamico
for(int i=0; i<100; i++)
{
segOutput(1, und, 1);
segOutput(0, dec, 1);
delay(2);
}
//code for display on 7 segement
Serial.print(dec);
Serial.println(und);
}
//LED
//clear date
void segClear(){
for(int i=0;i<8;i++){
digitalWrite(segPin[i], HIGH);
}
}
//LED
//បង្ហាញទិន្នន័យជាទសភាគ
void segOutput(int d, int Number, int dp){
segClear();
digitalWrite(digitPin[d], HIGH);
for(int i=0;i<7;i++){
digitalWrite(segPin[i], segValue[Number][i]);
}
//ពន្យាពេលនៃការបង្ហាញទិន្នន័យ
digitalWrite(segPin[7], dp);
delayMicroseconds(1000);
digitalWrite(digitPin[d], LOW);
}