Friday, May 31, 2013

Mikrokontroller Dasar AVR Studio4

Sekarang saya akan coba curahkan bagaimana mengoperasikan i/o sederhana pada aplikasi LED array dan Pushbutton dengan sebuah sismin ATmega16. Kenapa saya pakai ATmega16? murah, fitur lumayan lengkap, kapasitas memory juga lumayan gede. Ini ni sismin yang saya punya
Sismin ATmega16
Siapkan :
-Downloader
-Sismin Atmega16
-Aplikasi Push button dan Led Array

Ceritanya disini saya akan mengontrol Led array dengan pushbutton, ketika dalam keadaan awal/ push button tidak tertekan maka LED 0 dan LED 7 akan menyala dan mati bergantian dengan jeda waktu 800ms. kemudian apabila push button 7 ditekan maka LED 7 akan menyala dan LED 0 akan mati. namun sebaliknya jika push button 0 ditekan maka LED 0 akan menyala dan LED 7 yang akan mati. dari cerita diatas dapat disimpulkan lewat suatu pemrograman dibawah ini :

Listing pemrograman scanning push button dengan AVR Studio4

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

int main()
{
PORTC=0xFF; //set output for hight value
DDRC=0xFF; //set data direction for output status

PORTD=0xFF; //set input for hight value
DDRD=0x00; //set data direction for input status

// percobaan scanning pushbutton //

while(1)
{
if(bit_is_clear(PIND,0))         //PB0 ditekan
{ PORTC=0xFE; } //LED 0 akan menyala
else if(bit_is_clear(PIND,7)) //PB7 ditekan
{ PORTC=0x7F; } //LED 7 akan menyala
else                 //jika tidak ada yang ditekan 
{
 PORTC=0xFE; //maka LED 0 dan LED 7 akan nyala
 _delay_ms(800);          //secara bergantian
 PORTC=0x7F;
 _delay_ms(800);
}

}

//================================//

}

Keterangan :

PORTx                 DDRx                       Keterangan
0                           0                               PORT = nilai rendah , DDR = Berstatus Input
1                           0                               PORT = nilai tinggi , DDR = Berstatus input
1                           1                               PORT = nilai tinggi , DDR = Berstatus Output
0                           1                               PORT = nilai rendah , DDR = Berstatus Output

Alhasil akan dari pemrograman diatas dapat dilihat lewat video dibawah ini :


Selamat mencoba semoga bermanfaat bagi para pemula seperti saya ini ........................

myrobo
School Of Robotics Bandung
Jl.Purwakarta no 124 Antapani Bandung

Traffict Light 2 Arah (AVR Studio 4)

Saya akan mencoba berbagi untuk hasil pemrograman mikrokontroller dengan chip ATmega16 pada aplikasi traffict light 2 arah dengan display LCD 2x16.
Gambar Aplikasi Traffict Light

Lampu traffict light "jalur 1"
 PORTA.4 = LED merah
 PORTA.5 = LED kuning (hijau kecil)
 PORTA.6 = LED hijau besar
 PORTA.7 = LED bening (biru)

Lampu traffict light "jalur 2"
 PORTA.0 = LED merah
 PORTA.1 = LED kuning (hijau kecil)
 PORTA.2 = LED hijau besar
 PORTA.3 = LED bening (biru)

LCD 2x16 (JHD 162A) = PORTC

Listing Pemrograman Dengan AVR Studio4
//======================================================================//
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
#include <stdlib.h>
#include <afh/rif_lcd.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include <afh/lcd_lib.h>

int siap, jeda;
int array[]={0x3E,0x5E,0xEE,0xE5,0xE3,0xE5,0xEE,0x5E};

ISR(INT0_vect) //pd2
{
clr();

PORTA=0xBE;
for(jeda=0;jeda<8;jeda++)
{
lcdGotoXY(jeda,0);
lcd_putstring("Darurat");
lcdGotoXY(jeda,1);
lcd_putstring("Jalur 1");
_delay_ms(700);
clr();

}

}

ISR(INT1_vect) //pd3
{
LCDclr();

PORTA=0xEB;
for(jeda=0;jeda<8;jeda++)
{
lcdGotoXY(jeda,0);
lcd_putstring("Darurat");
lcdGotoXY(jeda,1);
lcd_putstring("Jalur 2");
_delay_ms(700);
clr();
}

}

int main(void)
{
DDRC |=_BV(1);

PORTC &=~_BV(1);
PORTC &=~_BV(2);
PORTC &=~_BV(3);
PORTC &=~_BV(4);
PORTC &=~_BV(5);
PORTC &=~_BV(6);
PORTC &=~_BV(7);
PORTA=0xFF;
DDRA=0xFF;
DDRD= 1<<2 | 1<<3;
PORTD=0xFF;
lcd_init(); //init LCD bit, dual line, cursor right
GICR = 1<<INT0 | 1<<INT1; // Enable INT0
MCUCR = 0<<ISC01 | 0<<ISC00 | 0<<ISC11 | 0<<ISC10; // Trigger INT0 on rising edge

sei();
clr();                                                 //clears LCD

while(1)
{
for(siap=0;siap<8;siap++)
{
PORTA=array[siap];
for(jeda=0;jeda<15;jeda++)
{

lcdGotoXY(jeda,0);
lcd_putstring("   Hati-Hati   ");
lcdGotoXY(jeda,1);
lcd_putstring("Taati Peraturan");
_delay_ms(200);
clr();
}
}
}

return 0;
}

//======================================================================//

Carakerja program diatas dapat dilihat melalui video dibawah ini :


wah kayanya perut udah mulai keroncongan nech...... saya tutup sampai disini aja ya, insyalloh untuk bisa share lebih jelasnya bisa posting lewat comment atau email : asyaripudin88@yahoo.com atau datang ke myrobo school of robotic bandung . mohon maaf jika masih banyak kekurangan ya namanya juga sambil belajar......salam hangat......

myrobo
School Of Robotics Bandung
Jl.Purwakarta 124 Antapani Bandung

Tuesday, May 28, 2013

Festival Anak Bandung



Hasil Perlombaan Kategori Maze Solving dalam acara Festival Anak Bandung 2013

Selamat bagi para peserta yang tercantum namanya di peringkat 5 besar. bagi yang belum berhasil jangan patah semangat, terus berlatih dan tetap semangat. sampai bertemu pada event berikutnya.



myrobo 
School of Robotics Bandung
Jl.Purwakarta no 124 Bandung