Vẽ biên dạng 2D của vật tập hợp các tọa độ x,y nhận được... Những khó khăn gặp phải trong quá trình thực hiện đề tài: * Phần cứng: - Hệ Pan-Tilt còn là 1 đề tài mới mẻ, cho nên còn gặp
Trang 1Chương 4: Giao diện chương trình
2.2 Chương trình:
a Lưu đồ giải thuật:
Trang 22 Code chương trình:
ComPort************************
eventdata, handles)
try
global s;global hand;global comport;
if (open == 0)
Kết nối
Bắt đầu
Chọn thông số cho COM port
S
Đ Nhận dữ liệu: giá trị tọa độ 0x, Oy
từ VĐK gởi lên
Xử lý dữ liệu: cắt chuỗi, chuyển thành số
Vẽ biên dạng 2D của vật (tập hợp các tọa độ x,y nhận được).
Kết thúc
Trang 3s = serial(comport);
s.BytesAvailableFcnCount = 1;
s.BytesAvailableFcnMode =
'terminator';
s.BytesAvailableFcn =
@BytesAvailable_Callback;
% s.TimeOut = 10;
fopen(s);
open = 1;
set(hand.btnConnect,'string','Disconnect');
set(hand.lblStatus,'string','Connected '); else
set(hand.btnConnect,'string','Connect');
set(hand.lblStatus,'string','Not Connected ');
open = 0;
fclose(s);
clear s;
end
catch
set(hand.lblStatus,'string','Connection
Error ');
msgbox('ComPort not available! Try again!','Connection Error','error');
end
//**********chương trình nhận dữ liệu từ VĐK và vẽ biên dạng*********
Trang 4% axes(hand.axes1);
set(hand.lblStatus,'string','Scanning '); string = fscanf(obj);
str = str2num(string);
if (str(1) == 2012)
j2 = str(2); %top
j1 = str(3); %bottom
i2 = str(4); %right
i1 = str(5); %left
% gioi han 2 truc x,y
xlim('manual');
ylim('manual');
if ((i2-i1)> (j2-j1))
xlim([(i1-20) (i2+20)]);
ylim([(i1-20) (i2+20)]);
else
xlim([(j1-20) (j2+20)]);
ylim([(j1-20) (j2+20)]);
end
% ve khung bien dang
% ve top
x = i1:0.05:i2;
line(x,j1,'Color','r','LineWidth',10);
% ve bottom
x = i1:0.05:i2;
line(x,j2,'Color','r','LineWidth',10); % ve left
y = j1:0.05:j2;
line(i1,y,'Color','r','LineWidth',10); % ve right
Trang 5y = j1:0.05:j2;
line(i2,y,'Color','r','LineWidth',10); else
x = str(1);
k=num2str(x);
y = str(2);
m=num2str(y);
set(hand.tbxRxx,'string',k);
set(hand.tbxTx,'string',m);
hold all;
plot(x,y,'*','LineWidth',2,
'MarkerEdgeColor','k',
'MarkerFaceColor','g',
'MarkerSize',2)
% plot(x,y);
% hold off;
end
D Những khó khăn gặp phải trong quá trình thực hiện đề
tài:
* Phần cứng:
- Hệ Pan-Tilt còn là 1 đề tài mới mẻ, cho nên còn gặp chút
khó khăn lúc đầu trong việc thiết kế 1 hệ Pan-Tilt
- Cảm biến siêu âm SRF04 có góc phát tương đối lớn, cho
nên việc quét biên dạng vật gặp khó khăn ở khâu lấy chính xác
tọa độ điểm đang quét Chúng em đã khắc phục bớt vấn đề này
(dùng ống nhựa gắn vào 2 đầu bộ phát - thu để giảm góc quét
xuống)
* Phần mềm:
Mới đầu nghiên cứu MatLab nên còn gặp nhiều vấn đề khó
khăn (lập trình thiết kế giao diện GUIDE, giao tiếp cổng COM
giữa VĐK với MatLab…) Tuy nhiên sau khi tìm hiểu thì đã giải
quyết được vấn đề, Đây là 1 phần mềm thực sự mạnh
Trang 6E Hướng phát triển của đề tài:
- Vấn đề quét biên dạng còn nhiều sai xót (do góc quét rộng,
hệ Pan-Tilt chưa thực sự vững chắc) Có thể dùng 1 cảm biến khác có góc quét nhỏ như: cảm biến laze…thì việc quét biên dạng 2D của vật sẽ chính xác hơn
- Có thể phát triển đề tài này để quét xác định hình dạng 3D của vật
hết