課程目標(biāo)
- 學(xué)習(xí)走迷宮的右手法則的應(yīng)用
- 根據(jù)算法邏輯實(shí)現(xiàn)走迷宮功能
- 能根據(jù)場(chǎng)地實(shí)際要求進(jìn)行車輛調(diào)試
相關(guān)知識(shí)
**機(jī)器人迷宮項(xiàng)目:**是常見的機(jī)器人競(jìng)賽項(xiàng)目,在一個(gè)搭建好的迷宮場(chǎng)景內(nèi),設(shè)計(jì)機(jī)器人,實(shí)現(xiàn)從入口順利抵達(dá)出口,根據(jù)完成時(shí)間的長(zhǎng)短來進(jìn)行評(píng)分。
右手法則: 針對(duì)有墻壁的迷宮,只要順著墻壁走,遇到可以轉(zhuǎn)向的口子始終向右,轉(zhuǎn)向失敗再向右轉(zhuǎn)到下一個(gè)可以走的方向,這種方法只對(duì)樹形迷宮有效。對(duì)于有循環(huán)的迷宮就需要設(shè)計(jì)更加智能化的機(jī)器人才能實(shí)現(xiàn)。
**紅外接近傳感器:**紅外接近傳感器是一種集發(fā)射與接收于一體的光電開關(guān)傳感器。當(dāng)發(fā)出的紅外光碰撞到范圍內(nèi)的目標(biāo)時(shí),它會(huì)反射到光電二極管上,從而實(shí)現(xiàn)監(jiān)測(cè)判斷。
電路搭建
所需材料
ArduinoUNO * 1
紅外接近傳感器 * 3
上節(jié)課的車輛結(jié)構(gòu) * 1
LED * 1
杜邦線若干
電路連接
程序編寫
練習(xí)一:紅外接近傳感器控制開關(guān)燈
手靠近傳感器時(shí),LED燈開,離開傳感器時(shí),LED燈關(guān)。
圖形化方式:
讀取9號(hào)管腳上的信號(hào)值為低電平,說明有障礙物靠近,這時(shí)候點(diǎn)亮2號(hào)管腳上的LED。
代碼方式:
/* 項(xiàng)目名稱:紅外控制開關(guān)燈
* 項(xiàng)目時(shí)間:2022.04.07
* 項(xiàng)目作者:MRX
*/
int SensorPin = 9;
int LedPin = 2;
void setup() {
pinMode(SensorPin,INPUT);
pinMode(LedPin,OUTPUT);
}
void loop() {
if(digitalRead(SensorPin)){
digitalWrite(LedPin,LOW);
}
else{
digitalWrite(LedPin,HIGH);
}
}
練習(xí)二:沿墻面前進(jìn)的小車
使用一個(gè)傳感器,讓小車能夠沿著墻面前行,效果如下:
原理分析:
右手法則邏輯分析。
電路接線:
圖形化方式:
代碼方式:
/* 項(xiàng)目名稱:小車貼墻走
* 項(xiàng)目時(shí)間:2022.04.07
* 項(xiàng)目作者:MRX
*/
int IN1 = 2; // IN1 connected to pin 4
int IN2 = 4;
int ENA = 3;
int IN3 = 6; // IN3 connected to pin 6
int IN4 = 7;
int ENB = 5;
int value = 255; // the duty cycle
const int SensorPin = 10;
void Forward() {
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(ENA,value);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(ENB,value);
}
void Back() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,value);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,value);
}
void Right() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,value);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,0);
}
void Left() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,0);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,value);
}
void Stop() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
analogWrite(ENA,0);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
analogWrite(ENB,0);
}
void setup(){
Serial.begin(9600);
for (int i = 2;i <= 7;i++){
pinMode(i, OUTPUT);
}
pinMode(SensorPin,INPUT);
}
void loop(){
if (digitalRead(SensorPin) == LOW) {
Left();
} else{
Right();
}
}
練習(xí)三:走迷宮小車
編程控制小車沿著障礙物行走,效果如下:
圖形化方式:
代碼方式:
項(xiàng)目所涉及到的延時(shí)及電機(jī)正反轉(zhuǎn),都要根據(jù)自己的接線來進(jìn)行調(diào)整。
/* 項(xiàng)目名稱:走迷宮
* 項(xiàng)目時(shí)間:2022.04.07
* 項(xiàng)目作者:MRX
*/
int IN1 = 2; // IN1 connected to pin 4
int IN2 = 4;
int ENA = 3;
int IN3 = 6; // IN3 connected to pin 6
int IN4 = 7;
int ENB = 5;
int value = 255; // the duty cycle
void Forward() {
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(ENA,value);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(ENB,value);
}
void Back() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,value);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,value);
}
void Right() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,value);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,0);
}
void Left() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,0);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,value);
}
void Stop() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
analogWrite(ENA,0);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
analogWrite(ENB,0);
}
void TurnLeft() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,100);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(ENB,100);
}
void setup(){
for (int i = 2;i <= 7;i++){
pinMode(i, OUTPUT);
}
for (int i = 8;i <= 10;i++){
pinMode(i,INPUT);
}
}
void loop(){
if (digitalRead(8) == LOW) {
TurnLeft();
delay(500);
} else if (digitalRead(9) == LOW) {
TurnLeft();
delay(200);
} else if (digitalRead(10) == LOW) {
Left();
} else {
Right();
}
}
-
機(jī)器人
+關(guān)注
關(guān)注
210文章
28129瀏覽量
205890 -
led燈
+關(guān)注
關(guān)注
22文章
1592瀏覽量
107768 -
紅外傳感器
+關(guān)注
關(guān)注
9文章
512瀏覽量
47498 -
光電二極管
+關(guān)注
關(guān)注
10文章
398瀏覽量
35885 -
Arduino
+關(guān)注
關(guān)注
187文章
6461瀏覽量
186524
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論