Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 11 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
11
Dung lượng
529,5 KB
Nội dung
Hướng dẫn dò line cho Omni-directional Robot SArduino Training 2019 cho THPT Saigon Institute of Technology Biên soạn: Phương Đỗ - 2019 Nhắc lại sơ đồ bố trí cảm biến 90° U5 U4 U3 U6 U2 U7 U1 U0 U8 0° U15 U9 U14 U10 U11 *Robot nhìn từ xuống Bánh 180° U12 U13 270° Đề xuất phương án bám line (Lưu ý phương án sau phương án đề xuất, thí sinh khuyến khích sáng tạo phương thức bám line cho riêng để đạt hiệu cao nhất): • Robot xuất phát theo góc thí sinh tự chọn • Từ góc đó, ta xét +60 độ -60 độ để kiểm tra cảm biến gần (hướng đi) nhất, cảm biến nằm line (Kiểm tra dựa giá trị Analog đọc vào) • Chọn hướng góc trung bình tổng góc tương ứng với cảm biến maxAngle angle (cần đi) angle (hiện tại) +60 -60 minAngle *Lưu ý: Pseudo code chương trình đề xuất, người dùng cần điều chỉnh cú pháp chỉnh sửa cho phù hợp với ngơn ngữ sử dụng Pseudo Code (Code giả)* //angle góc robot di chuyển //minAngle 60 độ phái phải angle //maxAngle 60 độ phía trái angle //Lưu ý chiều dương góc chiều ngược chiều kim đồng hồ minAngle = angle - 60; maxAngle = angle + 60; //Chú ý cần chia trường hợp để xét //Trường hợp 1: minAngle < maxAngle //Trường hợp 2: minAngle > maxAngle *Lưu ý: Pseudo code chương trình đề xuất, người dùng cần điều chỉnh cú pháp chỉnh sửa cho phù hợp với ngôn ngữ sử dụng Pseudo Code (Code giả)* Trường hợp Trường hợp *Lưu ý: Pseudo code chương trình đề xuất, người dùng cần điều chỉnh cú pháp chỉnh sửa cho phù hợp với ngôn ngữ sử dụng Pseudo Code (Code giả)* //Nếu giá trị đọc từ cảm biến cho biết cảm biến nằm khoảng từ //minAngle đến maxAngle, nằm khu vực màu đen → Thì hướng //cần trung bình góc tương ứng //của cảm biến Ví dụ: -Góc angle(hiện tại), cảm biến nằm màu Đen, vùng +- 60 độ 1,2,3 tương ứng 337.5°, 315°, 292.5° maxAngle angle (cần đi) angle (hiện tại) +60 -60 minAngle →Góc cần là: angle(cần đi) = (337.5 + 315 + 292.5) / = 315 Nâng cao: Calibrate cảm biến • Đặt vấn đề: -Các cảm biến khác đọc giá trị khơng hồn tồn giống vị trí Ví dụ có cảm biến sensor1 sensor2 (Do vấn đề sản xuất): sensor1Val = analogRead(sensorPin1); sensor2Val = analogRead(sensorPin2); sensor1Val = 512 sensor2Val = 518 -Tuy đọc vị trí giá trị lại có chênh lệch nhỏ Phương pháp - Người dùng cần tìm giá trị nhỏ (minSensorVal) giá trị lớn (maxSensorVal) mà cảm biến đọc khoảng thời gian định sẵn (ví dụ giây) Sau đưa khoảng giá trị (Ví dụ: 0-1023) cách sử dụng hàm map() - Link tham khảo: https://www.arduino.cc/en/Tutorial/Calibration Ví dụ mơ tả Cảm biến Cảm biến Tùy vào điều kiện sản xuất cảm biến mà cảm biến đọc giá trị từ 20 đến 1020, cảm biến đọc từ 25 đến 1010 Do đó, xét ngưỡng 511.5 (>511.5 màu đen maxSensorVal) { maxSensorVal = sensorValue;} } 10 *Lưu ý: Pseudo code chương trình đề xuất, người dùng cần điều chỉnh cú pháp chỉnh sửa cho phù hợp với ngơn ngữ sử dụng Pseudo code (Code giả)* loop{ //Trong chương trình (Main/loop): //Đọc giá trị cảm biến sensorVal = analogRead(sensorPin); //Đưa giá trị tỉ lệ tương ứng khoảng 0-255 để đảm bảo //tất cảm biến tương đồng sensorVal = map(sensorVal, minSensorVal, maxSensorVal, 0, 1023); //Trường hợp có giá trị nằm khoảng minSensorVal maxSensorVal //đã calibrate ban đầu: Dùng hàm constrain(0, 1023) để giá trị nhỏ 0, lớn 10123 1023 sensorVal = constrain(sensorVal, 0, 1023); } 11 ... maxAngle *Lưu ý: Pseudo code chương trình đề xuất, người dùng cần điều chỉnh cú pháp chỉnh sửa cho phù hợp với ngơn ngữ sử dụng Pseudo Code (Code giả)* Trường hợp Trường hợp *Lưu ý: Pseudo code chương... biến nằm line (Kiểm tra dựa giá trị Analog đọc vào) • Chọn hướng góc trung bình tổng góc tương ứng với cảm biến maxAngle angle (cần đi) angle (hiện tại) +60 -60 minAngle *Lưu ý: Pseudo code chương... xuống Bánh 180° U12 U13 270° Đề xuất phương án bám line (Lưu ý phương án sau phương án đề xuất, thí sinh khuyến khích sáng tạo phương thức bám line cho riêng để đạt hiệu cao nhất): • Robot xuất