Teknik Elektro LinksBarrier-Gate & Turnstile Interface, Thermostat, Relay Driver, Microcontroler Board

Eksperimen Simulasi Traffic-Light Menggunakan Board Digispark ATtiny85

Setelah berkenalan secara singkat dengan Digispark KickStarter ATtiny85, sekarang kita coba membuat simulasi traffic-light sederhana dengan menggunakan 3 buah LED saja.

Alat dan Bahan

  • Digispark Kickstarter ATtiny85 + Kabel USB
  • 3 buah LED diameter 5mm warna merah, kuning dan hijau
  • 3 buah resistor 390 ohm
  • 1 buah kabel jumper
  • Komputer

Skematik Traffic-Light 3 LED

Susun/rangkai board Digispark ATtiny85 dan komponen-komponen seperti gambar berikut ini. Perhatian: kaki LED yang panjang (anoda) terhubung ke resistor dan kaki LED yang pendek (katoda) terhubung ke GND.

trafficlight
Digispark ATtiny85 – Traffic Light – Skematik

Fungsi resistor adalah sebagai pembatas arus yang berfungsi membatasi arus yang mengalir pada komponen LED. Nilai resistor ini tidak harus 390, Anda boleh menggunakan nilai lain seperti 220, 330, 470, 560, 680, 1K, 1K5 atau 2K2. Semakin besar nilai resistor, semakin redup nyala LED-nya

Skenario Program Traffic-Light

  1. Inisialisasi
  2. Nyalakan LED Merah
  3. Delay 6 detikan
  4. Nyalakan LED Kuning (berkedip 3 kali, durasi ON-OFF 500ms)
  5. Matikan LED Merah
  6. Nyalakan LED Hijau
  7. Delay 3 detikan
  8. Nyalakan LED Kuning (berkedip 3 kali, durasi ON-OFF 500ms)
  9. Matikan LED Hijau
  10. Ulangi nomor 2

Kode Program Traffic-Light

/*
 * trafficlight.c
 * Contoh program traffic-light sederhana
 * Digispark Kickstarter ATtiny85
 * chandra@teknikelektrolinks.com
 * http://linux.teknikelektrolinks.com
 */

#include <avr/io.h>
#define F_CPU 16500000L
#include <util/delay.h>

#define ON 1
#define OFF 0

#define MERAH(n) ((n)==(OFF) ? (PORTB&=~_BV(PB0)) : (PORTB|=_BV(PB0)))
#define KUNING(n) ((n)==(OFF) ? (PORTB&=~_BV(PB2)) : (PORTB|=_BV(PB2)))
#define HIJAU(n) ((n)==(OFF) ? (PORTB&=~_BV(PB4)) : (PORTB|=_BV(PB4)))

int main() 
{
    int i;

    DDRB  = 0b00010101;
    PORTB = 0b00000000;

    while(1) 
    {
        MERAH(ON);
        _delay_ms(6000);

        for (i=1; i<=3; i++)
        {
            KUNING(ON);
            _delay_ms(500);
            KUNING(OFF);
            _delay_ms(500);
        }
        MERAH(OFF);
        HIJAU(ON);
        _delay_ms(3000);

        for (i=1; i<=3; i++)
        {
            KUNING(ON);
            _delay_ms(500);
            KUNING(OFF);
            _delay_ms(500);
        }
        HIJAU(OFF);
    }

    return 0;
}

Kompilasi Program dan Upload Program Traffic-Light

Kompilasi kode program dilakukan dengan perintah-perintah berikut ini:

  1. Kode program C menjadi Object
    avr-gcc -g -Os -mmcu=attiny85 -c trafficlight.c
  2. Object menjadi ELF
    avr-gcc -g -mmcu=attiny85 -o trafficlight.elf traffiglight.o
  3. Konversi ELF menjadi HEX
    avr-objcopy -j .text -j .data -O ihex trafficlight.elf trafficlight.hex
  4. Upload HEX ke mikrokontroler dan jalankan program
    sudo micronucleus trafficlight.hex --run

trafficlightc

Jika proses berjalan benar, maka Simulasi Traffic Light Sederhana akan dapat Anda nikmati.

Dimulai dengan LED Merah menyala selama 6 detikan, kemudian LED Kuning berkedip 3 kali sebelum LED Merah mati dan LED Hijau menyala. Dan setelah LED Hijau menyala selama 3 detikan, maka LED Kuning akan kembali berkedip sebelum LED Hijau mati dan LED Merah menyala. Proses tersebut akan berjalan berulang-ulang.

Nah, sekian dulu bermain dengan Digispark Kickstarter ATtiny85-nya.

Semoga bermanfaat dan selamat belajar.