Çizgi İzleyen Robota Mesafe Sensörü

int ileri[4]={50,50,1,1}; int hafif[4]={60,40,1,1}; int orta[4]={50,20,1,1}; int sert[4]={60,20,1,1}; int coksert[4]={90,20,1,1}; int terss[4]={45,45,1,0}; int dur[4]={0,0,1,1}; void setup() { pinMode(trig_on,OUTPUT); pinMode(echo_on,INPUT); pinMode(yon_sol,OUTPUT); //Bu ayarlar motor shield için sabit pinMode(pwm_sol,OUTPUT); pinMode(yon_sag,OUTPUT); pinMode(pwm_sag,OUTPUT); pinMode(fren_sag,OUTPUT); pinMode(fren_sol,OUTPUT); Serial.begin(9600); analogWrite(pwm_sag,70); //motor ve hızı (max hız değeri 255) analogWrite(pwm_sol,70); //motor ve hızı (max hız değeri 255) digitalWrite(yon_sol,HIGH); // motor yönü digitalWrite(yon_sag,HIGH); // (High + yön, Low – yön) } void loop() { qtra.read(sensorValues); /*Serial.print(sensorValues[0]); Serial.print(" “); Serial.print(sensorValues[1]);Serial.print(” “); Serial.print(sensorValues[2]);Serial.print(” “); Serial.print(sensorValues[3]);Serial.print(” “); Serial.print(sensorValues[4]);Serial.print(” "); Serial.print(sensorValues[5]); Serial.println(); */ //on_goz(); ileri_kontrol(); engel_kontrol(); } ///////// MOTORLARIN KONTROLÜ ///////////////////////////// /* void on_goz() { digitalWrite(trig_on,LOW); delayMicroseconds(2); digitalWrite(trig_on,HIGH); delayMicroseconds(10); digitalWrite(trig_on,LOW); sure_on=pulseIn(echo_on,HIGH); mesafe_on=sure_on/58.2; }*/ void sag_motor(int hiz1,int yon1) { boolean x; if(yon1==1) {x=HIGH;} else {x=LOW;} analogWrite(pwm_sag,hiz1); digitalWrite(yon_sag,x); } void sol_motor(int hiz2,int yon2) { boolean y; if(yon2==1) {y=HIGH;} else {y=LOW;} analogWrite(pwm_sol,hiz2); digitalWrite(yon_sol,y); } /* void engel_kontrol() { if(mesafe_on>15) ileri_kontrol(); else { sag_motor(dur[1],dur[3]); sol_motor(dur[0],dur[2]); } }*/ void ileri_kontrol() { if((sensorValues[2]>esik) && (sensorValues[3]>esik)) { sag_motor(ileri[0],ileri[2]); sol_motor(ileri[1],ileri[3]); aaa=1; Serial.println(“İLERİ”); } else hafif_kontrol(); } void hafif_kontrol() { if((sensorValues[1]esik))
{
sag_motor(hafif[0],hafif[2]);
sol_motor(hafif[1],hafif[3]);
aaa=1;
Serial.println(“HAFİF SOL”);
}
else if((sensorValues[4]esik))
{
sag_motor(hafif[1],hafif[2]);
sol_motor(hafif[0],hafif[3]);
aaa=1;
Serial.println(“HAFİF SAG”);
}
else orta_kontrol();
}

           void orta_kontrol()
           {
             if((sensorValues[1]&gt;esik)&amp;&amp; (sensorValues[0]<esik sag_motor sol_motor aaa="1;" serial.println sol else if>esik)&amp;&amp; (sensorValues[5]<esik sag_motor sol_motor aaa="1;" serial.println sag else sert_kontrol void if>esik)&amp;&amp;(sensorValues[1]&gt;esik))
                   {
                     sag_motor(sert[0],sert[2]);
                     sol_motor(sert[1],sert[3]);
                     aaa=1;
                     
                   }
                   else if((sensorValues[5]&gt;esik)&amp;&amp; (sensorValues[4]&gt;esik))
                   {
                     sag_motor(sert[1],sert[3]);
                     sol_motor(sert[0],sert[2]);
                     aaa=1;
                   }
                   else 
                  coksert_kontrol();
           }
           
           void coksert_kontrol()
           {
                  if((sensorValues[0]&gt;esik))
                   {
                     sag_motor(coksert[0],coksert[2]);
                     sol_motor(coksert[1],coksert[3]);
                     aaa=0;
                     
                   }
                   else if((sensorValues[5]&gt;esik))
                   {
                     sag_motor(coksert[1],coksert[3]);
                     sol_motor(coksert[0],coksert[2]);
                     aaa=5;
                   }
                   else ters();
           }
           void ters()
           {
                   if(aaa==0)
                   {
                       sag_motor(terss[1],terss[2]);
                       sol_motor(terss[0],terss[3]);
                   }
                   else if(aaa==5)
                   {
                       sag_motor(terss[1],terss[3]);
                       sol_motor(terss[0],terss[2]);
                   }
                   else
                   {
                     sag_motor(dur[1],dur[3]);
                     sol_motor(dur[0],dur[2]);
                   }
           }

Bu kodda kapatılan kısımlar açıldığında çizgi izlemiyor alet sapıtıyor ileri ve coksert calısıyor ama kapatınca çizgiyi miss gibi izliyor bir yardım edin düzeltmeye …

Merhaba sana yardımcı olmaya çalışıcam. Öncelikle arduinoda Serialprint komutu çok büyük bir gecikmeye sebep oluyor (mS ler mertebesinde) 1 ci yapman gereken Serial printleri yani pc ekranında değerleri görmeni sağlayan bütün komutları kaldır.(alt fonksiyonların içerindeki printlerde dahil) İkinci olarakta PulseIn komutunu şu şekilde kullanırmısın sure_on=pulseIn(echo_on,HIGH,5000); İyi çalışmalar

Tamam peki dediklerini deneyeceğim ama birşey daha öğrenmek istiyorum Serial.println() kod bloğu yazılı ama kapalıysa yine dediğin sıkıntı olurmu ?

Dediğni yaptım malesef çalışmadı ama bataryada bitmiş olabilir şarja taktım bataryayı doldurunca tekrar deneyeceğim

Blok kapalı ise o kodu icra etmez yani gecikmeye sebep olmaz. sure_on=pulseIn(echo_on,HIGH,5000); kodu içerisindeki “5000” rakamını yavaş yavaş azaltarak tekrar dene. Eğer yine olmazsa tekrar başka yönteme bakaarız