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

UA-46017808-1

HOŞ GELDİNİZ

Youtube kanalıma Abone Olabilirsiniz.