HC-SR04 Mesafe Sensörü 0 ve - değer üretmesi ARDUİNO

Kodla Büyü

comp_teach

Seçkin Üye
Seçkin Üye
Mesajlar
284
Arkadaşlar engel algılayan robot yapıyordum herhangi bir sıkıntı yoktu bugün uğraşırken Arduino mesafe sensörünün - değer ürettiğini gördüm bu yüzden dc motorları kontrolde hatalar oluşturuyordu. Birde 0 değeri aldığı anda tekrar yeni bir sayıya kesinlikle dönmüyor bilgi sahibi olan varmı durum hakkında

kod yapısı

Kod:
#include <AFMotor.h>
int deger=0;
int mesafe=0;

AF_DCMotor motor1(1, MOTOR12_64KHZ);
AF_DCMotor motor2(2, MOTOR12_64KHZ);
AF_DCMotor motor3(3, MOTOR12_64KHZ);
AF_DCMotor motor4(4, MOTOR12_64KHZ);

void setup() {
  pinMode(A0,INPUT);
  pinMode(A1,OUTPUT);
  pinMode(A2,OUTPUT);
  motor1.setSpeed(200); 
  motor2.setSpeed(200);
  motor3.setSpeed(200);
  motor4.setSpeed(200);
}
 
void loop() {
  analogWrite(A1,255);
  delayMicroseconds(10);
  analogWrite(A1,0);
 deger=pulseIn(A0,255);
 mesafe=deger/58.2;
  if(mesafe>20||mesafe==0)
  {
  motor1.run(FORWARD);    
  motor2.run(FORWARD);      
  motor3.run(FORWARD);     
  motor4.run(FORWARD);   
  noTone(A2);
  }
 else
 {  
  motor1.run(FORWARD);   
  motor3.run(FORWARD);
  tone(A2,400);   
  }
 delay(10);
}
 
Hocam maalesef ultrasonik sensor cok cabuk bozuluyor.
Bende engelden kacan arac yaptim mesafe 30 cm nin altina dusunce yon degistirmesi gerekiyordu. Ancak mesafe algilarken onunde engel olmasa da 4 degeri uretiyordu. Dolayisiyla engel olmasa bile yon degistiriyor yada etrafini yokluyordu.
Ben bunu sensore lcd led baglayarak farketmistim. Farkli bir sensorle denemekte fayda var.
 
Hocam bir de bu yazdiginiz kodlarla her engel ciktiginda surekli tek bir yone gider. Bende bunun servo motorlu devresinin kodlari da var calisir halde.
engel gelince saga ve sola bakip hangi taraftaki engel uzaksa o yone hareket ediyor.
dilerseniz baglantisini ve kodlarini paylasirim
 
şuan bu kodlar denemelik hocam mesafe sensörünü kullanmak amacıyla devremde 2 sensör olacak ve sol - sag taraftan kontrol ettiricem 2 farklı yön olacak paylaşırsanız sevinirim diğer arkadaşlara da faydası dokunur.

Projeyi 1-2 güne bitireceğim videolu bir şekilde paylaşımını yapmayı düşünüyorum zaten
 
sensöre 4 pinli dişi-erkek kablo kullandığımda eksi değerler üretirken breadboarda direk kurarsam sıkıntı kalmıyor şuan denedim çalıştı anlam veremedim bir türlü ama sensör cidden çok hassas elimde 6 tane sensör hepsini deneyeceğim bakalım
 
hocam öncelikle devrede enerji varken sesnsörün kablolarını çıkarıp takmayın. sensör direk gidebiliyor.
dediğiniz gibiyse bir ihtimal kablolar arasında manyetik alan oluşmuş olabilir. dişi erkek dupond kabloları birbirinden ayırıp denemekte fayda var.
 
bidene' Alıntı:
Hocam bir de bu yazdiginiz kodlarla her engel ciktiginda surekli tek bir yone gider. Bende bunun servo motorlu devresinin kodlari da var calisir halde.
engel gelince saga ve sola bakip hangi taraftaki engel uzaksa o yone hareket ediyor.
dilerseniz baglantisini ve kodlarini paylasirim
Incelemek isteriz..
 
hocam birde birşey soracağım tek trigger ile ses dalgası yollayıp 2 echo değeri alabilirmiyim onun için uğraşıyorum şuan ama biri değeri verirken diğeri 0 değeri veriyor

Kod:
#include <AFMotor.h>
int trigpin=A0;
int echopin=A1;
int echopin1=A2;
int sure=0;
int sure1=0;
int mesafe=0;
int mesafe1=0;

AF_DCMotor motor1(1, MOTOR12_64KHZ);
AF_DCMotor motor2(2, MOTOR12_64KHZ);
AF_DCMotor motor3(3, MOTOR12_64KHZ);
AF_DCMotor motor4(4, MOTOR12_64KHZ);

void setup() {
  pinMode(trigpin,OUTPUT);
  pinMode(echopin,INPUT);
  pinMode(echopin1,INPUT);
  motor1.setSpeed(200); 
  motor2.setSpeed(200);
  motor3.setSpeed(200);
  motor4.setSpeed(200);
  Serial.begin(9600);

}

void loop() {  
  analogWrite(trigpin,0);
  delayMicroseconds(5);
  analogWrite(trigpin,255);
  delayMicroseconds(10);  
  analogWrite(trigpin,0);
  sure1=pulseIn(echopin1,255);
  sure=pulseIn(echopin,255);
  mesafe=sure/58.2;
  mesafe1=sure1/58.2;
  Serial.print(mesafe1);
  Serial.println(mesafe);
  if(mesafe>20)
  {
  motor1.run(FORWARD);    
  motor2.run(FORWARD);      
  motor3.run(FORWARD);     
  motor4.run(FORWARD);  
  }
 else if(mesafe<21)
 {  
  motor1.run(FORWARD);  
  motor2.run(RELEASE); 
  motor3.run(FORWARD);   
  motor4.run(RELEASE);
  }

  delay(10);

 
}
 
yani yapmak istediğim
A0 pinini trigger
A1 pinini echopin_sol
A2 pinini echopin_sag

olarak ayarlayıp 1 tane pin kazanmak istiyorum sanırım pin ihtiyacım olacak yapma şansım varmı
 
musara' Alıntı:
yani yapmak istediğim
A0 pinini trigger
A1 pinini echopin_sol
A2 pinini echopin_sag

olarak ayarlayıp 1 tane pin kazanmak istiyorum sanırım pin ihtiyacım olacak yapma şansım varmı
hocam bu konuda ayrıntılı bilgim yok maalesef
 
sanırım izin vermiyor 1 pin daha kullanmak zorunda kaldım neyse artık digital pinlerden yardım alıcam yoksa pin yetmeyecek motor sürücü kartından dolayı
 
yapacak olduğum proje RGB şerit led destekli dönüşlerde farklı renk yanmasını sağlamak ilerlerken yaşil renk olacak
bunun yanında dönüşlerde buzzer kullanarak sinyal verme olayını yapacağım sürücü kartı devresinden dolayı sadece analog çıkış ve 2 ve 13 nolu pinler var analog 4 tane kullandım artık geriye digital ve 2 analog kaldı çözüm arıyorum bakalım halledebilirsem yarın akşama bitecek gibi
 
aydınDr' Alıntı:
bidene' Alıntı:
Hocam bir de bu yazdiginiz kodlarla her engel ciktiginda surekli tek bir yone gider. Bende bunun servo motorlu devresinin kodlari da var calisir halde.
engel gelince saga ve sola bakip hangi taraftaki engel uzaksa o yone hareket ediyor.
dilerseniz baglantisini ve kodlarini paylasirim
Incelemek isteriz..
hocam hatırlarsanız ben buunla iligi başlık açmıştım. sağolsun arkadaşların bazı paylaşımları olmuştu ancak ben istediğim sonucu alamamıştım. uzun uğraşlar ve araştırmalar sonucu yaptığım devrenin bağlantısı ve kodlarını paylaşıyorum.
sensör ile servo motor arasına aprat kullanmanız lazım ki hareket kolay olsun.
batarya olarakta ben 5 adet alkalin kalem pil kullandım. 4 adet pil için kullanılan pil yatağı vardı ancak ya voltaj yetersiz geliyor ve robot çok yavaş hareket ediyordu. bende 5 pili peş peşe lehimledim. hem motor sürücü kartına hem de arduinoya aynı enerjiyi verdim.
 

Ekli dosyalar

  • engel.rar
    3.5 KB · Görüntüleme: 37
  • engel-robot-L298N.jpg
    engel-robot-L298N.jpg
    296.2 KB · Görüntüleme: 873
şuan bu kodlarla projem çalıştı sağda veya solda engel gördümü arabayı yön değiştiriyor

Kod:
#include <AFMotor.h>
int trigpin=A0;
int echopin=A1;
int echopin1=A2;
int trigpin1=A3;
int sure=0;
int sure1=0;
int mesafe=0;
int mesafe1=0;

AF_DCMotor motor1(1, MOTOR12_64KHZ);
AF_DCMotor motor2(2, MOTOR12_64KHZ);
AF_DCMotor motor3(3, MOTOR12_64KHZ);
AF_DCMotor motor4(4, MOTOR12_64KHZ);

void setup() {
  pinMode(trigpin,OUTPUT);
  pinMode(echopin,INPUT);
  pinMode(echopin1,INPUT);
  pinMode(trigpin1,OUTPUT);
  motor1.setSpeed(200); 
  motor2.setSpeed(200);
  motor3.setSpeed(200);
  motor4.setSpeed(200);
  Serial.begin(9600);

}

void loop() {  
  analogWrite(trigpin,0);
  delayMicroseconds(5);
  analogWrite(trigpin,255);
  delayMicroseconds(10);  
  analogWrite(trigpin,0);
  sure=pulseIn(echopin,255);
  mesafe=sure/58.2;
  
  analogWrite(trigpin1,0);
  delayMicroseconds(5);
  analogWrite(trigpin1,255);
  delayMicroseconds(10);  
  analogWrite(trigpin1,0);
  sure1=pulseIn(echopin1,255);
  mesafe1=sure1/58.2;
  if(mesafe<1){
    mesafe*=-1;
  }
  if(mesafe1<1){
    mesafe1*=-1;
  }

  Serial.print(mesafe1);
  Serial.println(mesafe);
  if(mesafe>20 && mesafe1>20)
  {
  motor1.run(FORWARD);    
  motor2.run(FORWARD);      
  motor3.run(FORWARD);     
  motor4.run(FORWARD);  
  }
 else if(mesafe<21)
 {  
  motor1.run(FORWARD);  
  motor2.run(RELEASE); 
  motor3.run(FORWARD);   
  motor4.run(RELEASE);
  }
  else if(mesafe1<21)
  {
  motor1.run(RELEASE);  
  motor2.run(FORWARD); 
  motor3.run(RELEASE);   
  motor4.run(FORWARD);
  }

  delay(10);

 
}
 
hocam bacak yetersiz kalıyorsa mega kullanılabilir. onda fazla fazla pin var.
 
bidene' Alıntı:
hocam bacak yetersiz kalıyorsa mega kullanılabilir. onda fazla fazla pin var.

sipariş verip gelmesi yetişmeyecek gibi hocam oyüzden bişeyler bulucam bakalım motor shieldi biraz araştırayım
 
Hocam sayet almak istersen piyasada klonlari ile orjinali hemen hemen ayni fiyat.
prototip elektronikten orjinalini alabilirsin.
 
Öncelikle mesafeyi niye A0 a1 den analog almaya çalışıyorsunuzki direk diğer pinlerden dijital olarak alabilirsiniz.
Hc-sr04 de değer okumak için hızlı davranırsanız karmakarışık sonuçlar veya sürekli aynı sonuçları alırsınız. Özellikle engel algılayan robot da çok sıkıntı çıkarır ya gider çarpar karşıya yada sağa sola bakacaksa bakarken değeri erken okur saçma hareket eder. yani sorun okumasında değil kodlardaki hatadır.
Ayrıca eminim burada işi çözmüş arkadaşlar vardır daha iyi bilirler ama ben kütüpane kullanmamaya gayret ediyorum. kullanınca sıkıntı cıkıyo genelde.
Son olarak SR04 sparişinizi düzgün bi siteden vermenizi tavsiye ederim elimde 10 adet var 3 tanesi çalışmıyor. farklı zamanlarda farklı yerlerden spariş etmişdim.
 
hocam adafruit motor sürücü kullandığım için 4 tekerli dc motorlu bir arabayı kontrolden dolayı digital pinleri kullanıyor oyüzden analogları kullanmak zorunda kaldım. Dediğiniz gibi araba çarpıyor bunun için dediğinizi deneyeceğim daha iyi bir tavsiyesi olan varsa sevinirim.
 
Hocam motorlarin hizini biraz dusurerek denedin mi belko hiz azalirsa daha cabuk algilar
 
Hocam bu arada kullabdigin motor digital 1-2 ve 12-13 nolu pinleri cok buyuk ihtimalle kullanmiyor
duppon kablolari unonun disi headerleri yaninde lehim icin bos delikler var oaraya lehimleyerek kullanabilirsin.
ben bluetooth araba yaptim o pinleri bluetooth modul ve araba farlari icin kullaniyorum
 
// Adafruit Motor shield library

// copyright Adafruit Industries LLC, 2009

// this code is public domain, enjoy!


/*

* Usage Notes:

* For PIC32, all features work properly with the following two exceptions:

*

* 1) Because the PIC32 only has 5 PWM outputs, and the AFMotor shield needs 6

* to completely operate (four for motor outputs and two for RC servos), the

* M1 motor output will not have PWM ability when used with a PIC32 board.

* However, there is a very simple workaround. If you need to drive a stepper

* or DC motor with PWM on motor output M1, you can use the PWM output on pin

* 9 or pin 10 (normally use for RC servo outputs on Arduino, not needed for

* RC servo outputs on PIC32) to drive the PWM input for M1 by simply putting

* a jumber from pin 9 to pin 11 or pin 10 to pin 11. Then uncomment one of the

* two #defines below to activate the PWM on either pin 9 or pin 10. You will

* then have a fully functional microstepping for 2 stepper motors, or four

* DC motor outputs with PWM.

*

* 2) There is a conflict between RC Servo outputs on pins 9 and pins 10 and

* the operation of DC motors and stepper motors as of 9/2012. This issue

* will get fixed in future MPIDE releases, but at the present time it means

* that the Motor Party example will NOT work properly. Any time you attach

* an RC servo to pins 9 or pins 10, ALL PWM outputs on the whole board will

* stop working. Thus no steppers or DC motors.

*

*/

// <BPS> 09/15/2012 Modified for use with chipKIT boards



#ifndef _AFMotor_h_

#define _AFMotor_h_


#include <inttypes.h>

#if defined(__AVR__)

    #include <avr/io.h>


    //#define MOTORDEBUG 1


    #define MICROSTEPS 16 // 8 or 16


    #define MOTOR12_64KHZ _BV(CS20) // no prescale

    #define MOTOR12_8KHZ _BV(CS21) // divide by 8

    #define MOTOR12_2KHZ _BV(CS21) | _BV(CS20) // divide by 32

    #define MOTOR12_1KHZ _BV(CS22) // divide by 64


    #define MOTOR34_64KHZ _BV(CS00) // no prescale

    #define MOTOR34_8KHZ _BV(CS01) // divide by 8

    #define MOTOR34_1KHZ _BV(CS01) | _BV(CS00) // divide by 64

    

    #define DC_MOTOR_PWM_RATE MOTOR34_8KHZ // PWM rate for DC motors

    #define STEPPER1_PWM_RATE MOTOR12_64KHZ // PWM rate for stepper 1

    #define STEPPER2_PWM_RATE MOTOR34_64KHZ // PWM rate for stepper 2

    

#elif defined(__PIC32MX__)

    //#define MOTORDEBUG 1

    

    // Uncomment the one of following lines if you have put a jumper from

    // either pin 9 to pin 11 or pin 10 to pin 11 on your Motor Shield.

    // Either will enable PWM for M1

    //#define PIC32_USE_PIN9_FOR_M1_PWM

    //#define PIC32_USE_PIN10_FOR_M1_PWM


    #define MICROSTEPS 16 // 8 or 16


    // For PIC32 Timers, define prescale settings by PWM frequency

    #define MOTOR12_312KHZ 0 // 1:1, actual frequency 312KHz

    #define MOTOR12_156KHZ 1 // 1:2, actual frequency 156KHz

    #define MOTOR12_64KHZ 2 // 1:4, actual frequency 78KHz

    #define MOTOR12_39KHZ 3 // 1:8, acutal frequency 39KHz

    #define MOTOR12_19KHZ 4 // 1:16, actual frequency 19KHz

    #define MOTOR12_8KHZ 5 // 1:32, actual frequency 9.7KHz

    #define MOTOR12_4_8KHZ 6 // 1:64, actual frequency 4.8KHz

    #define MOTOR12_2KHZ 7 // 1:256, actual frequency 1.2KHz

    #define MOTOR12_1KHZ 7 // 1:256, actual frequency 1.2KHz


    #define MOTOR34_312KHZ 0 // 1:1, actual frequency 312KHz

    #define MOTOR34_156KHZ 1 // 1:2, actual frequency 156KHz

    #define MOTOR34_64KHZ 2 // 1:4, actual frequency 78KHz

    #define MOTOR34_39KHZ 3 // 1:8, acutal frequency 39KHz

    #define MOTOR34_19KHZ 4 // 1:16, actual frequency 19KHz

    #define MOTOR34_8KHZ 5 // 1:32, actual frequency 9.7KHz

    #define MOTOR34_4_8KHZ 6 // 1:64, actual frequency 4.8KHz

    #define MOTOR34_2KHZ 7 // 1:256, actual frequency 1.2KHz

    #define MOTOR34_1KHZ 7 // 1:256, actual frequency 1.2KHz

    

    // PWM rate for DC motors.

    #define DC_MOTOR_PWM_RATE MOTOR34_39KHZ

    // Note: for PIC32, both of these must be set to the same value

    // since there's only one timebase for all 4 PWM outputs

    #define STEPPER1_PWM_RATE MOTOR12_39KHZ

    #define STEPPER2_PWM_RATE MOTOR34_39KHZ

    

#endif


// Bit positions in the 74HCT595 shift register output

#define MOTOR1_A 2

#define MOTOR1_B 3

#define MOTOR2_A 1

#define MOTOR2_B 4

#define MOTOR4_A 0

#define MOTOR4_B 6

#define MOTOR3_A 5

#define MOTOR3_B 7


// Constants that the user passes in to the motor calls

#define FORWARD 1

#define BACKWARD 2

#define BRAKE 3

#define RELEASE 4


// Constants that the user passes in to the stepper calls

#define SINGLE 1

#define DOUBLE 2

#define INTERLEAVE 3

#define MICROSTEP 4


/*

#define LATCH 4

#define LATCH_DDR DDRB

#define LATCH_PORT PORTB

#define CLK_PORT PORTD

#define CLK_DDR DDRD

#define CLK 4

#define ENABLE_PORT PORTD

#define ENABLE_DDR DDRD

#define ENABLE 7

#define SER 0

#define SER_DDR DDRB

#define SER_PORT PORTB

*/


// Arduino pin names for interface to 74HCT595 latch

#define MOTORLATCH 12

#define MOTORCLK 4

#define MOTORENABLE 7

#define MOTORDATA 8


class AFMotorController

{

  public:

    AFMotorController(void);

    void enable(void);

    friend class AF_DCMotor;

    void latch_tx(void);

    uint8_t TimerInitalized;

};


class AF_DCMotor

{

 public:

  AF_DCMotor(uint8_t motornum, uint8_t freq = DC_MOTOR_PWM_RATE);

  void run(uint8_t);

  void setSpeed(uint8_t);


 private:

  uint8_t motornum, pwmfreq;

};


class AF_Stepper {

 public:

  AF_Stepper(uint16_t, uint8_t);

  void step(uint16_t steps, uint8_t dir, uint8_t style = SINGLE);

  void setSpeed(uint16_t);

  uint8_t onestep(uint8_t dir, uint8_t style);

  void release(void);

  uint16_t revsteps; // # steps per revolution

  uint8_t steppernum;

  uint32_t usperstep, steppingcounter;

 private:

  uint8_t currentstep;


};


uint8_t getlatchstate(void);


#endif

buradaki kutuphaneye gore aanirim 13-11-10-9 nolu bacaklar kullanilmiyor gibi geldi
 
kaç motoru ne ile kontrol ettiğin önemli değil aynı enable değerini verdigin sürece bir sıkıntı yaratmaz. okuma için...
Kod:
void sensor_olcum()
{
  digitalWrite(6, LOW);
 delayMicroseconds(2);
  digitalWrite(6, HIGH);
  delayMicroseconds(2);
  digitalWrite(6, LOW);
  olcum = pulseIn(7, HIGH);
  uzaklik = olcum / 58.2;
  delay(50);

bu koda Serial.print(uzaklik); eklersen okudugu değerleride görürsün
yeterli sadece okumalar arasına süre koy hocam
ve direk örn:6-7 pine bağla mesela
Serial.begin(9600); ü de unutma koda eklemeyi...
servo ile dönderiyor ve okutuyorsan döndükden sonra servoyu yarım saniye beklet okut yoksa dönmeden okuma yapar .....
çalıştıgın her parçanın (sensörün) playground unda zaten test için kodu var
 
ayrıca kütüpaneler ile çalışmışsın ben kütüphane kullandıkca sıkıntı yaşadım. kendi kodumu kendim yazdım daha basit ve sorunsuz oluyor....
 
buradaki kutuphaneye gore aanirim 13-11-10-9 nolu bacaklar kullanilmiyor gibi geldi


benim araştırmama göre 0-1-2 ve 13 nolu pinler boş kalıyor hocam oralara el atıcam ekstra 4 tane çıkış iyi oldu buralardan rbg için alsam yeterli sanırım
 
inanin.ozu' Alıntı:
ayrıca kütüpaneler ile çalışmışsın ben kütüphane kullandıkca sıkıntı yaşadım. kendi kodumu kendim yazdım daha basit ve sorunsuz oluyor....
hocam elinde örnek varsa sevinirim pinlere low high mantığı ile mi çalıştın direk
 
tek sıkıntım güç duracell 9v luk pil kullanıyorum denemelerde bile 3-4 saatte bitiyor pil tübitak sergi günü sanırım 3-4 tane kullanırım bu pilden
 
6v 1.3A kuru akü işini çözer küçükleri var onlardan al derim 1 servo 4 dc motora yetiyo. bana sorarsan voltaj dan daha çok akım önemli çok parça çalışdırıyorsan. 9v pillerin akımı düşük oluyor. bende çok denedim ya paraya kıyıp iyi bir Li-Po pil alacaksın yada kuru akü. 6v 9v 12v hepsini denedim. hatta ups den söküp büyükleride denedim 9v ve 12v da ısınma oluyo 6v da ısınma olmadı (fazla voltaj ısıya dönüşür arduino da). kodlar okuldaki pc de şu an sana yazıp kodları birazdan atayım sadece pinlerini ayarla yeter ben tank tekerlegi kullandıgım için 2 redüktörlü dc motor işimi görüyo sen tasarımına göre pinlerini yarlayacaksın.
 
Kod:
#include <Servo.h>// servo motor kütüphanesi

//motor pinleri
int SolMotorileri = 9;
int SolMotorGeri = 10;
int SagMotorileri = 11;
int SagMotorGeri = 12;
//sensör pinleri
int trigpin = 6;
int echopin = 7;

int olcum = 0;
Servo servo; //servo motor tanımlama
//kullanılacak eleman tanımı
unsigned int uzaklik;
unsigned int on_uzaklik;
unsigned int sol_uzaklik;
unsigned int sag_uzaklik;
unsigned int zaman;
// program ilk çalıştığında sadece bir kez çalışacak programlar
void setup()
{
  //motor çıkışları
  Serial.begin(9600);
  pinMode(SolMotorileri, OUTPUT);
  pinMode(SolMotorGeri, OUTPUT);
  pinMode(SagMotorileri, OUTPUT);
  pinMode(SagMotorGeri, OUTPUT);
  pinMode(trigpin, OUTPUT);
  pinMode(echopin, INPUT);
  servo.attach(4); //servo pin tanımı
}
// sonsuz döngü
void loop()
{
  delay(500);
  servo.write(90);
  sensor_olcum();
  on_uzaklik = uzaklik;
  if (on_uzaklik > 35)
  {
    ileri();
  }
  else
  {
    dur();
    servo.write(140);
    delay(500);
    sensor_olcum();
    delay(50);
    sol_uzaklik = uzaklik;
    servo.write(40);
    delay(500);
    sensor_olcum();
    delay(50);
    sag_uzaklik = uzaklik;
    servo.write(90);
    delay(500);
    if(sag_uzaklik <35 && sol_uzaklik<35)
    {
      geri();
      delay(500);
      }
   else if (sag_uzaklik < sol_uzaklik)
    {
      sol();
      delay(3000);
      ileri();
    }
    else if (sol_uzaklik < sag_uzaklik)
    {
      sag();
      delay(3000);
      ileri();
    }
    else
    {
      geri();
    }
  }
}

// robotun yön komutları
void ileri()
{
  digitalWrite(SolMotorGeri, LOW);
  digitalWrite(SolMotorileri, HIGH);
  digitalWrite(SagMotorGeri, LOW);
  digitalWrite(SagMotorileri, HIGH);
}

void geri()
{
  digitalWrite(SolMotorileri, LOW);
  digitalWrite(SolMotorGeri, HIGH);
  digitalWrite(SagMotorileri, LOW);
  digitalWrite(SagMotorGeri, HIGH);
  delay(500);
 
}

void sol()
{
  
  digitalWrite(SolMotorGeri, LOW);
  digitalWrite(SolMotorileri, HIGH);
  digitalWrite(SagMotorileri, LOW);
  digitalWrite(SagMotorGeri, HIGH);

}

void sag()
{
  
  digitalWrite(SolMotorileri, LOW);
  digitalWrite(SolMotorGeri, HIGH);
  digitalWrite(SagMotorGeri, LOW);
  digitalWrite(SagMotorileri, HIGH);
  
}

void dur()
{
  digitalWrite(SolMotorGeri, LOW);
  digitalWrite(SolMotorileri, LOW);
  digitalWrite(SagMotorileri, LOW);
  digitalWrite(SagMotorGeri, LOW);
}
// sensörün mesafe ölçümü
void sensor_olcum()
{
  digitalWrite(trigpin, LOW);
 delayMicroseconds(2);
  digitalWrite(trigpin, HIGH);
  delayMicroseconds(2);
  digitalWrite(trigpin, LOW);
  olcum = pulseIn(echopin, HIGH);
  uzaklik = olcum / 58.2;
  delay(50);

}
 
kodlar sana sadece öncü olabilir hocam biz sadece baştaki dur() fonksiyonundan önceki delay(500) ü unuttuk diye düzgün çalışmadı. aracın hızına servonun dönüşüne göre kodları sen ayarlayacaksın. değişklik yapacaksın v.s.
bildiğim kadarı ile her zaman yardımcı olurum.
robotlarını köşe bucak saklayan aman kodlarımı vermem diyen öğretmenlerimiz de var malesef.
sesle çalışan fare, pantilt labirent, engel algılayan v.s. baya bişey yaptım ben sensörlerinde çoguna elimden geldiğince hakimim
ivme sensörü, mesafe sensörleri, Flex sensörler, Nem ölçerler v.s. bildiğim kadarını paylşırım paylaşarak daha kolaylaşıyo olaylar.
yardımcı olabildi isek ne mutlu....
 
Geri
Üst