const byte seg_a = 2 ;
const byte seg_b = 3 ;
const byte seg_c = 4 ;
const byte seg_d = 5 ;
const byte seg_e = 6 ;
const byte seg_f = 7 ;
const byte seg_g = 8 ;
const byte dig_1 = 9 ;
const byte dig_2 = 10 ;
const byte dig_3 = 11 ;
const byte dig_4 = 12 ;
#define ON LOW
#define OFF HIGH
#define SHOW OFF
#define HIDE ON
void setup() {
// put your setup code here, to run once:
for(int i = 2; i <= 12; i++) {
pinMode(i, OUTPUT) ;
}
}
void display(byte luku) ;
void screen(byte digit, byte merkki) ;
byte yks = 0, kym = 0, sat = 0, tuh = 0 ;
void loop() {
// put your main code here, to run repeatedly:
//for-loopissa käydään läpi kaikki kokonaisluvut 0-9999
for(int num = 0; num < 10000; num++) {
//alustetaan muuttujat tätä kierrosta varten
int numero = num ;
//puretaan "tonnit"
while(numero > 999) {
tuh++ ;
numero = numero - 1000 ;
}
/*
* Tulostetaan tonnit, eli
* esitetään merkki digit 1:ssa
*/
screen(1, tuh) ;
delay(10) ;
//Puretaan "satkut"
while(numero > 99) {
sat++ ;
numero = numero - 100 ;
}
/*
* Tulostetaan satkut, eli
* esitetään merkki digit 2:ssa
*/
screen(2, sat) ;
delay(10) ;
//Puretaan "kympit"
while(numero > 9) {
kym++ ;
numero = numero - 10 ;
}
/*
* Tulostetaan kympit, eli
* esitetään merkki digit 3:ssa
*/
screen(3, kym) ;
delay(10) ;
//Puretaan "ykköset"
yks = numero ;
/*
* Tulostetaan ykköset, eli
* esitetään merkki digit 4:ssa
*/
screen(4, yks) ;
delay(10) ;
}
}
/*
* TÄSTÄ ALKAA FUNKTIOT
*/
// Näytöllä näyttämisen funktio
void screen(byte digit, byte merkki) {
switch(digit) {
case 1:
digitalWrite(dig_4, HIDE) ;
display(merkki) ;
digitalWrite(dig_1, SHOW) ;
break ;
case 2:
digitalWrite(dig_1, HIDE) ;
display(merkki) ;
digitalWrite(dig_2, SHOW) ;
break ;
case 3:
digitalWrite(dig_2, HIDE) ;
display(merkki) ;
digitalWrite(dig_3, SHOW) ;
break ;
case 4:
digitalWrite(dig_3, HIDE) ;
display(merkki) ;
digitalWrite(dig_4, SHOW) ;
break ;
}
}
// Segmenttien kirjoitus funktio
void display(byte luku) {
switch(luku) {
case 0:
digitalWrite(seg_a, ON) ;
digitalWrite(seg_b, ON) ;
digitalWrite(seg_c, ON) ;
digitalWrite(seg_d, ON) ;
digitalWrite(seg_e, ON) ;
digitalWrite(seg_f, ON) ;
digitalWrite(seg_g, OFF) ;
break ;
case 1:
digitalWrite(seg_a, OFF) ;
digitalWrite(seg_b, ON) ;
digitalWrite(seg_c, ON) ;
digitalWrite(seg_d, OFF) ;
digitalWrite(seg_e, OFF) ;
digitalWrite(seg_f, OFF) ;
digitalWrite(seg_g, OFF) ;
break ;
case 2:
digitalWrite(seg_a, ON) ;
digitalWrite(seg_b, ON) ;
digitalWrite(seg_c, OFF) ;
digitalWrite(seg_d, ON) ;
digitalWrite(seg_e, ON) ;
digitalWrite(seg_f, OFF) ;
digitalWrite(seg_g, ON) ;
break ;
case 3:
digitalWrite(seg_a, ON) ;
digitalWrite(seg_b, ON) ;
digitalWrite(seg_c, ON) ;
digitalWrite(seg_d, ON) ;
digitalWrite(seg_e, OFF) ;
digitalWrite(seg_f, OFF) ;
digitalWrite(seg_g, ON) ;
break ;
case 4:
digitalWrite(seg_a, OFF) ;
digitalWrite(seg_b, ON) ;
digitalWrite(seg_c, ON) ;
digitalWrite(seg_d, OFF) ;
digitalWrite(seg_e, OFF) ;
digitalWrite(seg_f, ON) ;
digitalWrite(seg_g, ON) ;
break ;
case 5:
digitalWrite(seg_a, ON) ;
digitalWrite(seg_b, OFF) ;
digitalWrite(seg_c, ON) ;
digitalWrite(seg_d, ON) ;
digitalWrite(seg_e, OFF) ;
digitalWrite(seg_f, ON) ;
digitalWrite(seg_g, ON) ;
break ;
case 6:
digitalWrite(seg_a, ON) ;
digitalWrite(seg_b, OFF) ;
digitalWrite(seg_c, ON) ;
digitalWrite(seg_d, ON) ;
digitalWrite(seg_e, ON) ;
digitalWrite(seg_f, ON) ;
digitalWrite(seg_g, ON) ;
break ;
case 7:
digitalWrite(seg_a, ON) ;
digitalWrite(seg_b, ON) ;
digitalWrite(seg_c, ON) ;
digitalWrite(seg_d, OFF) ;
digitalWrite(seg_e, OFF) ;
digitalWrite(seg_f, OFF) ;
digitalWrite(seg_g, OFF) ;
break ;
case 8:
digitalWrite(seg_a, ON) ;
digitalWrite(seg_b, ON) ;
digitalWrite(seg_c, ON) ;
digitalWrite(seg_d, ON) ;
digitalWrite(seg_e, ON) ;
digitalWrite(seg_f, ON) ;
digitalWrite(seg_g, ON) ;
break ;
case 9:
digitalWrite(seg_a, ON) ;
digitalWrite(seg_b, ON) ;
digitalWrite(seg_c, ON) ;
digitalWrite(seg_d, ON) ;
digitalWrite(seg_e, OFF) ;
digitalWrite(seg_f, ON) ;
digitalWrite(seg_g, ON) ;
break ;
default:
digitalWrite(seg_a, OFF) ;
digitalWrite(seg_b, OFF) ;
digitalWrite(seg_c, OFF) ;
digitalWrite(seg_d, OFF) ;
digitalWrite(seg_e, OFF) ;
digitalWrite(seg_f, OFF) ;
digitalWrite(seg_g, OFF) ;
break ;
}
}