Arduino ile L298N ve HC-SR04 kullanarak engelden kaçan araba yapıyoruz.

Arduino engelden kaçan araba yapımı

Proje için gerekli malzemeler

  • Arduino uno r3
  • Jumper kablolar
  • L298N motor sürücü kartı
  • 4WD araba seti
  • HC-SR04 mesafe sensörü ve tutucu aparat
  • Servo motor (sg90)
  • 9V pil ve 4 adet 2700mah GP REcyko+ kalem pil (eğer lipo pil kullanacaksanız bir tane 7.4V 1100mah veya üstü yeterli olacaktır.)
  • Servo.h ve NewPing.h kütüphaneleri

Nasıl çalışır ?

L298N motor sürücü modülü hem iki adet motoru hem de 4 adet motoru çalıştırabilmektedir. Projemizde dört adet motoru bu modül ile süreceğiz. OUT1 ve OUT2 bağlantılarını sağ tarafta bulunan motorlar için, OUT3 ve OUT4 bağlantıları sol tarafta bulunan motorlara bağlayacağız.

Sol motorların kırmızı renkli kablolarını OUT1'e, siyah renkli kablolarını OUT2'ye takmamızın sebebi tekerleklerin aynı yönde hareket edebilmeleri içindir. Kırmızı kablo (+), siyah kablolar (-)'dir. Sağ motorlar içinde aynı bağlantı yapılmıştır.

Devre şema

Arduino kodları

#include <Servo.h>
#include <NewPing.h>

//L298N kontrolleri
const int SolMotorileri = 5;
const int SolMotorgeri = 4;
const int SagMotorileri = 7;
const int SagMotorgeri = 6;

//mesafe sensörü
#define trig_pin A1 //analog input 1
#define echo_pin A2 //analog input 2

#define maksimum_mesafe 200
boolean ileriGit = false;
int mesafe = 100;

NewPing sonar(trig_pin, echo_pin, maksimum_mesafe);
Servo servo_motor;

void setup(){
pinMode(SagMotorileri, OUTPUT);
pinMode(SolMotorileri, OUTPUT);
pinMode(SolMotorgeri, OUTPUT);
pinMode(SagMotorgeri, OUTPUT);

servo_motor.attach(10);
servo_motor.write(115);
delay(2000);
mesafe = readPing();
delay(100);
mesafe = readPing();
delay(100);
mesafe = readPing();
delay(100);
mesafe = readPing();
delay(100);
}

void loop(){
int mesafeSag = 0;
int mesafeSol = 0;
delay(50);

if (mesafe <= 20){
   moveStop();
   delay(300);
   moveBackward();
   delay(400);
   moveStop();
   delay(300);
   mesafeSag = lookRight();
   delay(300);
   mesafeSol = lookLeft();
   delay(300);
     if (mesafe >= mesafeSol){
        turnRight();
        moveStop();  }
     else  {
        turnLeft();
        moveStop();  }
}
else
{
moveForward();
}
mesafe = readPing();
}

int lookRight() {
servo_motor.write(50);
delay(500);
int mesafe = readPing();
delay(100);
servo_motor.write(115);
return mesafe;
}

int lookLeft() {
servo_motor.write(170);
delay(500);
int mesafe = readPing();
delay(100);
servo_motor.write(115);
return mesafe;
}

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

void moveStop(){
digitalWrite(SagMotorileri, LOW);
digitalWrite(SolMotorileri, LOW);
digitalWrite(SagMotorgeri, LOW);
digitalWrite(SolMotorgeri, LOW);
}

void moveForward(){
if(!ileriGit)  {
ileriGit = true;
digitalWrite(SolMotorileri, HIGH);
digitalWrite(SagMotorileri, HIGH);
digitalWrite(SolMotorgeri, LOW);
digitalWrite(SagMotorgeri, LOW); 
}
}

void moveBackward(){
ileriGit = false;
digitalWrite(SolMotorgeri, HIGH);
digitalWrite(SagMotorgeri, HIGH);
digitalWrite(SolMotorileri, LOW);
digitalWrite(SagMotorileri, LOW);
}

void turnRight(){
digitalWrite(SolMotorileri, HIGH);
digitalWrite(SagMotorgeri, HIGH);
digitalWrite(SolMotorgeri, LOW);
digitalWrite(SagMotorileri, LOW);

delay(700);

digitalWrite(SolMotorileri, HIGH);
digitalWrite(SagMotorileri, HIGH);
digitalWrite(SolMotorgeri, LOW);
digitalWrite(SagMotorgeri, LOW);
}

void turnLeft(){
digitalWrite(SolMotorgeri, HIGH);
digitalWrite(SagMotorileri, HIGH);
digitalWrite(SolMotorileri, LOW);
digitalWrite(SagMotorgeri, LOW);

delay(700);

digitalWrite(SolMotorileri, HIGH);
digitalWrite(SagMotorileri, HIGH);
digitalWrite(SolMotorgeri, LOW);
digitalWrite(SagMotorgeri, LOW);
}
  • Yazı Etiketleri :
  • engelden kaçan robot
  • obstacle avoiding car
IOS 15'in 10 yeni özelliği
Yazıyı Oku

IOS 15'in 10 yeni özelliği

WEBP dosyalarını Adobe Photoshop ile açma, oluşturma
Yazıyı Oku

WEBP dosyalarını Adobe Photoshop ile açma, oluşturma

Windows 10 için ücretsiz Windows File Recovery programı
Yazıyı Oku

Windows 10 için ücretsiz Windows File Recovery programı

Arduino uzaktan kumanda ve IR receiver ile servo motor kontrolü
Yazıyı Oku

Arduino uzaktan kumanda ve IR receiver ile servo motor kontrolü

Arduino LCD ekranda kayan yazı yapalım
Yazıyı Oku

Arduino LCD ekranda kayan yazı yapalım

4WD bluetooth kontrollü araba yapımı - arduino
Yazıyı Oku

4WD bluetooth kontrollü araba yapımı - arduino

Menu