Table of Contents

Robot 4WD care evita obstacolele

Autor: Cojocaru Mihai-Vladimir

Grupa: 1220FA

Introducere

Proiectul consta intr-o masina cu 4 motoare care este capabila sa identifice obstacolele din fata sa si sa le ocoleasca, pentru a evita contactul cu acestea.

Descriere generală

Schema bloc

Hardware Design

Lista de componente:
 -Place de dezvoltare Arduino Uno R3
 -Sasiu robot 4WD
 -4 Roti
 -4 Motoare 5V
 -Modul Driver Motoare L289N
 -Senzor Cu Ultrasunete HC-SR04
 -13 Cabluri De Conectare (10 mama-tata, 3 tata-tata)
 -Suport De 4 Baterii AA

Software Design

* #include <NewPing.h> → pentru senzorul cu ultrasunete

Rezultatul final

DEMO

Download

Jurnal

Etape:
-21/04/2022: Incarcarea primului Milestone
-27/04/2022: Asamblarea proiectului
-28/04/2022: Crearea codului
-26/05/2022: Finalizare proiect: filmat, fotografiat, documentatie.

Cod

#include <NewPing.h>

const int RF = 6; const int RB = 7; const int LF = 5; const int LB = 4;

#define trig 12 #define echo 13

#define max_dist 200 boolean check = false; int dist = 100;

NewPing sonar(trig, echo, max_dist);

void setup(){

pinMode(LF, OUTPUT);
pinMode(RF, OUTPUT);
pinMode(RB, OUTPUT);
pinMode(LB, OUTPUT);

dist = readPing();
delay(100);

}

void loop(){

moveForward();

if (dist <= 35){
  moveStop();
  delay(300);
  moveBackward();
  delay(700);
  moveStop();
  delay(300);
  int distance = look();
  if (dist >= distance){
    turnRight();
    moveStop();
  }
else{
  moveForward(); 
}

}

dist = readPing();

}

int look(){

int distance = readPing();
delay(100);
return distance;
delay(100);

}

int readPing(){

delay(70);
int cm = sonar.ping_cm();
if (cm==0){
  cm=250;
}
return cm;

}

void moveStop(){

digitalWrite(LF, LOW);
digitalWrite(RF, LOW);
digitalWrite(LB, LOW);
digitalWrite(RB, LOW);

}

void moveForward(){

if(!check){
  check=true;
  
  digitalWrite(RF, HIGH);
  digitalWrite(LF, HIGH);
  digitalWrite(LB, LOW);
  digitalWrite(RB, LOW); 
}

}

void moveBackward(){

check=false;
  digitalWrite(RF, LOW);
  digitalWrite(LF, LOW);
  digitalWrite(LB, HIGH);
  digitalWrite(RB, HIGH); 

}

void turnRight(){

digitalWrite(RF, HIGH);
digitalWrite(LB, HIGH);

digitalWrite(RB, LOW);
digitalWrite(LF, LOW);

delay(500);

digitalWrite(LF, HIGH);
digitalWrite(RF, HIGH);

digitalWrite(LB, LOW);
digitalWrite(RB, LOW);

}

Concluzii

Chiar daca proiectul pe care l-am ales nu este unul dificil pot spune ca am avut ce invata din acest proiect. Am invatat cum sa folosesc driverul L298N cu ajutorul unor videoclipuri de pe Youtube in care se faceau proiecte asemanatoare cu ale mele.

Bibliografie/Resurse

Export to PDF