Loop döngusunden alınan komutla bir kez if else komutu vermek(cozuldu)
  • Ultrasonic sensörler ölçüm yapıp L293D modul ile motor surmek üzerine devre oluşturdum.
    Yapmak istediğim şu;
    Ultrasonic sensör loop döngüsü ile sürekli ölçüm yapacak. Mesafe 4 cm uzerine çıkınca motor 2 sn calışıp duracak. 4 cm ve altına inmesini bekleyecek. 4 cm ve altina inince de ters istikamette 2 sn çalışıp duracak.
    Sensör komutlarını loop döngüsüne yazınca sıkıntı yok.
    Ama motoru loopa atınca haliyle sürekli ikişer saniye çalışıp duruyor.
    Loop'a ultrasonic komutlarını ve if dongusunu atinca ters istikamette donme islemini yapmiyor, void motor ile başka bir komut açınca da else if (distance <= 4cm) komutunu kabul etmiyor.<br />Bunu nasıl yapabilirim?
  • motoru döndürdüğün yerlere birer kontrol biti koy, mesafeye göre kontrol bitini set et böylelikle motor sadece senin set ettiğin zamanlarda döner
  • İyi de motor 4cm olana dek sürekli dönsün istemiyorum ki?
    4 cmden uzak olunca 2 sn dönsün ve dursun 4 cm olunca aksi yöne 2 sn dönsün dursun ve bir daha 4 cm den uzak olana dek kapalı dursun.
    4cmden uzak olunca tekrar aynı döngü Vs.
  • tamam işte demek istediğim tamda bu,

    void loop()
    {

    motordon();
    }

    gibi yapma böylece sürekli loopta olur, motoru bir şarta bağla bu şartta senin mesafenle gerçekleşsin,

    Örneğin

    void loop()
    {

    if(mesafe > 4)
    {
    if(kontrolbit)
    {
    kontrolbit =0;
    motordonbit = 1;
    }
    }
    else kontrolbit =1;


    if(motordonbit)
    {
    motordon();
    motordonbit = 0;
    }
    }


    Böylelikle, eğer mesafe 4 cm yi geçerse 1 kereliğine birtane bit set edilecek(motordonbit)
    bu bit set edilirse 1 kereliğine motor dönecek gibi...

    Tam kodu senin yazman gerek
  • Üstat iiçinden çıkamadım bir türlü :(
    Bir örnek vs de bulamadım (yada hangi anahtar kelime ile arayacağımı çözemedim )
    Benim kodlar şu şekilde:


    #define trigPin 3
    #define echoPin 2


    //Motor
    const int motorPin1 = 31;
    const int motorPin2 = 33;

    void setup()
    {

    pinMode(motorPin1, OUTPUT);
    pinMode(motorPin2, OUTPUT);


    Serial.begin (9600);
    pinMode(trigPin, OUTPUT);
    pinMode(echoPin, INPUT);

    }

    void loop()
    {
    int duration, distance;
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(500);
    digitalWrite(trigPin, LOW);
    duration = pulseIn(echoPin, HIGH);
    distance = (duration/2) / 29.1;
    Serial.print(distance);
    Serial.println(" CM");
    delay(5);

    if (distance < 4)
    {
    digitalWrite(motorPin1, HIGH);
    digitalWrite(motorPin2, LOW);
    delay(2000);
    digitalWrite(motorPin1, LOW);
    digitalWrite(motorPin2, LOW);
    }

    else
    {

    digitalWrite(motorPin1, LOW);
    digitalWrite(motorPin2, LOW);

    }}

  • #define trigPin 3
    #define echoPin 2


    //Motor
    const int motorPin1 = 31;
    const int motorPin2 = 33;

    bool sag_don = true;
    bool sol_don = true;

    void setup()
    {

    pinMode(motorPin1, OUTPUT);
    pinMode(motorPin2, OUTPUT);


    Serial.begin (9600);
    pinMode(trigPin, OUTPUT);
    pinMode(echoPin, INPUT);

    }

    void loop()
    {
    int duration, distance;
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(500);
    digitalWrite(trigPin, LOW);
    duration = pulseIn(echoPin, HIGH);
    distance = (duration/2) / 29.1;
    Serial.print(distance);
    Serial.println(" CM");
    delay(5);

    if (distance < 4)
    {
    if( sol_don == true )
    {
    digitalWrite(motorPin1, HIGH);
    digitalWrite(motorPin2, LOW);
    delay(2000);
    digitalWrite(motorPin1, LOW);
    digitalWrite(motorPin2, LOW);

    sol_don = false;
    sag_don = true;
    }
    }

    if( distance > 4 )
    {
    if( sag_don == true )
    {
    digitalWrite(motorPin1, LOW);
    digitalWrite(motorPin2, LOW);

    sal_don = true;
    sog_don = false;
    }

    }
    }

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.