// a b c d e f g 1 2 3 4
byte segment[11] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
byte numbers[14] = {
B11000000, // 0
B11111001, // 1
B10100100, // 2
B10110000, // 3
B10011001, // 4
B10010010, // 5
B10000010, // 6
B11111000, // 7
B10000000, // 8
B10010000, // 9
B10111111, // - 10
B11110111, // _ 11
B10001100, // P 12
B11111111 // " " 13
};
//byte space = B11111111; // boşluk, bütün segmentler kapalı
//byte decimal = B10000000;// nokta
//byte positions[8] = {1, 2, 4, 8, 16, 32, 64, 128};// Positions
int delay_display = 0;
void setup() {
for (byte x = 0; x < 11; x++) {
pinMode(segment[x], OUTPUT); // bütün pinleri çıkış olarak tanımlıyoruz (display segmentleri)
}
pinMode(13, OUTPUT);
digitalWrite(13, 1);
}
void loop() {
//delay_display = analogRead(A0) / 4;
delay_display = 100;
Display_delay_ms_1x(1234, 1000);
}
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
// displaye ve ledlere bilgi gönderme alt programı
void Display_delay_ms_1x(int val, unsigned long delay_ms) {
unsigned long millis_degeri = millis();
delay_ms = millis_degeri + delay_ms;
while (millis_degeri < delay_ms) {
// delay_ms seğişkeni (mili saniye) kadar burayı tekrar eder
int temp = numbers[val % 10]; // -> "%" işareti ile 10'a böler, kalanı verir. Birler basamağını verir.
for (byte i = 0; i < 7; i++) digitalWrite(segment[i], bitRead(temp, i));
digitalWrite(segment[7], 1);
digitalWrite(segment[8], 0);
digitalWrite(segment[9], 0);
digitalWrite(segment[10], 0);
delay(delay_display);
temp = numbers[(val / 10) % 10]; // -> 10'a bölme işlemi. Onlar basamağını verir.
for (byte i = 0; i < 7; i++) digitalWrite(segment[i], bitRead(temp, i));
digitalWrite(segment[7], 0);
digitalWrite(segment[8], 1);
digitalWrite(segment[9], 0);
digitalWrite(segment[10], 0);
delay(delay_display);
temp = numbers[(val / 100) % 10]; // -> Yüzler basamağı
for (byte i = 0; i < 7; i++) digitalWrite(segment[i], bitRead(temp, i));
digitalWrite(segment[7], 0);
digitalWrite(segment[8], 0);
digitalWrite(segment[9], 1);
digitalWrite(segment[10], 0);
delay(delay_display);
temp = numbers[val / 1000]; // -> 1000'a bölme işlemi. Binler basamağını verir.
for (byte i = 0; i < 7; i++) digitalWrite(segment[i], bitRead(temp, i));
digitalWrite(segment[7], 0);
digitalWrite(segment[8], 0);
digitalWrite(segment[9], 0);
digitalWrite(segment[10], 1);
delay(delay_display);
millis_degeri = millis();
}
}
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////