This is an old revision of the document!
Autor: Cojocaru Mihai-Vladimir
Grupa: 1220FA
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.
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
* #include <NewPing.h> → pentru senzorul cu ultrasunete
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.
#include <NewPing.h>
const int LF = 6; const int LB = 7; const int RF = 5; const int RB = 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(RF, OUTPUT); pinMode(LF, OUTPUT); pinMode(LB, OUTPUT); pinMode(RB, 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(RF, LOW); digitalWrite(LF, LOW); digitalWrite(RB, LOW); digitalWrite(LB, LOW);
}
void moveForward(){
if(!check){
check=true; digitalWrite(LF, HIGH); digitalWrite(RF, HIGH); digitalWrite(RB, LOW); digitalWrite(LB, LOW); }
}
void moveBackward(){
check=false;
digitalWrite(LF, LOW); digitalWrite(RF, LOW); digitalWrite(RB, HIGH); digitalWrite(LB, HIGH);
}
void turnRight(){
digitalWrite(LF, HIGH); digitalWrite(RB, HIGH); digitalWrite(LB, LOW); digitalWrite(RF, LOW); delay(500); digitalWrite(LF, HIGH); digitalWrite(RF, HIGH); digitalWrite(LB, LOW); digitalWrite(RB, LOW);
}
void turnLeft(){
digitalWrite(LB, HIGH); digitalWrite(RF, HIGH); digitalWrite(LF, LOW); digitalWrite(RB, LOW);
delay(500); digitalWrite(LF, HIGH); digitalWrite(RF, HIGH); digitalWrite(LB, LOW); digitalWrite(RB, LOW);
}