Teknik Elektro LinksThermostat, Panel Bel, Board Mikro, Driver Relay.

Bermain Dengan Digispark ATtiny85 – Simulasi Traffic Light

Setelah berkenalan secara singkat dengan Digispark KickStarter ATtiny85 sekitar seminggu yang lalu, sekarang kita coba membuat simulasi traffic light suederhana – kelewat sederhana, cuma menggunakan 3 buah LED saja, makanya saya sebut suederhana. :D

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 linux (soalnya ini blog Linux4TeknikElektro) :)

Skematik

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

  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

/*
 * 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

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 Suederhana akan dapat Anda nikmati. :D

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.

Selamat belajar.

:D

No Comments

Add a Comment

Your email address will not be published. Required fields are marked *