70
LAMPIRAN
Program Lengkap Deteksi Kepadatan Jalan
function varargout = trafficlight(varargin) b(1,:)=[2 2 3 3 4 4 5 5 6 6]%hijau
vid = videoinput('winvideo', 1, 'YUY2_320x240'); pic1=getsnapshot(vid);
for i=1:3
dio = digitalio ('parallel','LPT1'); addline(dio,0:3,2,'out');
putvalue(dio,[0 1 0 1]); pause(1)
putvalue(dio,[1 0 0 1]); pause(1)
putvalue(dio,[1 1 1 1]); pause(1)
putvalue(dio,[1 1 0 0]); pause(1)
end
pic2=getsnapshot(vid); for i=1:3
dio = digitalio ('parallel','LPT1'); addline(dio,0:3,2,'out');
putvalue(agung,[0 1 0 1]); pause(1)
putvalue(dio,[1 0 0 1]); pause(1)
putvalue(dio,[1 1 1 1]); pause(1)
putvalue(dio,[1 1 0 0]); pause(1)
end
pic3=getsnapshot(vid); for i=1:3
dio = digitalio ('parallel','LPT1'); addline(dio,0:3,2,'out');
71 putvalue(dio,[1 0 0 1]);
pause(1)
putvalue(dio,[1 1 1 1]); pause(1)
putvalue(dio,[1 1 0 0]); pause(1)
end
pic4=getsnapshot(vid); pause(1)
for i=1:9
dio = digitalio ('parallel','LPT1'); addline(dio,0:3,2,'out');
putvalue(dio,[1 1 1 1]); pause(0.5)
putvalue(dio,[1 0 0 1]); pause(0.5)
putvalue(dio,[0 1 0 1]); pause(0.5)
putvalue(dio,[1 1 0 0]); pause(0.5)
end figure
%%%%%%%%%%%%%%%%%%%%% %jadikan black&white
B = rgb2gray(pic1); C = rgb2gray(pic2); D = rgb2gray(pic3); E = rgb2gray(pic4);
%%%%hitung kepadatan jalan 1 a=B;
b=1; c=120; p1=0; e=100; d=e; n=1;
72 if a(b,d)<=80;
p1=p1+1; end d=d+1; end b=b+2; c=c+2; d=e-n; n=n+1; end p1 b=2; c=120; pp1=0; e=100; d=e; n=1;
for i=1:100 for j=1:c
if a(b,d)<=80; pp1=pp1+1; end
d=d+1; end b=b+2; c=c+2; d=e-n; n=n+1; end pp1
ppp1=pp1+p1
%%%%%%%menghitung kepadatan jalur 2 a=C;
73 n=1;
for i=1:100 for j=1:c
if a(b,d)<=80; p2=p2+1; end d=d+1; end b=b+2; c=c+2; d=e-n; n=n+1; end p2 b=2; c=120; pp2=0; e=100; d=e; n=1;
for i=1:100 for j=1:c
if a(b,d)<=80; pp2=pp2+1; end
d=d+1; end b=b+2; c=c+2; d=e-n; n=n+1; end pp2
ppp2=pp2+p2
%%%%menghitung kepadatan jalan 3 a=C;
74 p3=0;
e=100; d=e; n=1;
for i=1:100 for j=1:c
if a(b,d)<=80; p3=p3+1; end d=d+1; end b=b+2; c=c+2; d=e-n; n=n+1; end p3 b=2; c=120; pp3=0; e=100; d=e; n=1;
for i=1:100 for j=1:c
if a(b,d)<=80; pp3=pp3+1; end
d=d+1; end b=b+2; c=c+2; d=e-n; n=n+1; end pp3
ppp3=pp3+p3
75 a=E;
b=1; c=120; p4=0; e=100; d=e; n=1;
for i=1:100 for j=1:c
if a(b,d)<=80; p4=p4+1; end d=d+1; end b=b+2; c=c+2; d=e-n; n=n+1; end p4 b=2; c=120; pp4=0; e=100; d=e; n=1;
for i=1:100 for j=1:c
if a(b,d)<=80; pp4=pp4+1; end
76 pp4
ppp4=pp4+p4
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%
BBB = round((ppp1/22000)*10);%menentukan tingkat kepadatan CCC = round((ppp2/22000)*10);
DDD = round((ppp3/22000)*10); EEE = round((ppp4/22000)*10); hijau1 = b(1,BBB);%nilai hijau hijau2 = b(1,CCC);
hijau3 = b(1,DDD); hijau4 = b(1,EEE); colordef black;
text(20,24,'Traffic Light');
circle1l = rsmak('circle',0.5,[19 9]); circle2l = rsmak('circle',0.5,[18 9]); circle3l = rsmak('circle',0.5,[17 9]); circle4l = rsmak('circle',0.5,[6 16]); circle5l = rsmak('circle',0.5,[7 16]); circle6l = rsmak('circle',0.5,[8 16]); circle7l = rsmak('circle',0.5,[9 6]); circle8l = rsmak('circle',0.5,[9 7]); circle9l = rsmak('circle',0.5,[9 8]); circle10l = rsmak('circle',0.5,[16 19]); circle11l = rsmak('circle',0.5,[16 18]); circle12l = rsmak('circle',0.5,[16 17]);
77 circle12 = rsmak('circle',0.25,[16 17]); hold on,
%garis jalan
line([10,0], [15,15]); line([15,25], [15,15]); line([10,0], [10,10]); line([15,25], [10,10]); line([10,10], [15,25]); line([10,10], [0,10]); line([15,15], [15,25]); line([15,15], [0,10]); %kotak lampu line([5,9], [17,17]); line([5,5], [15,17]); line([9,9], [15,17]); line([16,20], [8,8]); line([16,16], [8,10]); line([20,20], [8,10]); line([8,8], [5,9]); line([8,10], [5,5]); line([8,10], [9,9]); line([17,17], [16,20]); line([15,17], [16,16]); line([15,17], [20,20]);
78 n=hijau2;
o=hijau3; p=hijau4; for i=1:1
fnplt(rsmak('circle',0.25,[2 24]),'-',5,'black'); text(2,24,int2str(i));
%%%%%%%%%%jalur 1 %%%%%%%%%%%%%%%%%%%%%%%%% fnplt(circle1,'-',5,'g'),
fnplt(circle2,'-',5,'black'), fnplt(circle3,'-',5,'black'), fnplt(circle4,'-',5,'black'), fnplt(circle5,'-',5,'black'), fnplt(circle6,'-',5,'r'), fnplt(circle7,'-',5,'black'), fnplt(circle8,'-',5,'black'), fnplt(circle9,'-',5,'r'), fnplt(circle10,'-',5,'black'), fnplt(circle11,'-',5,'black'), fnplt(circle12,'-',5,'r'),
dio = digitalio('parallel','lpt1'); lines = addline(dio,0:7,0,'out'); putvalue(dio,[0 0 1 0 1 1 0 0]); putvalue(dio,[1 0 0 0 1 0 0 0]); putvalue(dio,[1 0 0 0 0 0 0 0]); putvalue(dio,[1 0 0 0 0 1 0 0]); f=m;
g=n; h=o; i=p; k1=f;
k2=f+1+g+1+1-1; k3=f+1+g+1+h+1+2-1; R=10;
79 S3=k3-(P3*R);
q=160+S1; qq=192+P1; w=128+S1; ww=224+P1; e=176+S2; ee=240+P2; r=144+S3; rr=208+P3; ff=f+1; for n=1:ff
fnplt(rsmak('circle',0.5,[22 8.5]),'-',10,'black'); fnplt(rsmak('circle',0.5,[23 8.5]),'-',10,'black'); fnplt(rsmak('circle',0.5,[18 16.8]),'-',10,'black'); fnplt(rsmak('circle',0.5,[18 16.8]),'-',10,'black'); fnplt(rsmak('circle',0.5,[3 16]),'-',10,'black'); fnplt(rsmak('circle',0.5,[3 16]),'-',10,'black'); fnplt(rsmak('circle',0.5,[5.8 8]),'-',10,'black'); fnplt(rsmak('circle',0.5,[5.8 8]),'-',10,'black'); text(22,8.5,int2str(k1),'color','green');
text(18,16.8,int2str(k1),'color','red'); text(3,16,int2str(k2),'color','red'); text(5.8,8,int2str(k3),'color','red'); dio = digitalio('parallel','lpt1'); lines = addline(dio,0:7,0,'out'); putvalue(dio,q);
putvalue(dio,qq); putvalue(dio,w); putvalue(dio,ww); putvalue(dio,e); putvalue(dio,ee); putvalue(dio,r); putvalue(dio,rr); if q<=160
q=170,qq=qq-1; end
if w<=128
80 end
if e<=176
e=186,ee=ee-1; end
if r<=144
r=154,rr=rr-1; end
pause(1); k1=k1-1; k2=k2-1; k3=k3-1; q=q-1; w=w-1; e=e-1; r=r-1; end
fnplt(circle1,'-',5,'black'), fnplt(circle2,'-',5,'y'), fnplt(circle3,'-',5,'black'), fnplt(circle10,'-',5,'black'), fnplt(circle11,'-',5,'y'), fnplt(circle12,'-',5,'black'), fnplt(circle4,'-',5,'black'), fnplt(circle5,'-',5,'black'), fnplt(circle6,'-',5,'r'), fnplt(circle7,'-',5,'black'), fnplt(circle8,'-',5,'black'), fnplt(circle9,'-',5,'r'),
dio = digitalio('parallel','lpt1'); lines = addline(dio,0:7,0,'out'); putvalue(dio,[0 1 0 0 1 1 0 0]); putvalue(dio,[0 1 0 0 1 0 0 0]); putvalue(dio,[1 0 0 0 0 0 0 0]); putvalue(dio,[1 0 0 0 0 1 0 0]); f=m;
81 k1=f;
k2=f+1+g+1+1-1; k3=f+1+g+1+h+1+2-1; k4=f+1+g+1+1-1-(f+1); k5=f+1+g+1+h+1+2-1-(f+1); R=10;
P4=floor(k4/R); S4=k4-(P4*R); P5=floor(k5/R); S5=k5-(P5*R); e=176+S2; ee=240+P2; r=144+S3; rr=208+P3; q=175; qq=207; w=143; ww=239;
fnplt(rsmak('circle',0.5,[22 8.5]),'-',10,'black'); fnplt(rsmak('circle',0.5,[23 8.5]),'-',10,'black'); fnplt(rsmak('circle',0.5,[18 16.8]),'-',10,'black'); fnplt(rsmak('circle',0.5,[18 16.8]),'-',10,'black'); %%%nutup kuning
fnplt(rsmak('circle',0.5,[3 16]),'-',10,'black'); fnplt(rsmak('circle',0.5,[3 16]),'-',10,'black'); fnplt(rsmak('circle',0.5,[5.8 8]),'-',10,'black'); fnplt(rsmak('circle',0.5,[5.8 8]),'-',10,'black'); text(3,16,int2str(k4),'color','red');
text(5.8,8,int2str(k5),'color','red'); dio = digitalio('parallel','lpt1'); lines = addline(dio,0:7,0,'out'); putvalue(dio,e);
82 putvalue(dio,ww);
pause(1)
%%%%%%%%%%%%%jalur2%%%%%%%%%%%%%%%%%%%% fnplt(circle1,'-',5,'black'),
fnplt(circle2,'-',5,'black'), fnplt(circle3,'-',5,'r'), fnplt(circle10,'-',5,'g'), fnplt(circle11,'-',5,'black'), fnplt(circle12,'-',5,'black'), fnplt(circle4,'-',5,'black'), fnplt(circle5,'-',5,'black'), fnplt(circle6,'-',5,'r'), fnplt(circle7,'-',5,'black'), fnplt(circle8,'-',5,'black'), fnplt(circle9,'-',5,'r'),
dio = digitalio('parallel','lpt1'); lines = addline(dio,0:7,0,'out'); putvalue(dio,[1 0 0 0 1 1 0 0]); putvalue(dio,[0 0 1 0 1 0 0 0]); putvalue(dio,[1 0 0 0 0 0 0 0]); putvalue(dio,[1 0 0 0 0 1 0 0]); f=m;
g=n; h=o; i=p; k1=g;
k2=g+1+h+1+1-1; k3=g+1+h+1+i+1+2-1; R=10;
83 ww=224+P1;
e=176+S1; ee=240+P1; r=144+S2; rr=208+P2; gg=g+1 for n=1:gg
fnplt(rsmak('circle',0.5,[22 8.5]),'-',10,'black'); fnplt(rsmak('circle',0.5,[23 8.5]),'-',10,'black'); fnplt(rsmak('circle',0.5,[18 16.8]),'-',10,'black'); fnplt(rsmak('circle',0.5,[18 16.8]),'-',10,'black'); fnplt(rsmak('circle',0.5,[3 16]),'-',10,'black'); fnplt(rsmak('circle',0.5,[3 16]),'-',10,'black'); fnplt(rsmak('circle',0.5,[5.8 8]),'-',10,'black'); fnplt(rsmak('circle',0.5,[5.8 8]),'-',10,'black'); text(22,8.5,int2str(k3),'color','red');
text(18,16.8,int2str(k1),'color','green'); text(3,16,int2str(k1),'color','red'); text(5.8,8,int2str(k2),'color','red'); dio = digitalio('parallel','lpt1'); lines = addline(dio,0:7,0,'out'); putvalue(dio,q);
putvalue(dio,qq); putvalue(dio,w); putvalue(dio,ww); putvalue(dio,e); putvalue(dio,ee); putvalue(dio,r); putvalue(dio,rr); if q<=160
q=170,qq=qq-1; end
if w<=128
w=138,ww=ww-1; end
if e<=176
84 if r<=144
r=154,rr=rr-1; end
pause(1); k1=k1-1; k2=k2-1; k3=k3-1; q=q-1; w=w-1; e=e-1; r=r-1; end
fnplt(circle1,'-',5,'black'), fnplt(circle2,'-',5,'black'), fnplt(circle3,'-',5,'r'), fnplt(circle10,'-',5,'black'), fnplt(circle11,'-',5,'y'), fnplt(circle12,'-',5,'black'), fnplt(circle4,'-',5,'black'), fnplt(circle5,'-',5,'y'), fnplt(circle6,'-',5,'black'), fnplt(circle7,'-',5,'black'), fnplt(circle8,'-',5,'black'), fnplt(circle9,'-',5,'r'),
dio = digitalio('parallel','lpt1'); lines = addline(dio,0:7,0,'out'); putvalue(dio,[1 0 0 0 1 1 0 0]); putvalue(dio,[0 1 0 0 1 0 0 0]); putvalue(dio,[0 1 0 0 0 0 0 0]); putvalue(dio,[1 0 0 0 0 1 0 0]); f=m;
g=n; h=o; i=p; k1=h;
85 k5=g+1+h+1+i+1+2-1-(g+1);
r=176+S4; rr=240+P4; q=144+S5; qq=208+P5; w=143; ww=239; e=191; ee=255;
fnplt(rsmak('circle',0.5,[18 16.8]),'-',10,'black'); fnplt(rsmak('circle',0.5,[18 16.8]),'-',10,'black'); fnplt(rsmak('circle',0.5,[3 16]),'-',10,'black'); fnplt(rsmak('circle',0.5,[3 16]),'-',10,'black'); fnplt(rsmak('circle',0.5,[22 8.5]),'-',10,'black'); fnplt(rsmak('circle',0.5,[22 8.5]),'-',10,'black'); fnplt(rsmak('circle',0.5,[5.8 8]),'-',10,'black'); fnplt(rsmak('circle',0.5,[5.8 8]),'-',10,'black'); text(22,8.5,int2str(k5),'color','red');
text(5.8,8,int2str(k4),'color','red'); dio = digitalio('parallel','lpt1'); lines = addline(dio,0:7,0,'out'); putvalue(dio,r);
putvalue(dio,rr); putvalue(dio,q); putvalue(dio,qq); putvalue(dio,w); putvalue(dio,ww); putvalue(dio,e); putvalue(dio,ee); pause(1)
%%%%%%%%%%%%%jalur3%%%%%%%%%%%%%% fnplt(circle1,'-',5,'black'),
86 fnplt(circle5,'-',5,'black'),
fnplt(circle6,'-',5,'black'), fnplt(circle7,'-',5,'black'), fnplt(circle8,'-',5,'black'), fnplt(circle9,'-',5,'r'),
dio = digitalio('parallel','lpt1'); lines = addline(dio,0:7,0,'out'); putvalue(dio,[1 0 0 0 1 1 0 0]); putvalue(dio,[1 0 0 0 1 0 0 0]); putvalue(dio,[0 0 1 0 0 0 0 0]); putvalue(dio,[1 0 0 0 0 1 0 0]); f=m;
g=n; h=o; i=p; R=10;
P1=floor(k1/R); S1=k1-(P1*R); P2=floor(k2/R); S2=k2-(P2*R); P3=floor(k3/R); S3=k3-(P3*R); q=160+S2; qq=192+P2; w=128+S3; ww=224+P3; e=176+S1; ee=240+P1; r=144+S1; rr=208+P1; k1=h;
k2=h+1+i+1+1-1; k3=h+1+i+1+f+1+2-1; hh=h+1;
for n=1:hh
87
fnplt(rsmak('circle',0.5,[18 16.8]),'-',10,'black'); fnplt(rsmak('circle',0.5,[3 16]),'-',10,'black'); fnplt(rsmak('circle',0.5,[3 16]),'-',10,'black'); fnplt(rsmak('circle',0.5,[5.8 8]),'-',10,'black'); fnplt(rsmak('circle',0.5,[5.8 8]),'-',10,'black'); text(22,8.5,int2str(k2),'color','red');
text(18,16.8,int2str(k3),'color','red'); text(3,16,int2str(k1),'color','green'); text(5.8,8,int2str(k1),'color','red'); dio = digitalio('parallel','lpt1'); lines = addline(dio,0:7,0,'out'); putvalue(dio,q);
putvalue(dio,qq); putvalue(dio,w); putvalue(dio,ww); putvalue(dio,e); putvalue(dio,ee); putvalue(dio,r); putvalue(dio,rr); if q<=160
q=170,qq=qq-1; end
if w<=128
w=138,ww=ww-1; end
if e<=176
e=186,ee=ee-1; end
if r<=144
r=154,rr=rr-1; end
88 r=r-1;
end
fnplt(circle1,'-',5,'black'), fnplt(circle2,'-',5,'black'), fnplt(circle3,'-',5,'r'), fnplt(circle10,'-',5,'black'), fnplt(circle11,'-',5,'black'), fnplt(circle12,'-',5,'r'), fnplt(circle4,'-',5,'black'), fnplt(circle5,'-',5,'y'), fnplt(circle6,'-',5,'black'), fnplt(circle7,'-',5,'black'), fnplt(circle8,'-',5,'y'), fnplt(circle9,'-',5,'black'), dio = digitalio('parallel','lpt1'); lines = addline(dio,0:7,0,'out'); putvalue(dio,[1 0 0 0 1 1 0 0]); putvalue(dio,[1 0 0 0 1 0 0 0]); putvalue(dio,[0 1 0 0 0 0 0 0]); putvalue(dio,[0 1 0 0 0 1 0 0]); f=m;
g=n; h=o; i=p; k1=i;
k2=h+1+i+1+1-1; k3=h+1+i+1+f+1+2-1; k4=h+1+i+1+1-1-(h+1); k5=h+1+i+1+f+1+2-1-(h+1); q=160+S4;
qq=192+P4; w=128+S5; ww=224+P5; e=191; ee=255; r=159; rr=223;
89 fnplt(rsmak('circle',0.5,[3 16]),'-',10,'black'); fnplt(rsmak('circle',0.5,[5.8 8]),'-',10,'black'); fnplt(rsmak('circle',0.5,[5.8 8]),'-',10,'black'); fnplt(rsmak('circle',0.5,[22 8.5]),'-',10,'black'); fnplt(rsmak('circle',0.5,[22 8.5]),'-',10,'black'); fnplt(rsmak('circle',0.5,[18 16.8]),'-',10,'black'); fnplt(rsmak('circle',0.5,[18 16.8]),'-',10,'black'); text(22,8.5,int2str(k4),'color','red');
text(18,17,int2str(k5),'color','red'); dio = digitalio('parallel','lpt1'); lines = addline(dio,0:7,0,'out'); putvalue(dio,q);
putvalue(dio,qq); putvalue(dio,w); putvalue(dio,ww); putvalue(dio,e); putvalue(dio,ee); putvalue(dio,r); putvalue(dio,rr); pause(1)
%%%%%%%%%%%%%%%%%jalur4%%%%%%%%%%%%%%%% fnplt(circle1,'-',5,'black'),
90 putvalue(dio,[0 0 1 0 0 1 0 0]);
f=m; g=n; h=o; i=p; k1=i;
k2=i+1+f+1+1-1; k3=i+1+f+1+g+1+2-1; R=10;
P1=floor(k1/R); S1=k1-(P1*R); P2=floor(k2/R); S2=k2-(P2*R); P3=floor(k3/R); S3=k3-(P3*R); q=160+S1; qq=192+P1; w=128+S3; ww=224+P3; e=176+S2; ee=240+P2; r=144+S1; rr=208+P1; ii=i+1; for n=1:ii
fnplt(rsmak('circle',0.5,[22 8.5]),'-',10,'black'); fnplt(rsmak('circle',0.5,[23 8.5]),'-',10,'black'); fnplt(rsmak('circle',0.5,[18 16.8]),'-',10,'black'); fnplt(rsmak('circle',0.5,[18 16.8]),'-',10,'black'); fnplt(rsmak('circle',0.5,[3 16]),'-',10,'black'); fnplt(rsmak('circle',0.5,[3 16]),'-',10,'black'); fnplt(rsmak('circle',0.5,[5.8 8]),'-',10,'black'); fnplt(rsmak('circle',0.5,[5.8 8]),'-',10,'black'); text(22,8.5,int2str(k1),'color','red');
91 lines = addline(dio,0:7,0,'out');
putvalue(dio,q); putvalue(dio,qq); putvalue(dio,w); putvalue(dio,ww); putvalue(dio,e); putvalue(dio,ee); putvalue(dio,r); putvalue(dio,rr); if q<=160
q=170,qq=qq-1; end
if w<=128
w=138,ww=ww-1; end
if e<=176
e=186,ee=ee-1; end
if r<=144
r=154,rr=rr-1; end
pause(1); k1=k1-1; k2=k2-1; k3=k3-1; q=q-1; w=w-1; e=e-1; r=r-1; end
92 fnplt(circle6,'-',5,'r'),
fnplt(circle7,'-',5,'black'), fnplt(circle8,'-',5,'y'), fnplt(circle9,'-',5,'black'), dio = digitalio('parallel','lpt1'); lines = addline(dio,0:7,0,'out'); putvalue(dio,[0 1 0 0 1 1 0 0]); putvalue(dio,[1 0 0 0 1 0 0 0]); putvalue(dio,[1 0 0 0 0 0 0 0]); putvalue(dio,[0 1 0 0 0 1 0 0]); f=m;
g=n; h=o; i=p; k1=i;
k2=i+1+f+1+1-1; k3=i+1+f+1+g+1+2-1; k4=i+1+f+1+1-1-(i+1); k5=i+1+f+1+g+1+2-1-(i+1); R=10;
P4=floor(k4/R); S4=k4-(P4*R); P5=floor(k5/R); S5=k2-(P5*R); w=144+S4; ww=208+P4; r=144+S5; rr=208+P5; e=185; ee=240; q=177; qq=207; r=159; rr=223;
93
fnplt(rsmak('circle',0.5,[18 16.8]),'-',10,'black'); fnplt(rsmak('circle',0.5,[18 16.8]),'-',10,'black'); fnplt(rsmak('circle',0.5,[3 16]),'-',10,'black'); fnplt(rsmak('circle',0.5,[3 16]),'-',10,'black'); text(18,16.8,int2str(k4),'color','red');
text(3,16,int2str(k5),'color','red'); dio = digitalio('parallel','lpt1'); lines = addline(dio,0:7,0,'out'); putvalue(dio,w);
putvalue(dio,ww); putvalue(dio,e); putvalue(dio,ee); putvalue(dio,q); putvalue(dio,qq); putvalue(dio,r); putvalue(dio,rr); pause(1)
94