|
主控板
|
Basra主控板(兼容Arduino Uno)?
|
|
擴展板
|
Bigfish2.1擴展板?
|
|
傳感器
|
觸須傳感器
|
|
近紅外傳感器
|
|
|
電池
|
7.4V鋰電池
|
下面提供一個實現掃地機器人在行進過程中避障并清掃垃圾的參考程序(sketch_sep14a.ino):
/*------------------------------------------------------------------------------------
版權說明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.
Distributed under MIT license.See file LICENSE for detail or copy at
https://opensource.org/licenses/MIT
by 機器譜 2023-09-14 https://www.robotway.com/
------------------------------*/
#include <Servo.h>
Servo left_wheel; // 左輪
Servo right_wheel; // 右輪
#define forward_speed_left 60 // 小車前進時,左輪速度
#define forward_speed_right 120 // 小車前進時,右輪速度
#define back_speed_left 120 // 小車后退時,左輪速度
#define back_speed_right 60 // 小車后退時,右輪速度
#define turnleft_speed_left 120 // 小車左轉時,左輪速度
#define turnleft_speed_right 120 // 小車左傳時,右輪速度
#define turnright_speed_left 60 // 小車右轉時,左輪速度
#define turnright_speed_right 60 // 小車右轉時,右輪速度
#define stop_left 90 // 小車停止時,左輪速度
#define stop_right 90 // 小車停止時,右輪速度
#define obstacle_threshold 500 // 觸須傳感器閾值
#define ir_threshold 800 // 近紅外傳感器閾值
int left_obstacle_sensor; // 左側觸須傳感器
int right_obstacle_sensor; // 右側觸須傳感器
int ir_sensor; // 近紅外傳感器
void setup() {
delay(50);
Serial.begin(9600);
left_wheel.attach(3); // 定義左右輪引腳
right_wheel.attach(4);
pinMode(A0, INPUT); // 左邊觸須傳感器接口
pinMode(A2, INPUT); // 右邊觸須傳感器接口
pinMode(A3, INPUT); // 前面近紅外傳感器接口
}
void loop() {
left_obstacle_sensor = analogRead(A0); // 讀取左邊觸須傳感器值
right_obstacle_sensor = analogRead(A2); // 讀取右邊觸須傳感器值
ir_sensor = analogRead(A3); // 讀取近紅外傳感器值
// 如果左邊傳感器檢測到障礙物,執行后退并向右轉操作
if (left_obstacle_sensor > obstacle_threshold) {
backRight();
}
// 如果右邊傳感器檢測到障礙物,執行后退并向左轉操作
else if (right_obstacle_sensor > obstacle_threshold) {
backLeft();
}
// 如果前面近紅外傳感器檢測到障礙物,執行后退操作
else if (ir_sensor > ir_threshold) {
back();
}
// 如果都沒有檢測到障礙物,執行前進操作
else {
forward();
}
}
// 小車前進
void forward() {
left_wheel.write(forward_speed_left);
right_wheel.write(forward_speed_right);
}
// 小車后退
void back() {
left_wheel.write(back_speed_left);
right_wheel.write(back_speed_right);
}
// 小車后退左轉
void backLeft() {
left_wheel.write(back_speed_left);
right_wheel.write(turnleft_speed_right);
}
// 小車后退右轉
void backRight() {
left_wheel.write(turnright_speed_left);
right_wheel.write(back_speed_right);
}
// 小車停止
void stop() {
left_wheel.write(stop_left); // 停止
right_wheel.write(stop_right); // 停止
}
本樣機有一些簡單的擴展案例,如下圖所示將舵機更換為直流電機:
資料內容:
①程序源代碼
②樣機3D文件
資料下載地址:掃地機器人