You are on page 1of 33

/*****************************************************

This program was produced by the


CodeWizardAVR V2.03.9 Standard
Automatic Program Generator
Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date
: 12/25/2012
Author : ikhwan
Company : robootic
Comments:
Chip type
: ATmega16
Program type
: Application
AVR Core Clock frequency: 12.000000 MHz
Memory model
: Small
External RAM size
: 0
Data Stack size
: 256
*****************************************************/
//===catatan multiplexer
/*
A = PORTA.5
B = PORTA.4
C = PORTA.3
//untuk belakang di balik
//jadi A=PORTA.3 || B=PORTA.4 || C=PORTA.5
adc(2) = sensor7 kanan
adc(1) = sensor7 kiri
adc(0) = sensor8 belakang
//============sensor7 kanan
3012765
//============sensor7 kanan
0214675
//============sensor 8 belakang
46752103
*/
//===catatan multiplexer
#include
#include
#include
#include
#define
#define
#define
#define

<mega16.h>
<delay.h>
<stdio.h>
<stdarg.h>
pwm_ka
pwm_ki
dir_ki
dir_ka

OCR1B
OCR1A
PORTD.6
PORTD.7

//========khusus multiplexer
#define sa PORTA.5
#define sb PORTA.4
#define sc PORTA.3

//PD4 untuk driver


//PD5

#define da PORTA.3
#define db PORTA.4
#define dc PORTA.5

//========khusus multiplexer
#define kurang
#define tambah
#define cancel
#define ok
#define lampu
#define buzz
//#define buzz
#define led1
#define led2

PINC.6
PINC.5
PINC.4
PINC.0
PORTD.0
PORTD.1
PIND.1
PORTC.7
PORTA.6

// Alphanumeric LCD Module functions


#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
#include <delay.h>
#define ADC_VREF_TYPE 0x60
unsigned char read_adc(unsigned char adc_input) //isialisasi ADC
{
// Read the 8
most significant bits
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// of the AD conversion result
delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
void tampil_lcd(unsigned char baris, unsigned char kolom, char flash *fmtstr,...
)
{
//fungsi dapet bikinnya mas Hers
on, kalo mau pake harus selipkan #include <stdarg.h>
char lcd[17];
va_list ap;
va_start(ap, fmtstr);
vsprintf(lcd, fmtstr, ap);
va_end(ap);
lcd_gotoxy(kolom, baris);
lcd_puts(lcd);
}
// Declare your global variables here
int kec_ki,kec_ka,kec_ka1,kec_ki1,error,error_before,mv,ed,titip_m;
unsigned char baca[22],i;
unsigned char s[22],min_adc[22],max_adc[22],pl;
unsigned char men1,set1,kp,ki,kd,speed,la,m_speed,il,me_ka,me_ki;
unsigned char da_ka,da_ki,sen_ka,sen_ki,standart,kosong,be_ka,be_ki;
unsigned int sendat,sendat2,sendat_h,sendat2_h,putus,putus2;
eeprom unsigned char ee_kp,ee_kd,ee_ki,ee_speed,ee_m_speed;
eeprom unsigned char back[22];
//===========
void selesai(){lcd_clear();
while(1){
tampil_lcd(0,0,"Mission Complete");
tampil_lcd(1,0," Alhamdulilllah ");

led1=0;lampu=0;led2=1;buzz=0;delay_ms(70);
led1=1;lampu=1;led2=0;buzz=1;delay_ms(70);
if(cancel==0){delay_ms(200);break;}
}lcd_clear();
}
void set_rpm(){
if(kec_ka>0){
pwm_ka=255-kec_ka;
dir_ka=1;
}
else{
kec_ka1=-1*kec_ka;
pwm_ka=kec_ka1;
dir_ka=0;
}
if(kec_ki>0){
pwm_ki=kec_ki;
dir_ki=0;
}
else{
kec_ki1=255+kec_ki;
pwm_ki=kec_ki1;
dir_ki=1;
}
}
void stop(){
kec_ka=0;kec_ki=0;set_rpm();}
void stop_ki(){
kec_ka=-250;kec_ki=250;set_rpm();delay_ms(30);}
void stop_ka(){
kec_ka=250;kec_ki=-250;set_rpm();delay_ms(30);}
void sw(unsigned char yrt){
if(yrt==0){sc=0;sb=0;sa=0;}
else if(yrt==1){sc=0;sb=0;sa=1;}
else if(yrt==2){sc=0;sb=1;sa=0;}
else if(yrt==3){sc=0;sb=1;sa=1;}
else if(yrt==4){sc=1;sb=0;sa=0;}
else if(yrt==5){sc=1;sb=0;sa=1;}
else if(yrt==6){sc=1;sb=1;sa=0;}
else if(yrt==7){sc=1;sb=1;sa=1;}
}
void sw1(unsigned char yrt1){
if(yrt1==0){dc=0;db=0;da=0;}
else if(yrt1==1){dc=0;db=0;da=1;}
else if(yrt1==2){dc=0;db=1;da=0;}
else if(yrt1==3){dc=0;db=1;da=1;}
else if(yrt1==4){dc=1;db=0;da=0;}
else if(yrt1==5){dc=1;db=0;da=1;}
else if(yrt1==6){dc=1;db=1;da=0;}
else if(yrt1==7){dc=1;db=1;da=1;}
}
void scan(){
//kanan 3012764 adc(2)
//kiri 0214675 adc(1)
//bel 46752103 adc(0)
sw(0);baca[0]=read_adc(1);
sw(2);baca[1]=read_adc(1);
sw(1);baca[2]=read_adc(1);

sw(4);baca[3]=read_adc(1);
sw(6);baca[4]=read_adc(1);
sw(7);baca[5]=read_adc(1);
sw(5);baca[6]=read_adc(1);
//===========
sw(3);baca[7]=read_adc(2);
sw(0);baca[8]=read_adc(2);
sw(1);baca[9]=read_adc(2);
sw(2);baca[10]=read_adc(2);
sw(7);baca[11]=read_adc(2);
sw(6);baca[12]=read_adc(2);
sw(4);baca[13]=read_adc(2);
//===========
sw1(4);baca[14]=read_adc(0);
sw1(6);baca[15]=read_adc(0);
sw1(7);baca[16]=read_adc(0);
sw1(5);baca[17]=read_adc(0);
sw1(2);baca[18]=read_adc(0);
sw1(1);baca[19]=read_adc(0);
sw1(0);baca[20]=read_adc(0);
sw1(3);baca[21]=read_adc(0);
}
void putih(){
scan();
for(i=0;i<=21;i++){
if(baca[i]>back[i]){s[i]=0;}else{s[i]=1;}
}
sendat=(s[0]*1)+(s[1]*2)+(s[2]*4)+(s[3]*8)+(s[4]*16)+(s[5]*32)+(s[6]*64)+(s[
7]*128)+(s[8]*256)+(s[9]*512)+(s[10]*1024)+(s[11]*2048)+(s[12]*4096)+(s[13]*8192
);
sendat2=(s[13]*1)+(s[12]*2)+(s[11]*4)+(s[10]*8)+(s[9]*16)+(s[8]*32)+(s[7]*64
)+(s[6]*128)+(s[5]*256)+(s[4]*512)+(s[3]*1024)+(s[2]*2048)+(s[1]*4096)+(s[0]*819
2);
da_ki=(s[0]*1)+(s[1]*2)+(s[2]*4)+(s[3]*8)+(s[4]*16)+(s[5]*32)+(s[6]*64);
da_ka=(s[7]*1)+(s[8]*2)+(s[9]*4)+(s[10]*8)+(s[11]*16)+(s[12]*32)+(s[13]*64);
putus=(s[2]*1)+(s[3]*2)+(s[4]*4)+(s[5]*8)+(s[6]*16)+(s[7]*32)+(s[8]*64)+(s[9
]*128)+(s[10]*256)+(s[11]*512);
putus2=(s[3]*1)+(s[4]*2)+(s[5]*4)+(s[6]*8)+(s[7]*16)+(s[8]*32)+(s[9]*64)+(s[
10]*128);
sen_ki=s[0];
sen_ka=s[13];
be_ka=s[21];
be_ki=s[14];
if(sendat==0b11111111111111){kosong=1;}
if(sendat!=0b11111111111111){kosong=0;}
}
void hitam(){
scan();
for(i=0;i<=21;i++){
if(baca[i]>back[i]){s[i]=1;}else{s[i]=0;}
}
sendat_h=(s[0]*1)+(s[1]*2)+(s[2]*4)+(s[3]*8)+(s[4]*16)+(s[5]*32)+(s[6]*64)+(
s[7]*128)+(s[8]*256)+(s[9]*512)+(s[10]*1024)+(s[11]*2048)+(s[12]*4096)+(s[13]*81
92);
sendat2_h=(s[13]*1)+(s[12]*2)+(s[11]*4)+(s[10]*8)+(s[9]*16)+(s[8]*32)+(s[7]*
64)+(s[6]*128)+(s[5]*256)+(s[4]*512)+(s[3]*1024)+(s[2]*2048)+(s[1]*4096)+(s[0]*8
192);
}
void PID()
{

mv=(kp*error)+(kd*(error-error_before));
kec_ka=speed-mv;
kec_ki=speed+mv ;
error_before=error;
titip_m=m_speed*-1;
if(kec_ka>m_speed){kec_ka=m_speed;}
if(kec_ka<titip_m){kec_ka=titip_m;}
if(kec_ki>m_speed){kec_ki=m_speed;}
if(kec_ki<titip_m){kec_ki=titip_m;}
tampil_lcd(0,0," %1d%1d%1d%1d%1d%1d%1d",s[0],s[1],s[2],s[3],s[4],s[5],s[6]);
tampil_lcd(0,8,"%1d%1d%1d%1d%1d%1d%1d ",s[7],s[8],s[9],s[10],s[11],s[12],s[13])
;
tampil_lcd(1,0,"%4d %3d
set_rpm();

%4d",kec_ki,error,kec_ka);

}
void bh1(){
putih();
if(sendat==0b01111111111111)error=
else if(sendat==0b00111111111111)error=
else if(sendat==0b00011111111111)error=
else if(sendat==0b10011111111111)error=
else if(sendat==0b10001111111111)error=
else if(sendat==0b11001111111111)error=
else if(sendat==0b11000111111111)error=
else if(sendat==0b11100111111111)error=
else if(sendat==0b11100011111111)error=
else if(sendat==0b11110011111111)error=
else if(sendat==0b11110001111111)error=
else if(sendat==0b11111001111111)error=
else if(sendat==0b11111000111111)error=

30;
26;
22;
19;
17;
15;
13;
11;
9;
7;
5;
3;
1;

else if(sendat==0b11111100111111)error= 0;
else
else
else
else
else
else
else
else
else
else
else
else
else
}
void

if(sendat==0b11111100011111)error= -1;
if(sendat==0b11111110011111)error= -3;
if(sendat==0b11111110001111)error= -5;
if(sendat==0b11111111001111)error= -7;
if(sendat==0b11111111000111)error= -9;
if(sendat==0b11111111100111)error=-11;
if(sendat==0b11111111100011)error=-13;
if(sendat==0b11111111110011)error=-15;
if(sendat==0b11111111110001)error=-17;
if(sendat==0b11111111111001)error=-19;
if(sendat==0b11111111111000)error=-22;
if(sendat==0b11111111111100)error=-26;
if(sendat==0b11111111111110)error=-30;

biss1(){
putih();
if(sen_ka==0&&sen_ki==1){pl=1;}
if(sen_ka==1&&sen_ki==0){pl=2;}
if(sendat==0b01111111111111)error=
else if(sendat==0b00111111111111)error=
else if(sendat==0b00011111111111)error=
else if(sendat==0b00001111111111)error=
else if(sendat==0b10001111111111)error=
else if(sendat==0b10000111111111)error=
else if(sendat==0b11000111111111)error=

24;
22;
20;
18;
16;
14;
12;

else
else
else
else
else
else

if(sendat==0b11000011111111)error=
if(sendat==0b11100011111111)error=
if(sendat==0b11100001111111)error=
if(sendat==0b11110001111111)error=
if(sendat==0b11110000111111)error=
if(sendat==0b11111000111111)error=

10;
8;
6;
4;
2;
1;

else if(sendat==0b11111000011111)error= 0;
else if(sendat==0b11111100011111)error= -1;
else if(sendat==0b11111100001111)error= -2;
else if(sendat==0b11111110001111)error= -4;
else if(sendat==0b11111110000111)error= -6;
else if(sendat==0b11111111000111)error= -8;
else if(sendat==0b11111111000011)error=-10;
else if(sendat==0b11111111100011)error=-12;
else if(sendat==0b11111111100001)error=-14;
else if(sendat==0b11111111110001)error=-16;
else if(sendat==0b11111111110000)error=-18;
else if(sendat==0b11111111111000)error=-20;
else if(sendat==0b11111111111100)error=-22;
else if(sendat==0b11111111111110)error=-24;
else if(sendat==0b11111111111111){if(pl==2){error=-24;}if(pl==1){error=24;}}
PID();
}
void biss_ka(){
putih();
if(sen_ka==0&&sen_ki==1){pl=1;}
if(sen_ka==1&&sen_ki==0){pl=2;}
if(sendat2==0b01111111111111){kec_ka=80;kec_ki=30;}
else if(sendat2==0b00111111111111){kec_ka=80;kec_ki=50;}
else if(sendat2==0b00011111111111){kec_ka=80;kec_ki=80;}
else if(sendat2==0b00001111111111){kec_ka=80;kec_ki=80;}
else if(sendat2==0b10001111111111){kec_ka=80;kec_ki=80;}
else if(sendat2==0b10000111111111){kec_ka=80;kec_ki=80;}
else if(sendat2==0b11000111111111){kec_ka=50;kec_ki=80;}
else if(sendat2==0b11000011111111){kec_ka=50;kec_ki=80;}
else if(sendat2==0b11100011111111){kec_ka=30;kec_ki=80;}
else
else
else
else
else
else
else
else
else

if(sendat2==0b00000111111111){kec_ka=-150;kec_ki=80;}
if(sendat2==0b00000011111111){kec_ka=-150;kec_ki=80;}
if(sendat2==0b00000001111111){kec_ka=-150;kec_ki=80;}
if(sendat2==0b00000000111111){kec_ka=-150;kec_ki=80;}
if(sendat2==0b00000000011111){kec_ka=-150;kec_ki=80;}
if(sendat2==0b00000000001111){kec_ka=-150;kec_ki=80;}
if(sendat2==0b00000000000111){kec_ka=-150;kec_ki=80;}
if(sendat2==0b00000000000011){kec_ka=-150;kec_ki=80;}
if(sendat2==0b00000000000001){kec_ka=-150;kec_ki=80;}

else if(sendat2==0b11100001111111){kec_ka=30;kec_ki=80;}
else
else
else
else
else
else
else
else

if(sendat2==0b11110001111111){kec_ka=0;kec_ki=80;}
if(sendat2==0b11110000111111){kec_ka=0;kec_ki=80;}
if(sendat2==0b11111000111111){kec_ka=0;kec_ki=80;}
if(sendat2==0b11111000011111){kec_ka=0;kec_ki=80;}
if(sendat2==0b11111100011111){kec_ka=0;kec_ki=80;}
if(sendat2==0b11111100001111){kec_ka=0;kec_ki=80;}
if(sendat2==0b11111110001111){kec_ka=0;kec_ki=80;}
if(sendat2==0b11111110000111){kec_ka=0;kec_ki=80;}

else if(sendat2==0b11111111111111){kec_ka=80;kec_ki=-30;}
set_rpm();
}
void biss_ki(){
putih();
if(sen_ka==0&&sen_ki==1){pl=1;}
if(sen_ka==1&&sen_ki==0){pl=2;}
if(sendat==0b01111111111111){kec_ki=80;kec_ka=30;}
else if(sendat==0b00111111111111){kec_ki=80;kec_ka=50;}
else if(sendat==0b00011111111111){kec_ki=80;kec_ka=80;}
else if(sendat==0b00001111111111){kec_ki=80;kec_ka=80;}
else if(sendat==0b10001111111111){kec_ki=80;kec_ka=80;}
else if(sendat==0b10000111111111){kec_ki=80;kec_ka=80;}
else if(sendat==0b11000111111111){kec_ki=50;kec_ka=80;}
else if(sendat==0b11000011111111){kec_ki=50;kec_ka=80;}
else if(sendat==0b11100011111111){kec_ki=30;kec_ka=80;}
else
else
else
else
else
else
else
else
else

if(sendat==0b00000111111111){kec_ki=-150;kec_ka=80;}
if(sendat==0b00000011111111){kec_ki=-150;kec_ka=80;}
if(sendat==0b00000001111111){kec_ki=-150;kec_ka=80;}
if(sendat==0b00000000111111){kec_ki=-150;kec_ka=80;}
if(sendat==0b00000000011111){kec_ki=-150;kec_ka=80;}
if(sendat==0b00000000001111){kec_ki=-150;kec_ka=80;}
if(sendat==0b00000000000111){kec_ki=-150;kec_ka=80;}
if(sendat==0b00000000000011){kec_ki=-150;kec_ka=80;}
if(sendat==0b00000000000001){kec_ki=-150;kec_ka=80;}

else if(sendat==0b11100001111111){kec_ki=30;kec_ka=80;}
else if(sendat==0b11110001111111){kec_ki=0;kec_ka=80;}
else if(sendat==0b11110000111111){kec_ki=0;kec_ka=80;}
else if(sendat==0b11111000111111){kec_ki=0;kec_ka=80;}
else if(sendat==0b11111000011111){kec_ki=0;kec_ka=80;}
else if(sendat==0b11111100011111){kec_ki=0;kec_ka=80;}
else if(sendat==0b11111100001111){kec_ki=0;kec_ka=80;}
else if(sendat==0b11111110001111){kec_ki=0;kec_ka=80;}
else if(sendat==0b11111110000111){kec_ki=0;kec_ka=80;}
else if(sendat==0b11111111111111){kec_ki=80;kec_ka=-30;}
set_rpm();
}
void j_ka(){
while(1){
biss1();
if(sen_ka==0){break;}
}
while(1){
biss1();
if(sen_ka==1){break;}
}
while(1){
buzz=0;
putih();
kec_ki=100;kec_ka=-150;set_rpm();
if(sendat2==0b11111111111100){break;}
if(sendat2==0b11111111111000){break;}
if(sendat2==0b11111111110000){break;}
if(sendat2==0b11111111100001){break;}
if(sendat2==0b11111111100011){break;}

if(sendat2==0b11111111000011){break;}
}buzz=1;stop_ka();
}
void j_ka_banter(){
while(1){
biss1();
if(sen_ka==0){break;}
}
while(1){
biss1();
if(sen_ka==1){break;}
}kec_ki=-200;kec_ka=-200;set_rpm();delay_ms(20);
while(1){
buzz=0;
putih();
kec_ki=100;kec_ka=-150;set_rpm();
if(sendat2==0b11111111111100){break;}
if(sendat2==0b11111111111000){break;}
if(sendat2==0b11111111110000){break;}
if(sendat2==0b11111111100001){break;}
if(sendat2==0b11111111100011){break;}
if(sendat2==0b11111111000011){break;}
}buzz=1;stop_ka();
}
void j_ka_cp(){
while(1){
biss1();
if(sendat2==0b11111110000000){break;}
if(sendat2==0b11110000000000){break;}
if(sendat2==0b11111000000000){break;}
if(sendat2==0b11111100000000){break;}
if(sendat2==0b11111111000000){break;}
//if(s[13]==0&&s[12]==0){break;}
}
while(1){
buzz=0;
putih();
kec_ki=100;kec_ka=-150;set_rpm();
if(sendat2==0b11111111111100){break;}
if(sendat2==0b11111111111000){break;}
if(sendat2==0b11111111110000){break;}
if(sendat2==0b11111111100001){break;}
if(sendat2==0b11111111100011){break;}
if(sendat2==0b11111111000011){break;}
}buzz=1;stop_ka();
}
void j_ki_sp(){
while(1){
biss1();
if(sen_ki==0){break;}
}
while(1){
biss1();
//if(sen_ki==1){break;}
if(kosong==1){break;}

}//delay_ms(10);stop();
while(1){buzz=0;
putih();
kec_ka=100;kec_ki=-100;set_rpm();
if(sen_ki==0){break;}
}
while(1){
putih();
kec_ka=100;kec_ki=-100;set_rpm();
if(sen_ki==1){break;}
}buzz=1;stop_ka();
}
void j_ka_sp(){
while(1){
biss1();
if(sen_ka==0){break;}
}
while(1){
biss1();
//if(sen_ka==1){break;}
if(kosong==1){break;}
}//sdelay_ms(10);stop();
while(1){buzz=0;
putih();
kec_ki=100;kec_ka=-100;set_rpm();
if(sen_ka==0){break;}
}
while(1){
putih();
kec_ki=100;kec_ka=-100;set_rpm();
if(sen_ka==1){break;}
}buzz=1;stop_ka();
}
void j_ka_s(){
while(1){
biss1();
if(kosong==1){break;}
}
while(1){
buzz=0;
putih();
kec_ki=100;kec_ka=-150;set_rpm();
if(sendat2==0b11111111111100){break;}
if(sendat2==0b11111111111000){break;}
if(sendat2==0b11111111110000){break;}
if(sendat2==0b11111111100001){break;}
if(sendat2==0b11111111100011){break;}
if(sendat2==0b11111111000011){break;}
}buzz=1;stop_ka();
}
void j_ka_tuntun(){
while(1){
biss1();
if(error>-5&&error<5){break;}
}
while(1){
putih();
kec_ka=40;kec_ki=40;set_rpm();

if(kosong==1){break;}
}
while(1){
buzz=0;
putih();
kec_ki=100;kec_ka=-150;set_rpm();
if(sendat2==0b11111111111100){break;}
if(sendat2==0b11111111111000){break;}
if(sendat2==0b11111111110000){break;}
if(sendat2==0b11111111100001){break;}
if(sendat2==0b11111111100011){break;}
if(sendat2==0b11111111000011){break;}
}buzz=1;stop_ka();
}
void j_ka_tuntun2(){
while(1){
putih();
kec_ka=standart;kec_ki=standart;set_rpm();
if(kosong==1){break;}
}
while(1){
buzz=0;
putih();
kec_ki=100;kec_ka=-150;set_rpm();
if(sendat2==0b11111111111100){break;}
if(sendat2==0b11111111111000){break;}
if(sendat2==0b11111111110000){break;}
if(sendat2==0b11111111100001){break;}
if(sendat2==0b11111111100011){break;}
if(sendat2==0b11111111000011){break;}
}buzz=1;stop_ka();
}
void j_ka_tuntun3(){
while(1){
biss1();
if(sen_ka==0){break;}
}
while(1){
buzz=0;
putih();
kec_ki=100;kec_ka=-150;set_rpm();
if(sendat2==0b11111111111110){break;}
}
while(1){
buzz=0;
putih();
kec_ki=100;kec_ka=-150;set_rpm();
if(sendat2==0b11111000011111){break;}
if(sendat2==0b11111000001111){break;}
if(sendat2==0b11111100001111){break;}
if(sendat2==0b11111000111111){break;}
if(sendat2==0b11111100011111){break;}
}
buzz=1;stop_ka();
while(1){
putih();
biss1();
//kec_ka=40;kec_ki=40;set_rpm();

if(kosong==1){break;}
}
while(1){
buzz=0;
putih();
kec_ki=100;kec_ka=-150;set_rpm();
if(sendat2==0b11111111111100){break;}
if(sendat2==0b11111111111000){break;}
if(sendat2==0b11111111110000){break;}
if(sendat2==0b11111111100001){break;}
if(sendat2==0b11111111100011){break;}
if(sendat2==0b11111111000011){break;}
}buzz=1;stop_ka();
}
void j_ka_sl(){
while(1){
biss1();
if(kosong==1){break;}
}
while(1){
buzz=0;
putih();
kec_ki=100;kec_ka=-100;set_rpm();
if(sendat2==0b11111111111100){break;}
if(sendat2==0b11111111111000){break;}
if(sendat2==0b11111111110000){break;}
if(sendat2==0b11111111100001){break;}
if(sendat2==0b11111111100011){break;}
if(sendat2==0b11111111000011){break;}
}buzz=1;stop_ka();
}
void j_ki(){
while(1){
biss1();
if(sen_ki==0){break;}
}
while(1){
biss1();
if(sen_ki==1){break;}
}
while(1){
buzz=0;
putih();
kec_ka=100;kec_ki=-150;set_rpm();
if(sendat2==0b00111111111111){break;}
if(sendat2==0b00011111111111){break;}
if(sendat2==0b00001111111111){break;}
if(sendat2==0b10000111111111){break;}
if(sendat2==0b11000111111111){break;}
if(sendat2==0b11000011111111){break;}
}buzz=1;stop_ki();
}
void j_ki_banter(){
while(1){
biss1();
if(sen_ki==0){break;}
}

while(1){
biss1();
if(sen_ki==1){break;}
}
kec_ka=-200;kec_ki=-200;set_rpm();delay_ms(20);
while(1){
buzz=0;
putih();
kec_ka=100;kec_ki=-150;set_rpm();
if(sendat2==0b00111111111111){break;}
if(sendat2==0b00011111111111){break;}
if(sendat2==0b00001111111111){break;}
if(sendat2==0b10000111111111){break;}
if(sendat2==0b11000111111111){break;}
if(sendat2==0b11000011111111){break;}
}buzz=1;stop_ki();
}
void j_ki_cp(){
while(1){
biss1();
if(sendat==0b11111110000000){break;}
if(sendat==0b11110000000000){break;}
if(sendat==0b11111000000000){break;}
if(sendat==0b11111100000000){break;}
if(sendat==0b11111111000000){break;}
//if(s[0]==0&&s[1]==0){break;}
}
while(1){
buzz=0;
putih();
kec_ka=100;kec_ki=-150;set_rpm();
if(sendat2==0b00111111111111){break;}
if(sendat2==0b00011111111111){break;}
if(sendat2==0b00001111111111){break;}
if(sendat2==0b10000111111111){break;}
if(sendat2==0b11000111111111){break;}
if(sendat2==0b11000011111111){break;}
}buzz=1;stop_ki();
}
void j_ki_s(){
while(1){
biss1();
if(kosong==1){break;}
}
while(1){
buzz=0;
putih();
kec_ka=100;kec_ki=-150;set_rpm();
if(sendat2==0b00111111111111){break;}
if(sendat2==0b00011111111111){break;}
if(sendat2==0b00001111111111){break;}
if(sendat2==0b10000111111111){break;}
if(sendat2==0b11000111111111){break;}
if(sendat2==0b11000011111111){break;}
}buzz=1;stop_ki();
}
void j_ki_tuntun(){

while(1){
biss1();
if(error>-5&&error<5){break;}
}
while(1){
putih();
kec_ka=40;kec_ki=40;set_rpm();
if(kosong==1){break;}
}
while(1){
buzz=0;
putih();
kec_ka=100;kec_ki=-150;set_rpm();
if(sendat2==0b00111111111111){break;}
if(sendat2==0b00011111111111){break;}
if(sendat2==0b00001111111111){break;}
if(sendat2==0b10000111111111){break;}
if(sendat2==0b11000111111111){break;}
if(sendat2==0b11000011111111){break;}
}buzz=1;stop_ki();
}
void j_ki_tuntun2(){
while(1){
putih();
kec_ka=standart;kec_ki=standart;set_rpm();
if(kosong==1){break;}
}
while(1){
buzz=0;
putih();
kec_ka=100;kec_ki=-150;set_rpm();
if(sendat2==0b00111111111111){break;}
if(sendat2==0b00011111111111){break;}
if(sendat2==0b00001111111111){break;}
if(sendat2==0b10000111111111){break;}
if(sendat2==0b11000111111111){break;}
if(sendat2==0b11000011111111){break;}
}buzz=1;stop_ki();
}
void j_ki_tuntun3(){
while(1){
biss1();
if(sen_ki==0){break;}
}
while(1){
buzz=0;
putih();
kec_ka=100;kec_ki=-150;set_rpm();
if(sendat2==0b01111111111111){break;}
}
while(1){
buzz=0;
putih();
kec_ka=100;kec_ki=-150;set_rpm();
if(sendat==0b11111000011111){break;}
if(sendat==0b11111000001111){break;}
if(sendat==0b11111100001111){break;}
if(sendat==0b11111000111111){break;}
if(sendat==0b11111100011111){break;}
}buzz=1;stop_ki();

while(1){
//putih();
//kec_ka=40;kec_ki=40;set_rpm();
biss1();
if(kosong==1){break;}
}
while(1){
buzz=0;
putih();
kec_ka=100;kec_ki=-150;set_rpm();
if(sendat2==0b00111111111111){break;}
if(sendat2==0b00011111111111){break;}
if(sendat2==0b00001111111111){break;}
if(sendat2==0b10000111111111){break;}
if(sendat2==0b11000111111111){break;}
if(sendat2==0b11000011111111){break;}
}buzz=1;stop_ki();
}
void j_ki_sl(){
while(1){
biss1();
if(kosong==1){break;}
}
while(1){
buzz=0;
putih();
kec_ka=100;kec_ki=-100;set_rpm();
if(sendat2==0b00111111111111){break;}
if(sendat2==0b00011111111111){break;}
if(sendat2==0b00001111111111){break;}
if(sendat2==0b10000111111111){break;}
if(sendat2==0b11000111111111){break;}
if(sendat2==0b11000011111111){break;}
}buzz=1;stop_ki();
}
void j_kik(){
while(1){
biss1();
if(kosong==1){break;}
}
while(1){
putih();
kec_ka=100;kec_ki=100;set_rpm();
if(kosong==1){break;}
}stop();
}
void j_kak(){
while(1){
biss1();
if(kosong==1){break;}
}
while(1){
putih();
kec_ka=100;kec_ki=100;set_rpm();
if(kosong==1){break;}
}
stop();
}
void ulang1(unsigned char waktu){
il=0;

while(il<waktu){biss1();il++;delay_ms(10);}
}
void ulang3(unsigned char waktu3){
il=0;
while(il<waktu3){biss_ka();il++;delay_ms(10);}
}
void ulang4(unsigned char waktu4){
il=0;
while(il<waktu4){biss_ki();il++;delay_ms(10);}
}
void zig_zag(){
while(1){
biss1();
if(sen_ka==0&&sen_ki==0){break;}
}
}
void hitam_putih(){
hitam();
if(sendat_h==0b01111111111111)error=
else if(sendat_h==0b00111111111111)error=
else if(sendat_h==0b00011111111111)error=
else if(sendat_h==0b00001111111111)error=
else if(sendat_h==0b10001111111111)error=
else if(sendat_h==0b10000111111111)error=
else if(sendat_h==0b11000111111111)error=
else if(sendat_h==0b11000011111111)error=
else if(sendat_h==0b11100011111111)error=
else if(sendat_h==0b11100001111111)error=
else if(sendat_h==0b11110001111111)error=
else if(sendat_h==0b11110000111111)error=
else if(sendat_h==0b11111000111111)error=

24;
22;
20;
18;
16;
14;
12;
10;
8;
6;
4;
2;
1;

else if(sendat_h==0b11111000011111)error= 0;
else if(sendat_h==0b11111111111111)error= 0;
else if(sendat_h==0b11111100011111)error= -1;
else if(sendat_h==0b11111100001111)error= -2;
else if(sendat_h==0b11111110001111)error= -4;
else if(sendat_h==0b11111110000111)error= -6;
else if(sendat_h==0b11111111000111)error= -8;
else if(sendat_h==0b11111111000011)error=-10;
else if(sendat_h==0b11111111100011)error=-12;
else if(sendat_h==0b11111111100001)error=-14;
else if(sendat_h==0b11111111110001)error=-16;
else if(sendat_h==0b11111111110000)error=-18;
else if(sendat_h==0b11111111111000)error=-20;
else if(sendat_h==0b11111111111100)error=-22;
else if(sendat_h==0b11111111111110)error=-24;
PID();
}
void hitam_putih2(){
hitam();
/*
if(sendat_h==0b01111111111111)error= 24;
else if(sendat_h==0b00111111111111)error= 22;
else if(sendat_h==0b00011111111111)error= 20;
else if(sendat_h==0b00001111111111)error= 18;
*/
if(sendat_h==0b10001111111111)error= 16;

else
else
else
else
else
else
else
else

if(sendat_h==0b10000111111111)error=
if(sendat_h==0b11000111111111)error=
if(sendat_h==0b11000011111111)error=
if(sendat_h==0b11100011111111)error=
if(sendat_h==0b11100001111111)error=
if(sendat_h==0b11110001111111)error=
if(sendat_h==0b11110000111111)error=
if(sendat_h==0b11111000111111)error=

14;
12;
10;
8;
6;
4;
2;
1;

else if(sendat_h==0b11111000011111)error= 0;
else if(sendat_h==0b11111111111111)error= 0;
else if(sendat_h==0b11111100011111)error= -1;
else if(sendat_h==0b11111100001111)error= -2;
else if(sendat_h==0b11111110001111)error= -4;
else if(sendat_h==0b11111110000111)error= -6;
else if(sendat_h==0b11111111000111)error= -8;
else if(sendat_h==0b11111111000011)error=-10;
else if(sendat_h==0b11111111100011)error=-12;
else if(sendat_h==0b11111111100001)error=-14;
else if(sendat_h==0b11111111110001)error=-16;
else if(sendat_h==0b11111111110000)error=-18;
else if(sendat_h==0b11111111111000)error=-20;
else if(sendat_h==0b11111111111100)error=-22;
else if(sendat_h==0b11111111111110)error=-24;
PID();
}
void black(){
while(1){buzz=0;
hitam_putih();
putih();
if(sen_ka==1&&sen_ki==1){break;}
}buzz=1;
}
void j_k_ki(){
while(1){
biss1();
if(sen_ka==0&&sen_ki==0){break;}
}
while(1){
biss1();
if(sen_ka==1&&sen_ki==1){break;}
}
while(1){
buzz=0;
putih();
kec_ka=100;kec_ki=-150;set_rpm();
if(sendat2==0b00111111111111){break;}
if(sendat2==0b00011111111111){break;}
if(sendat2==0b00001111111111){break;}
if(sendat2==0b10000111111111){break;}
if(sendat2==0b11000111111111){break;}
if(sendat2==0b11000011111111){break;}
}buzz=1;stop_ki();
}
void j_k_ki_br(){
while(1){
biss1();
if(sen_ka==0&&sen_ki==0){break;}

}
while(1){
buzz=0;
putih();
kec_ka=100;kec_ki=-150;set_rpm();
if(sendat==0b11111110000111){break;}
if(sendat==0b11111110001111){break;}
if(sendat==0b11111100001111){break;}
if(sendat==0b11111100000111){break;}
if(sendat==0b11111000001111){break;}
}buzz=1;stop_ki();
}
void j_k_ki2(){
while(1){
biss1();
if(s[2]==0&&s[11]==0){break;}
}
while(1){
buzz=0;
putih();
kec_ka=100;kec_ki=-150;set_rpm();
if(sendat2==0b00111111111111){break;}
if(sendat2==0b00011111111111){break;}
if(sendat2==0b00001111111111){break;}
if(sendat2==0b10000111111111){break;}
if(sendat2==0b11000111111111){break;}
if(sendat2==0b11000011111111){break;}
}buzz=1;stop_ki();
}
void j_k_ka(){
while(1){
biss1();
if(sen_ka==0&&sen_ki==0){break;}
}
while(1){
biss1();
if(sen_ka==1&&sen_ki==1){break;}
}
while(1){
buzz=0;
putih();
kec_ki=100;kec_ka=-150;set_rpm();
if(sendat2==0b11111111111100){break;}
if(sendat2==0b11111111111000){break;}
if(sendat2==0b11111111110000){break;}
if(sendat2==0b11111111100001){break;}
if(sendat2==0b11111111100011){break;}
if(sendat2==0b11111111000011){break;}
}buzz=1;stop_ka();
}
void j_k_ka_br(){
while(1){
biss1();
if(sen_ka==0&&sen_ki==0){break;}
}

while(1){
buzz=0;
putih();
kec_ki=100;kec_ka=-150;set_rpm();
//if(sendat2==0b11111111110000){break;}
//if(sendat2==0b11111111100001){break;}
//if(sendat2==0b11111111100011){break;}
//if(sendat2==0b11111111000011){break;}
//if(sendat2==0b11111110000011){break;}
if(sendat2==0b11111110000111){break;}
if(sendat2==0b11111110001111){break;}
if(sendat2==0b11111100001111){break;}
if(sendat2==0b11111100000111){break;}
if(sendat2==0b11111000001111){break;}
}buzz=1;stop_ka();
}
void j_k_ka2(){
while(1){
biss1();
if(s[2]==0&&s[11]==0){break;}
}
while(1){
buzz=0;
putih();
kec_ki=100;kec_ka=-150;set_rpm();
if(sendat2==0b11111111111100){break;}
if(sendat2==0b11111111111000){break;}
if(sendat2==0b11111111110000){break;}
if(sendat2==0b11111111100001){break;}
if(sendat2==0b11111111100011){break;}
if(sendat2==0b11111111000011){break;}
}buzz=1;stop_ka();
}
void biar_ka(){
while(1){
biss1();
if(sen_ka==0){break;}
}
while(1){
kec_ka=100;kec_ki=100;set_rpm();
putih();
//biss1();
if(be_ka==0){break;}
}buzz=0;
while(1){
//biss1();
kec_ka=100;kec_ki=100;set_rpm();
putih();
if(be_ka==1){break;}
}buzz=1;
}
void biar_ki(){
while(1){
biss1();
if(sen_ki==0){break;}
}
while(1){

//biss1();
putih();
kec_ka=100;kec_ki=100;set_rpm();
if(be_ki==0){break;}
}buzz=0;
while(1){
//biss1();
putih();
kec_ka=100;kec_ki=100;set_rpm();
if(be_ki==1){break;}
}buzz=1;
}
void bunderan_ka(){
while(1){
biss1();
if(sen_ka==0){break;}
}
while(1){
putih();
kec_ki=100;kec_ka=100;set_rpm();
if(kosong==1){break;}
}
while(1){
buzz=0;
putih();
kec_ki=150;kec_ka=-200;set_rpm();
if(sendat2==0b11111111111110){break;}
if(sendat2==0b11111111111100){break;}
if(sendat2==0b11111111111000){break;}
if(sendat2==0b11111111110000){break;}
if(sendat2==0b11111111100001){break;}
if(sendat2==0b11111111100011){break;}
if(sendat2==0b11111111000011){break;}
}buzz=1;stop_ka();
while(1){
biss1();
if(error<8&&error>-8){break;}
}
while(1){
biss1();
if(sen_ka==0){break;}
}
while(1){
putih();
kec_ki=100;kec_ka=-130;set_rpm();
if(s[13]==1&&s[12]==0&&s[11]==0){break;}
}
while(1){
putih();
kec_ki=100;kec_ka=100;set_rpm();
if(sen_ka==0){break;}
}
ulang1(50);
}
void bunderan_ki(){
while(1){
biss1();
if(sen_ki==0){break;}
}

while(1){
putih();
kec_ka=100;kec_ki=100;set_rpm();
if(kosong==1){break;}
}
while(1){
buzz=0;
putih();
kec_ka=150;kec_ki=-200;set_rpm();
if(sendat2==0b01111111111111){break;}
if(sendat2==0b00111111111111){break;}
if(sendat2==0b00011111111111){break;}
if(sendat2==0b00001111111111){break;}
if(sendat2==0b10000111111111){break;}
if(sendat2==0b11000111111111){break;}
if(sendat2==0b11000011111111){break;}
}buzz=1;stop_ki();
while(1){
biss1();
if(error<8&&error>-8){break;}
}
while(1){
biss1();
if(sen_ki==0){break;}
}
while(1){
putih();
kec_ka=100;kec_ki=-130;set_rpm();
if(s[0]==1&&s[1]==0&&s[2]==0){break;}
}
while(1){
putih();
kec_ki=100;kec_ka=100;set_rpm();
if(sen_ki==0){break;}
}
ulang1(50);
}
void terakhir(){
while(1){
biss1();
if(sen_ka==0&&sen_ki==0){break;}
}
while(1){
hitam_putih();
if(sendat_h==0b11110000001111){break;}
if(sendat_h==0b11100000000111){break;}
if(sendat_h==0b11000000000011){break;}
putih();
if(sen_ka==1||sen_ki==1){break;}
}
while(1){
putih();
if(sendat==0b00000000000000){break;}
}
while(1){
putih();
kec_ki=100;kec_ka=-20;set_rpm();
if(sendat!=0b00000000000000){break;}
}//stop_ka();

while(1){
putih();
kec_ki=60;kec_ka=0;set_rpm();
if(sendat==0b00000000000000){break;}
}
while(1){
putih();
kec_ki=0;kec_ka=80;set_rpm();
if(sendat!=0b00000000000000){break;}
}
while(1){
hitam_putih2();
putih();
//if(sen_ka==1&&sen_ki==1){break;}
if(sen_ka==1&&sen_ki==1&&s[5]==0&&s[6]==0&&s[7]==0&&s[8]==0){break;}
if(sen_ka==1&&sen_ki==1&&s[5]==1&&s[6]==0&&s[7]==0&&s[8]==0){break;}
if(sen_ka==1&&sen_ki==1&&s[5]==0&&s[6]==0&&s[7]==0&&s[8]==1){break;}
}
j_ki_s();
j_k_ka();
while(1){
biss1();
if(sen_ka==0&&sen_ki==0){break;}
if(sendat==0b11110000001111){break;}
if(sendat==0b11100000000111){break;}
if(sendat==0b11000000000011){break;}
}
while(1){
putih();
kec_ka=150;kec_ki=150;set_rpm();
if(be_ka==0&&be_ki==0){break;}
}
stop();
}
void antem_lurus(){
putih();
/*
if(putus==0b0111111111)error=
else if(putus==0b0011111111)error=
else if(putus==0b0001111111)error=
else if(putus==0b0000111111)error=
*/
if(putus==0b1000111111)error=
else if(putus==0b1000011111)error=
else if(putus==0b1100011111)error=
else if(putus==0b1100001111)error=
else if(putus==0b1110001111)error=

18;
15;
12;
10;
8;
6;
4;
2;
1;

else if(putus==0b1110000111)error= 0;
else
else
else
else
else
/*
else
else

if(putus==0b1111000111)error=
if(putus==0b1111000011)error=
if(putus==0b1111100011)error=
if(putus==0b1111100001)error=
if(putus==0b1111110001)error=

-1;
-2;
-4;
-6;
-8;

if(putus==0b1111110000)error=-10;
if(putus==0b1111111000)error=-12;

else if(putus==0b1111111100)error=-15;
else if(putus==0b1111111110)error=-18;
*/
PID();
}
void antem_lurus2(){
ulang1(10);
while(1){buzz=0;
biss1();
if(error==0){break;}
if(error>-5&&error<5){break;}
}buzz=1;
while(1){
biss1();
if(s[6]==1&&s[7]==1){break;}
}
while(1){buzz=0;
putih();
kec_ka=60;kec_ki=60;set_rpm();
if(s[6]==0&&s[7]==0){break;}
}buzz=1;
while(1){
putih();
kec_ka=60;kec_ki=60;set_rpm();
if(s[6]==1&&s[7]==1){break;}
}
while(1){stop();}
while(1){
putih();
kec_ka=60;kec_ki=60;set_rpm();
if(sendat==0b11111000011111){break;}
if(sendat==0b11110000001111){break;}
if(sendat==0b11110000011111){break;}
if(sendat==0b11111000001111){break;}
if(sendat==0b11110000111111){break;}
if(sendat==0b11111100001111){break;}
}
while(1){
biss1();
if(s[6]==1||s[7]==1){break;}
}
while(1){
putih();
kec_ka=60;kec_ki=60;set_rpm();
if(sendat==0b11111000011111){break;}
if(sendat==0b11110000001111){break;}
if(sendat==0b11110000011111){break;}
if(sendat==0b11111000001111){break;}
if(sendat==0b11110000111111){break;}
if(sendat==0b11111100001111){break;}
}
ulang1(50);
}
void antem_lurus3(){
buzz=0;
m_speed=standart+30;
speed=standart+30;
ulang1(100);
speed=standart;

m_speed=standart;
buzz=1;
}
void ulang_antem(unsigned char hilo){
il=0;
while(il<hilo){antem_lurus();il++;delay_ms(10);}
}
void uji_coba(){
led1=0;
standart=speed;
j_ki_s();
j_ki_s();
j_ka();
speed=standart+10;
j_ka_s();
speed=standart+30;
j_ki_s();
speed=standart;
ulang3(50);
j_ki_s();
ulang1(20);
j_ki_sp();
ulang1(20);
j_ka_s();
speed=standart+20;
j_ki_s();
speed=standart;
zig_zag();
black();
biar_ki();
j_k_ki();
j_ka_s();
j_ki_s();
//====
j_ka_s();
j_ka_s();
j_ki_s();
j_ki_s();
bunderan_ka();
j_k_ki();
j_ka();
ulang_antem(100);
j_ki_cp();
//======
j_k_ki();
j_ka();
j_ki();
j_k_ki();
while(1){stop();}
}
void uji_coba2(){
led1=0;standart=speed;
j_ka_s();
j_ka_s();
j_ki();
speed=standart+10;

j_ki_s();
speed=standart+30;
j_ka_sl();
speed=standart;
ulang4(50);
j_ka_s();
ulang1(20);
j_ka_sp();
ulang1(20);
j_ki_s();
speed=standart+20;
j_ka_s();
speed=standart;
zig_zag();
black();
biar_ka();
j_k_ka();
j_ki_s();
j_ka_s();
//=========
j_ki_s();
j_ki_s();
j_ka_s();
j_ka_s();
bunderan_ki();
j_k_ka();
j_ki();
ulang_antem(100);
j_ka_cp();
j_k_ka();
j_ki();
j_ka();
j_k_ka();
while(1){stop();}
}
void kiri_start(){
led1=0;
standart=speed;
j_ki_s();
j_ki_s();
j_ka_tuntun3();
//j_kik();
j_ki();
speed=standart;
ulang3(50);
j_ki_s();
ulang1(20);
j_ki_sp();
ulang1(20);
j_ka_s();
}
void kiri_1(){
standart=speed;
speed=standart+20;
//j_ki_s();
j_ki_tuntun();
speed=standart;
}
void kiri_2(){

standart=speed;
zig_zag();
black();
biar_ki();
}
void kiri_3(){
standart=speed;
j_k_ki_br();
j_ka_tuntun2();
//j_ka_s();
j_ki_s();
j_ka_s();
j_ka_s();
j_ki_s();
j_ki_s();
bunderan_ka();
j_k_ki();
/*
speed=standart+30;
m_speed=standart+30;
j_ka_banter();
speed=standart;
m_speed=standart;
*/
j_ka();
antem_lurus3();
//ulang_antem(150);
}
void kiri_4(){
standart=speed;
j_ki_cp();
//while(1){stop();}
j_k_ki();
ulang1(30);
j_ka();
j_ki();
}
void kiri_5(){
standart=speed;
while(1){
biss1();
if(error>-5&&error<5){break;}
}
j_k_ki();
terakhir();
}
void kanan_start(){
led1=0;standart=speed;
j_ka_s();
j_ka_s();
j_ki_tuntun3();
j_ka();
speed=standart;
ulang4(50);
j_ka_s();
ulang1(20);
j_ka_sp();
ulang1(20);
j_ki_s();
}

void kanan_1(){
standart=speed;
speed=standart+20;
//j_ka_s();
j_ka_tuntun();
speed=standart;
}
void kanan_2(){
standart=speed;
zig_zag();
black();
biar_ka();
}
void kanan_3(){
standart=speed;
j_k_ka_br();
//j_ki_s();
j_ki_tuntun2();
j_ka_s();
//=========
j_ki_s();
j_ki_s();
j_ka_s();
j_ka_s();
bunderan_ki();
j_k_ka();
/*
speed=standart+30;
m_speed=standart+30;
j_ki_banter();
speed=standart;
m_speed=standart;
*/
j_ki();
antem_lurus3();
//ulang_antem(150);
}
void kanan_4(){
standart=speed;
j_ka_cp();
//while(1){stop();}
j_k_ka();
ulang1(30);
j_ki();
j_ka();
}
void kanan_5(){
standart=speed;
while(1){
biss1();
if(error>-5&&error<5){break;}
}
j_k_ka();
terakhir();
}

void go_biss(){led1=0;
j_ki_cp();
//antem_lurus2();
}
void go_biss_ka(){lcd_clear();me_ka=1;
while(1){
led1=0;
tampil_lcd(0,0," Arena Kanan ");
if(tambah==0){delay_ms(200);me_ka++;}
if(kurang==0){delay_ms(200);me_ka--;}
if(cancel==0){delay_ms(200);break;}
if(me_ka<1){me_ka=6;}
if(me_ka>6){me_ka=1;}
if(me_ka==1){tampil_lcd(1,0,">. GO Start ");if(ok==0){delay_ms(200);
kanan_start();kanan_1();kanan_2();kanan_3();kanan_4();kanan_5();selesai();}}
if(me_ka==2){tampil_lcd(1,0,"1.
Cek 1
");if(ok==0){delay_ms(200);
kanan_1();kanan_2();kanan_3();kanan_4();kanan_5();selesai();}}
if(me_ka==3){tampil_lcd(1,0,"2.
Cek 2
");if(ok==0){delay_ms(200);
kanan_2();kanan_3();kanan_4();kanan_5();selesai();}}
if(me_ka==4){tampil_lcd(1,0,"3.
Cek 3
");if(ok==0){delay_ms(200);
kanan_3();kanan_4();kanan_5();selesai();}}
if(me_ka==5){tampil_lcd(1,0,"4.
Cek 4
");if(ok==0){delay_ms(200);
kanan_4();kanan_5();selesai();}}
if(me_ka==6){tampil_lcd(1,0,"5.
Cek 5
");if(ok==0){delay_ms(200);
kanan_5();selesai();}}
}
}
void go_biss_ki(){lcd_clear();me_ki=1;
while(1){
led1=0;
tampil_lcd(0,0," Arena Kiiri ");
if(tambah==0){delay_ms(200);me_ki++;}
if(kurang==0){delay_ms(200);me_ki--;}
if(cancel==0){delay_ms(200);break;}
if(me_ki<1){me_ki=6;}
if(me_ki>6){me_ki=1;}
if(me_ki==1){tampil_lcd(1,0,">. GO Start ");if(ok==0){delay_ms(200);
kiri_start();kiri_1();kiri_2();kiri_3();kiri_4();kiri_5();selesai();}}
if(me_ki==2){tampil_lcd(1,0,"1.
Cek 1
");if(ok==0){delay_ms(200);
kiri_1();kiri_2();kiri_3();kiri_4();kiri_5();selesai();}}
if(me_ki==3){tampil_lcd(1,0,"2.
Cek 2
");if(ok==0){delay_ms(200);
kiri_2();kiri_3();kiri_4();kiri_5();selesai();}}
if(me_ki==4){tampil_lcd(1,0,"3.
Cek 3
");if(ok==0){delay_ms(200);
kiri_3();kiri_4();kiri_5();selesai();}}
if(me_ki==5){tampil_lcd(1,0,"4.
Cek 4
");if(ok==0){delay_ms(200);
kiri_4();kiri_5();selesai();}}
if(me_ki==6){tampil_lcd(1,0,"5.
Cek 5
");if(ok==0){delay_ms(200);
kiri_5();selesai();}}
}
}
void cek_back(){led1=0;led2=0;lcd_clear();
for (i=0;i<=21;i++)
{
min_adc[i]=0;
max_adc[i]=255;
};
while(1){
scan();

for (i=0;i<=21;i++)
{
if (baca[i]>min_adc[i]){min_adc[i]=baca[i];}
if (baca[i]<max_adc[i]){max_adc[i]=baca[i];}
back[i]=min_adc[i]+(max_adc[i]-min_adc[i])/2;
};
tampil_lcd(0,0,"CEK GARIS");
if(cancel==0){delay_ms(200);break;}
}
led1=1;led2=1;
}
void cek_sensor(){led1=0;led2=0;lcd_clear();
while(1){
putih();
tampil_lcd(0,0," %1d%1d%1d%1d%1d%1d%1d",s[0],s[1],s[2],s[3],s[4],s[5],s[6])
;
tampil_lcd(0,8,"%1d%1d%1d%1d%1d%1d%1d ",s[7],s[8],s[9],s[10],s[11],s[12],s[
13]);
tampil_lcd(1,1,"%1d%1d %1d%1d%1d%1d %1d%1d",s[14],s[15],s[16],s[17],s[1
8],s[19],s[20],s[21]);
if(cancel==0){break;}
}led1=1;led2=0;
}
void lihat1(){led1=0;led2=0;
while(1){
scan();
tampil_lcd(0,0,"%3d %3d %3d 1 ",baca[0],baca[1],baca[2]);
tampil_lcd(1,0,"%3d %3d %3d %3d",baca[3],baca[4],baca[5],baca[6]);
if(cancel==0){delay_ms(200);break;}
}led1=1;led2=1;
}
void lihat2(){led1=0;led2=0;
while(1){
scan();
tampil_lcd(0,0,"%3d %3d %3d 2 ",baca[7],baca[8],baca[9]);
tampil_lcd(1,0,"%3d %3d %3d %3d",baca[10],baca[11],baca[12],baca[13]);
if(cancel==0){delay_ms(200);break;}
}led1=1;led2=1;
}
void lihat3(){led1=0;led2=0;
while(1){
scan();
tampil_lcd(0,0,"%3d %3d %3d %3d",baca[14],baca[15],baca[16],baca[17]);
tampil_lcd(1,0,"%3d %3d %3d %3d",baca[18],baca[19],baca[20],baca[21]);
if(cancel==0){delay_ms(200);break;}
}led1=1;led2=1;
}
void cek1(){
lcd_gotoxy(0,0);
if(tambah==0){lcd_putsf("tambah");lampu=0;buzz=0;}
else if(kurang==0){lcd_putsf("kurang");lampu=0;buzz=0;}
else if(cancel==0){lcd_putsf("cancel");lampu=0;buzz=0;}
else if(ok==0){lcd_putsf("ok
");lampu=0;buzz=0;}
else {lcd_clear();lampu=1;buzz=1;}
}
void set_kp(){lcd_clear();
while(1){
tampil_lcd(0,0," ==> Set KP <== ");
tampil_lcd(1,0," KP = %3d" ,kp);

if(tambah==0){delay_ms(200);kp++;}
if(kurang==0){delay_ms(200);kp--;}
if(cancel==0){delay_ms(200);break;}
if(kp>30){kp=1;}
if(kp<1){kp=30;}
ee_kp=kp;
}
}
void set_kd(){lcd_clear();
while(1){
tampil_lcd(0,0," ==> Set KD <== ");
tampil_lcd(1,0," KD = %3d" ,kd);
if(tambah==0){delay_ms(200);kd++;}
if(kurang==0){delay_ms(200);kd--;}
if(cancel==0){delay_ms(200);break;}
if(kd>99){kd=1;}
if(kd<1){kd=99;}
ee_kd=kd;
}
}
void set_ki(){lcd_clear();
while(1){
tampil_lcd(0,0," ==> Set KI <== ");
tampil_lcd(1,0," KI = %3d" ,ki);
if(tambah==0){delay_ms(200);ki++;}
if(kurang==0){delay_ms(200);ki--;}
if(cancel==0){delay_ms(200);break;}
if(ki>99){ki=1;}
if(ki<1){ki=99;}
ee_ki=ki;
}
}
void set_speed(){lcd_clear();
while(1){
tampil_lcd(0,0," ==>Set Sped<== ");
tampil_lcd(1,0," Sped = %3d" ,speed);
if(tambah==0){delay_ms(50);speed++;}
if(kurang==0){delay_ms(50);speed--;}
if(cancel==0){delay_ms(200);break;}
if(speed>250){speed=1;}
if(speed<1){speed=250;}
ee_speed=speed;
}
}
void set_m_speed(){lcd_clear();
while(1){
tampil_lcd(0,0,"=>Set Max Sped<=");
tampil_lcd(1,0," Sped = %3d" ,m_speed);
if(tambah==0){delay_ms(50);m_speed++;}
if(kurang==0){delay_ms(50);m_speed--;}
if(cancel==0){delay_ms(200);break;}
if(speed>250){m_speed=1;}
if(speed<1){m_speed=250;}
ee_m_speed=m_speed;
}
}
void set_awal(){
speed=80;
m_speed=80;
kp=8;

kd=9;
ee_kp=kp;
ee_kd=kd;
ee_speed=speed;
ee_m_speed=speed;
lcd_clear();
tampil_lcd(1,0," Set Awal OK !! ");
delay_ms(500);
}
void set(){lcd_clear();led1=1;led2=1;
set1=1;
while(1){
tampil_lcd(0,0," Mode Setting ");
if(tambah==0){delay_ms(200);set1++;}
if(kurang==0){delay_ms(200);set1--;}
if(cancel==0){delay_ms(200);break;}
if(set1>6){set1=1;}
if(set1<1){set1=6;}
if(set1==1){tampil_lcd(1,0,"1. Sett KP
");if(ok==0){delay_ms(200);s
et_kp();}}
if(set1==2){tampil_lcd(1,0,"2. Sett KI
");if(ok==0){delay_ms(200);s
et_ki();}}
if(set1==3){tampil_lcd(1,0,"3. Sett KD
");if(ok==0){delay_ms(200);s
et_kd();}}
if(set1==4){tampil_lcd(1,0,"4. Sett Speed ");if(ok==0){delay_ms(200);s
et_speed();}}
if(set1==5){tampil_lcd(1,0,"5. Set Max Sped ");if(ok==0){delay_ms(200);s
et_m_speed();}}
if(set1==6){tampil_lcd(1,0,"6. Set Awal ");if(ok==0){delay_ms(200);s
et_awal();}}
}
}
void cek_bat(){
while(1){
tampil_lcd(0,0," ==>Cek Batt<== ");
tampil_lcd(1,0," Baterai = %3d " ,read_adc(7));
led1=0;led2=1;delay_ms(50);
led1=1;led2=0;delay_ms(50);
if(cancel==0){delay_ms(200);break;}
}
}
void lihat_analog(){lcd_clear();led1=1;led2=1;la=1;
while(1){
tampil_lcd(0,0," LIHAT ANALOG ");
if(tambah==0){delay_ms(200);la++;}
if(kurang==0){delay_ms(200);la--;}
if(cancel==0){delay_ms(200);break;}
if(la<1){la=3;}
if(la>3){la=1;}
if(la==1){tampil_lcd(1,0,"1. Sen 7 Kiri ");if(ok==0){delay_ms(200);lih
at1();}}
if(la==2){tampil_lcd(1,0,"2. Sen 7 Kann ");if(ok==0){delay_ms(200);lih
at2();}}
if(la==3){tampil_lcd(1,0,"3. Sen Blkang ");if(ok==0){delay_ms(200);lih
at3();}}
}
}
void cek_mosfet(){lcd_clear();ed=0;
while(1){
tampil_lcd(0,0," =>Cek Mosfet<= ");

tampil_lcd(1,0," Sped = %4d" ,ed);


if(tambah==0){delay_ms(100);ed=ed+2;}
if(kurang==0){delay_ms(100);ed=ed-2;}
if(cancel==0){delay_ms(200);break;}
if(ed>100){ed=100;}
if(ed<-100){ed=-100;}
kec_ka=ed;
kec_ki=ed;
set_rpm();
led1=0;led2=1;delay_ms(50);
led1=1;led2=0;delay_ms(50);
}
kec_ki=0;kec_ka=0;set_rpm();
}
void menu(){lcd_clear();
men1=1;
while(1){
tampil_lcd(0,0," Rahasia Ilahi ");
if(tambah==0){delay_ms(200);men1++;}
if(kurang==0){delay_ms(200);men1--;}
if(cancel==0){delay_ms(200);men1=1;}
if(men1<1){men1=9;}
if(men1>9){men1=1;}
if(men1==1){tampil_lcd(1,0,"1. GO Kanan
o_biss_ka();}}
if(men1==2){tampil_lcd(1,0,"2. GO Kiri
o_biss_ki();}}
if(men1==3){tampil_lcd(1,0,"3.
Setting
et();}}
if(men1==4){tampil_lcd(1,0,"4. Lihat Analog
ihat_analog();}}
if(men1==5){tampil_lcd(1,0,"5. Lihat BIT
ek_sensor();}}
if(men1==6){tampil_lcd(1,0,"6. Cek Mosfet
ek_mosfet();}}
if(men1==9){tampil_lcd(1,0,"9. Ambil Sensor
ek_back();}}
if(men1==7){tampil_lcd(1,0,"7. Cek Baterai
ek_bat();}}
if(men1==8){tampil_lcd(1,0,"8. Set Awal
et_awal();}}

");if(ok==0){delay_ms(200);g
");if(ok==0){delay_ms(200);g
");if(ok==0){delay_ms(200);s
");if(ok==0){delay_ms(200);l
");if(ok==0){delay_ms(200);c
");if(ok==0){delay_ms(200);c
");if(ok==0){delay_ms(200);c
");if(ok==0){delay_ms(200);c
");if(ok==0){delay_ms(200);s

led1=0;led2=1;delay_ms(50);
led1=1;led2=0;delay_ms(50);
kec_ka=0;kec_ki=0;set_rpm();
}
}
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=Out Func5=Out Func4=Out Func3=Out Func2=In Func1=In Func0=In
// State7=T State6=1 State5=1 State4=1 State3=1 State2=T State1=T State0=T
PORTA=0x78;
DDRA=0x78;
// Port B initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In


// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=Out Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=1 State6=P State5=P State4=P State3=T State2=T State1=T State0=P
PORTC=0xF1;
DDRC=0x80;
// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=In Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=T State2=T State1=1 State0=1
PORTD=0x03;
DDRD=0xF3;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 46,875 kHz
// Mode: Ph. correct PWM top=00FFh
// OC1A output: Non-Inv.
// OC1B output: Non-Inv.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xA1;
TCCR1B=0x04;
//TCCR1A=0x00;
//TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;

OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;
SFIOR&=0xEF;
SFIOR|=0x10;
// LCD module initialization
lampu=1;
lcd_init(16);
// Global enable interrupts
#asm("sei")
kp=ee_kp;
kd=ee_kd;
ki=ee_ki;
standart=ee_speed;
speed=ee_speed;
m_speed=ee_m_speed;
menu();
while (1)
{
// Place your code here
//0mundur1maju
//0maju1mundur
//ketika maju normal
//ketika mundur
if(ok==0)kec_ki=-50;
if(cancel==0)kec_ki=50;
set_rpm();
};
}

You might also like