AVR : mengendalikan 2 (atau lebih) 7-segment dengan transistor

damn, breadboardnya bikin pusing seharian karena barisan kutub positif-negatifnya terpisah jadi 2 di tengah

Di posting sebelumnya sudah pernah di singgung tentang mengontrol 7-segment. Kalau ingin melihatnya lagi silahkan kunjungi link ini. Untuk mengontrol 7-segment menggunakan avr setidaknya butuh 7 pin untuk 1 7-segment (tanpa titik) jadi kalau ingin mengontrol 4 7-segment (untuk membuat jam digital misalnya) kita harus mengorbankan 28 pin avr ! Belum lagi kita perlu pin-pin ini untuk membaca switch sebagai pengontrol jamnya. Sungguh sangat banyak mengorbankan resource hanya untuk pekerjaan yang sederhana.

Dengan bantuan transistor, dengan hanya 7 pin (pin pengontrol transistornya tidak di hitung), kita bisa mengontrol 7-segment sebanyak mungkin. Idenya adalah menyalakan 7-segment secara bergantian dengan sangat  cepat sehingga mata kita jadi melihatnya seolah-olah 7 segment menyala bersamaan. Yang memungkinkan ini terjadi adalah transistor yang akan berperan sebagai switch dengan kontrol aliran listrik (di arahkan ke base transistor). Untuk lebih memahami cara kerjanya terlebih dahulu harus memahami cara kerja dari transistor ini. Di link ini ada penjelasan cepat dan mudah di pahami tentang cara kerja transistor ini. Intinya adalah dengan mengalirkan voltase rendah ke pin base transistor, akan "membuka gerbang" agar arus listrik dari pin collector bisa nyambung ke pin emitter. Jadi, saat transistor dalam keadaan "off" sambungan dar pin collector ke emitter akan terputus dan terjadi rangkain terbuka (tidak ada arus) dan akan terjadi sebaliknya ketika transistor dalam keadaan "on".

Untuk percobaan kali ini, kita akan menggunakan 2 7-segment yang akan mengitung dari 0 - 99. angkanya akan berganti tiap 1 detik seperti di postingan sebelumnya. skematik rangkaiannya seperti di bawah ini :
Dan kodenya bisa di akses disini, bingung cara compilenya ? Bisa liat di postingan sebelumnya. Inti dari kode ini dalam memanfaatkan transistor untuk switch ada disini :
//display 7 segment
        for(i = 0; i < 2; i++) {
            PORTB =(1 << i); // 'i'th PORTD GIVEN HIGH
            showin(digit [i]);
            _delay_ms(5);
            PORTB = (0 << i); //'i'th PORTD GIVEN LOW
        }
 jadi, ketika portb pada pin yang terkoneksi dengan base transistor di berikan tegangan kecil (itulah alasan dari resistor 4k7 di sambungan ke transistor itu), transistor akan dalam keadaan "on" dan akan menyambungkan GND 7-segment sehingga terjadi rangkaian tertutup dan sebaliknya. Itu saja yang perlu di jelaskan, sisa kode lainnya sudah pernah di jelaskan di postingan yang sebelum-sebelumnya. Mungkin cukup sekian.

Komentar