Arduino Çöp Toplayan Robot

Arduino ile çöp toplayan robot yapımında kullanılan devre şeması ve kodları paylaşmaktayım.

Projenin videosunu kanalımdan izleyebilirsiniz. Videodaki Şema ve yazılım da güncelleme olmuştur. O yüzden şema ve yazılım farklıdır. Videodan sadece çalışma mantığını kavrayınız. Burada bulunan kod ve şema ile defalarca bu robottan yapılmıştır.

Yazılım


#include<Servo.h>
Servo kova_a;
Servo kova_b;
Servo kaldir;
Servo bos;


const byte echo = 4;
const byte trig = 2;
int sure = 0;
int mesafe = 0;
int cop = 0;

#define Hiz 9

#define SolMotorileri 12
#define SolMotorGeri  10
int SagMotorileri = A1;
int SagMotorGeri = A0;


int at = 0;
int in = 100;
int aac = 150;
int akapat = 80;
int bkapat = 100;
int bac = 30;
int arka_ac = 50;
int arka_kapat = 120;
int led = 13;
int buzzer = 8;
void setup() {


  Serial.begin(9600);
  pinMode(buzzer , OUTPUT);
  pinMode(led , OUTPUT);

  pinMode(SolMotorileri, OUTPUT);
  pinMode(SolMotorGeri, OUTPUT);
  pinMode(SagMotorileri, OUTPUT);
  pinMode(SagMotorGeri, OUTPUT);
  pinMode(Hiz, OUTPUT);
  pinMode(echo , INPUT);
  pinMode(trig , OUTPUT);

  kova_a.attach(6);
  kova_b.attach(5);
  kaldir.attach(3);
  bos.attach(11);

  kova_a.write(aac); // aç
  kova_b.write(bac);
  delay(1000);
  kaldir.write(at);
  delay(1000);
  bos.write(arka_kapat);
  delay(1000);

}

void loop() {




  analogWrite(Hiz, 255);
  cizgi();
  if (analogRead(A5) < 150  )
  {
    digitalWrite(SolMotorileri, HIGH);
    digitalWrite(SolMotorGeri, LOW);
    digitalWrite(SagMotorileri, HIGH);
    digitalWrite(SagMotorGeri, LOW);
    bak();
  }



}


int mesafe_olc()
{
  digitalWrite(trig , HIGH);
  delayMicroseconds(1000);
  digitalWrite(trig , LOW);
  sure = pulseIn(echo , HIGH);
  mesafe = (sure / 2) / 28.5 ;
  if (mesafe < 0)
  {
    mesafe = 60;
  }
  return mesafe;
}

void cizgi()
{
  if (analogRead(A5) > 150 ) {
    digitalWrite(led, HIGH);

    digitalWrite(SolMotorileri, LOW);
    digitalWrite(SolMotorGeri, HIGH);
    digitalWrite(SagMotorileri, LOW);
    digitalWrite(SagMotorGeri, HIGH);

    delay(600);
    digitalWrite(SolMotorileri, LOW);
    digitalWrite(SolMotorGeri, LOW);
    digitalWrite(SagMotorileri, LOW);
    digitalWrite(SagMotorGeri, LOW);
    delay(600);
    digitalWrite(SolMotorileri, HIGH);
    digitalWrite(SolMotorGeri, LOW);
    digitalWrite(SagMotorileri, LOW);
    digitalWrite(SagMotorGeri, HIGH);


    delay(300);
    digitalWrite(SolMotorileri, LOW);
    digitalWrite(SolMotorGeri, LOW);
    digitalWrite(SagMotorileri, LOW);
    digitalWrite(SagMotorGeri, LOW);
    delay(600);
  }

  digitalWrite(led, LOW);
}
void bak ()
{ mesafe = mesafe_olc();

  if (mesafe < 15) // engel var
  {
    digitalWrite(SolMotorileri, LOW);
    digitalWrite(SolMotorGeri, LOW);
    digitalWrite(SagMotorileri, LOW);
    digitalWrite(SagMotorGeri, LOW);

    delay(600);
    engel_var();
  }

}

void engel_var ()
{

  Serial.println("engeli aliyor");
  digitalWrite(SolMotorileri, LOW);
  digitalWrite(SolMotorGeri, LOW);
  digitalWrite(SagMotorileri, LOW);
  digitalWrite(SagMotorGeri, LOW);

  delay(500);
  mesafe = mesafe_olc();
  if (mesafe > 24)
  {
    loop();
  }

  for (int t = 0; t < 2; t++)
  {
  digitalWrite(SolMotorileri, LOW);
  digitalWrite(SolMotorGeri, LOW);
  digitalWrite(SagMotorileri, LOW);
  digitalWrite(SagMotorGeri, LOW);
    tone(buzzer, 100);
    delay(100);
    tone(buzzer, 300);
    delay(100);
    tone(buzzer, 200);
    delay(100);
    tone(buzzer, 500);
    delay(100);
    tone(buzzer, 400);
    delay(100);
    tone(buzzer, 700);
    delay(100);
    tone(buzzer, 600);
    mesafe = mesafe_olc();
    delay(100);
    tone(buzzer, 900);
    delay(100);
    mesafe = mesafe_olc();
    tone(buzzer, 800);
    delay(100);
    mesafe = mesafe_olc();
    tone(buzzer, 1000);
    delay(100);
  }
  noTone(buzzer);

  
  while (mesafe < 13 )
  { 
    digitalWrite(SolMotorileri, LOW);
    digitalWrite(SolMotorGeri, HIGH);
    digitalWrite(SagMotorileri, LOW);
    digitalWrite(SagMotorGeri, HIGH);
    mesafe = mesafe_olc();
    if (mesafe > 24)
    {
      loop();
    }
  }

  digitalWrite(SolMotorileri, LOW);
  digitalWrite(SolMotorGeri, LOW);
  digitalWrite(SagMotorileri, LOW);
  digitalWrite(SagMotorGeri, LOW);

  delay(500);


  
  kaldir.write(95);
  delay(1550);
  kova_b.write(bkapat);  kova_a.write(akapat); // kapat sag
  delay(1550);
  kaldir.write(at);//kaldir
  delay(1550);
  kova_a.write(aac);  kova_b.write(bac);   // aç sol
  delay(3000);
  cop++;
  if (cop == 2)
  {
    while (analogRead(A5) < 150 )
    {
      digitalWrite(led, HIGH);
      digitalWrite(SolMotorileri, LOW);
      digitalWrite(SolMotorGeri, HIGH);
      digitalWrite(SagMotorileri, LOW);
      digitalWrite(SagMotorGeri, HIGH);
      delay(5);
      digitalWrite(SolMotorileri, LOW);
      digitalWrite(SolMotorGeri, LOW);
      digitalWrite(SagMotorileri, LOW);
      digitalWrite(SagMotorGeri, LOW);
      delay(1);

      int cizgi_sensor = analogRead(A5);
    }

    digitalWrite(led, LOW);
    bos.write(arka_ac);

    delay(2000);
    digitalWrite(SolMotorileri, HIGH);
    digitalWrite(SolMotorGeri, LOW);
    digitalWrite(SagMotorileri, HIGH);
    digitalWrite(SagMotorGeri, LOW);
    delay(1000);
    digitalWrite(SolMotorileri, LOW);
    digitalWrite(SolMotorGeri, LOW);
    digitalWrite(SagMotorileri, LOW);
    digitalWrite(SagMotorGeri, LOW);
    delay(1000);

    bos.write(arka_kapat);
    delay(1550);
    cop = 0;
  }
}

Sosyal Medyada Paylaş Facebook Twitter Google+

Etiketler: , , , , , ,
Eklenme Tarihi: 27 Ekim 2021

Konu hakkında yorumunuzu yazın

Arduino Çöp Toplayan Robot (1 Yorum)

  1. Hocam iyi günler. Çöp toplayan robotta çizgi sensörü hangi malzeme parçası internette çok sayıda çizgi sensörü çıkıyor

UA-46017808-1

HOŞ GELDİNİZ

Youtube kanalıma Abone Olabilirsiniz.