Robot Pemadam Api


ROBOT PEMADAM API

Robot Pemadam Api Dengan Mikrokontroler ATMEGA 8535

Api bisa jadi temen kadang juga bisa jadi musuh, nah kali ini api akan jadi musuh dalam permainan ini. Nama permainannya “PEMUSNAH API”. Pemeran utamanya si robot. 😀

Permasalahannya adalah bagaimana api dimusnahkan! dengan kata lain bagaimana api di padamkan oleh sebuah robot dan kita menggunakan uC ATMEGA 8535. Ini kerjaan anak Teknik Elektro. hehee

Pertaman-tama siapkan komponen utama berikut:

Untuk komponen tambahan, ntr aja karna kita bisa cari di OM GOOGLE

Komponen-komponen robot pemusnah/pemadam api:
1. ATMEGA 8535
2. Sensor UVtron (mendeteksi api)
3. Sensor ultrasonic (mendeteksi dinding)
4. LDR (mendeteksi cahaya api)
5. Motor DC (kanan dan kiri)
6. LCD 16×2

Cara kerjanya:
Ketika tidak ada api maka robot akan diam dan sensor api mendeteksi keadaan disekitarnya. ketika ada api robot akan berputar mencari dimana posisi api, setelah posisi api tepat di depan robot maka robot akan berjalan maju hingga mendekati api dan meniupnya hingga padam. Jika api dipindahkan tiba-tiba atau terlalu jauh maka robot akan kembali mencari posisi api tersebut.

Program:
Berikut ini adalah script untuk robot pencari api, project ini dibuat dalam rangka pembelajaran, jadi mohon maaf kalo masih kurang sempurna.
Pemprograman menggunakan Codevision AVR yang mendukung pemprograman bahasa C.

———————————————————————————————–

#include
#include
#include
#asm
.equ __lcd_port=0×18 ;PORTB
#endasm
#include
#define FIRST_ADC_INPUT 0
#define LAST_ADC_INPUT 2
#define ADC_VREF_TYPE 0×60
#define pwm_kiri OCR1A
#define arah_kiri1 PORTD.0
#define arah_kiri2 PORTD.1
#define pwm_kanan OCR1B
#define arah_kanan1 PORTD.2
#define arah_kanan2 PORTD.3
#define ut_kiri PINA.6
#define ut_depan PINA.5
#define ut_kanan PINA.4
#define uvtron PINA.3
#define kipas PORTD.7

unsigned char api,api_old1,api_old2;
unsigned int adc_data[30],count;
unsigned int adc0,adc1,adc2,adc0_old,adc1_old,adc2_old;
unsigned char ratus,puluh,satuan;
unsigned char k,adc_lengkap,buffer[30];
static unsigned char input_index=0;

void cek_adc();
void baca_adc();
void baca_sensor_api();
void mundur();
void maju();
void berhenti();
void belok_kiri();
void belok_kanan();

interrupt [ADC_INT] void adc_isr(void)
{
adc_data[count]=ADCH;
if(++input_index>2) input_index=0;
if (++count > (29))
{
count=0;
input_index=0;
adc_lengkap=1;
return;
}
ADMUX=(FIRST_ADC_INPUT|ADC_VREF_TYPE)+input_index;
ADCSRA|=0×40;
}

void main(void)
{
PORTA=0xFF;
DDRA=0×00;
PORTB=0×00;
DDRB=0×00;
PORTC=0×00;
DDRC=0xFF;
PORTD=0x7F;
DDRD=0xFF;
TCCR0=0×00;
TCNT0=0×00;
OCR0=0×00;

TCCR1A=0xA3;
TCCR1B=0x0D;
TCNT1H=0×00;
TCNT1L=0×00;
ICR1H=0×00;
ICR1L=0×00;
OCR1AH=0×00;
OCR1AL=0×00;
OCR1BH=0×00;
OCR1BL=0×00;

ASSR=0×00;
TCCR2=0×00;
TCNT2=0×00;
OCR2=0×00;
MCUCR=0×00;
MCUCSR=0×00;
TIMSK=0×00;
ACSR=0×80;
SFIOR=0×00;
ADCSRA=0x8F;
SFIOR&=0x0F;
lcd_init(16);

#asm(“sei”)
adc0_old=0;
adc1_old=0;
adc2_old=0;
api_old1=0;
api_old2=0;

while (1)
{

target1: if(ut_kiri==1 && ut_kanan==1 && ut_depan==1)
{
mundur();
}
else if(ut_kiri==1 && ut_kanan==1)
{
mundur();
}
else if(ut_kiri==1 && ut_depan==1)
{
mundur();
delay_ms(1000);
belok_kanan();
delay_ms(1000);
}
else if(ut_kanan==1 && ut_depan==1)
{
mundur();
delay_ms(1000);
belok_kiri();
delay_ms(1000);
}
else if(ut_kiri==1)
{
belok_kanan();
}
else if(ut_depan==1)
{
mundur();
}
else if(ut_kanan==1)
{
belok_kiri();
}
else if((ut_depan==0)&&(ut_kiri==0)&&(ut_kanan==0))
{
berhenti();
goto target2;
}

target2: for(k=1; k=1 && api_old2>=1)
{
lcd_gotoxy(0,0);
lcd_putsf(“ADA-API “);
api=0;
goto target3;
}
else if(api_old1<1 && api_old2<1)
{
lcd_gotoxy(0,0);
lcd_putsf(“TIDAK ADA-API “);
goto target1;
}

target3: cek_adc();

if(adc0_old<=adc1_old && adc0_old<=adc2_old)
{
belok_kanan();
goto target2;
}
else if(adc2_old<=adc0_old && adc2_old<=adc1_old)
{
belok_kiri();
goto target2;
}
else if(adc1_old<=adc0_old && adc1_old<=adc2_old)
{
maju();
if(ut_depan==1)
{
for(k=1; k=5 && api_old2>=5))
{
lcd_gotoxy(0,0);
lcd_putsf(“ADA-API “);
maju();
delay_ms(500);
berhenti();
kipas=1;
delay_ms(500);
kipas=0;
delay_ms(5000);
api=0;

for(k=1; k=5 && api_old2>=5))
{
lcd_gotoxy(0,0);
lcd_putsf(“MASIH ADA-API “);
api=0;
}
else goto target1;

cek_adc();

if(adc1_old<=adc0_old && adc1_old=adc0_old && adc1_old>=adc2_old)
{
goto target1;
}

};
}

void cek_adc(void)
{
ADMUX=(FIRST_ADC_INPUT|ADC_VREF_TYPE)+input_index;
ADCSRA|=0×40;

puter: if(adc_lengkap!=1) goto puter;
adc_lengkap=0;
baca_adc();
}

void baca_adc(void)
{

adc0=(adc0_old+adc_data[0]+adc_data[3]+adc_data[6]+adc_data[9]+adc_data[12]

+adc_data[15]+adc_data[18]+adc_data[21]+adc_data[24])/10;
adc0_old=adc0;
ratus=adc0/100; adc0%=100;
puluh=adc0/10; adc0%=10;
satuan=adc0%10;
lcd_gotoxy(0,1);
sprintf(buffer, “%d%d%d “,ratus,puluh,satuan);
lcd_puts(buffer);

adc1=(adc1_old+adc_data[1]+adc_data[4]+adc_data[7]+adc_data[10]+adc_data[13]

+adc_data[16]+adc_data[19]+adc_data[22]+adc_data[25])/10;
adc1_old=adc1;
ratus=adc1/100; adc1%=100;
puluh=adc1/10; adc1%=10;
satuan=adc1%10;
lcd_gotoxy(5,1);
sprintf(buffer, “%d%d%d “,ratus,puluh,satuan);
lcd_puts(buffer);

adc2=(adc2_old+adc_data[2]+adc_data[5]+adc_data[8]+adc_data[11]+adc_data[14]

+adc_data[17]+adc_data[20]+adc_data[23]+adc_data[26])/10;
adc2_old=adc2;
ratus=adc2/100; adc2%=100;
puluh=adc2/10; adc2%=10;
satuan=adc2%10;
lcd_gotoxy(10,1);
sprintf(buffer, “%d%d%d “,ratus,puluh,satuan);
lcd_puts(buffer);
}

void baca_sensor_api(void)
{
unsigned char i;

for(i=0;i<10;i++)
{
if(uvtron==0)
{
api++;
}
delay_ms(10);
}
api_old1=api;
api_old2=api_old1;
}

void maju(void)
{
lcd_gotoxy(0,0);
lcd_putsf(“ JALAN MAJU “);
pwm_kiri=0x1FFF;
pwm_kanan=0x1FFF;
arah_kiri1=1;
arah_kanan1=1;
arah_kiri2=0;
arah_kanan2=0;
delay_ms(10);
}

void mundur(void)
{
lcd_gotoxy(0,0);
lcd_putsf(“ JALAN MUNDUR “);
pwm_kiri=0x1FFF;
pwm_kanan=0x1FFF;
arah_kiri2=1;
arah_kanan2=1;
arah_kiri1=0;
arah_kanan1=0;
delay_ms(10);
}

void berhenti(void)
{
pwm_kiri=0;
pwm_kanan=0;
arah_kiri1=0;
arah_kanan1=0;
arah_kiri2=0;
arah_kanan2=0;
delay_ms(10);
}

void belok_kiri(void)
{
lcd_gotoxy(0,0);
lcd_putsf(“ BELOK KIRI “);
pwm_kiri=0x1FFF;
pwm_kanan=0x1FFF;
arah_kiri2=0;
arah_kanan1=0;
arah_kiri1=1;
arah_kanan2=1;
delay_ms(10);
}

void belok_kanan(void)
{
lcd_gotoxy(0,0);
lcd_putsf(“ BELOK KANAN “);
pwm_kiri=0x1FFF;
pwm_kanan=0x1FFF;
arah_kiri1=0;
arah_kanan2=0;
arah_kiri2=1;
arah_kanan1=1;
delay_ms(10);
}

———————————————————————————————–

Semoga bacaan ini bermanfaat bagi para pengunjung dan mohon commentnya ya 😀

edited by: Ade Christian Sirait

Sumber : ade.wordpress.com

3 Responses to “Robot Pemadam Api”

  1. puya desain PCB ny gk gan,,kalo mohon share donk
    terimakasih

  2. admin untuk pemasangan portnya dimana aja..

Trackbacks

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.