çizgi izleyen robot

haspro

Üye
Katılım
13 May 2020
Mesajlar
2
Puanları
1
Yaş
33
AŞŞAĞIDAKİ KODUMU ÇALIŞTIRINCA ŞU HATAYI ALIYORUM: 'hafifsagadon' was not declared in this scope
Kod:
#include <QTRSensors.h>



#define sagtabanhiz 200

#define soltabanhiz 200

#define sagmotoryon 13

#define sagmotorpwmpin 11

#define solmotoryon 12

#define solmotorpwmpin 3



int sensor=10;



QTRSensorsRC qtrrc((unsigned char[]){2,4,5,6,7,8,9,10},8,2500,QTR_NO_EMITTER_PIN);



unsigned int sensorValues[8];



void setup()

{

   delay(2000);

   pinMode(sensor,INPUT);

   pinMode(sagmotoryon,OUTPUT);

   pinMode(sagmotorpwmpin,OUTPUT);

   pinMode(solmotoryon,OUTPUT);

   pinMode(solmotorpwmpin,OUTPUT);

   int i;

   digitalWrite(13,HIGH);

for (int i=0;i<200;i++)

   {

    if( 0 <=i&&i< 5 ) hafifsagadon();

    if( 5 <=i&&i< 15 ) hafifsoladon();

    if( 15 <=i&&i< 25 ) hafifsagadon();

         if( 25 <=i&&i< 35 ) hafifsoladon();

         if( 35 <=i&&i< 45 ) hafifsagadon();

         if( 45 <=i&&i< 55 ) hafifsoladon();

         if( 55 <=i&&i< 65 ) hafifsagadon();

         if( 65 <=i&&i< 75 ) hafifsoladon();

         if( 75 <=i&&i< 85 ) hafifsagadon();

         if( 85 <=i&&i< 90 ) hafifsoladon();



    if(i>=90 ) {

      frenle();delay(5);

      }



    qtrrc.calibrate();

        delay(4);

  }

    digitalWrite(13,LOW);

    delay(2000);



  Serialbegin(9600);



  int sonhata = 0;

  float Kp = 0.06;

  float Kd = 0.8;

  int sagmotorpwm = 0;

  int solmotorpwm = 0;

  int zemin=0;



  void loop()

  {

  unsigned int sensorValues[8];

  unsigned int position = qtrrc.readLine(sensorValues,1,zemin);

  int hata = position-3500;



  if ( sensorValues[0]<100 && sensorValues[7]<100 ){zemin=0; }

  if ( sensorValues[0]>500 && sensorValues[7]>500 ){zemin=1; }



  int duzeltmehizi = Kp * hata + Kd*(hata - sonhata);

  sonhata = hata;



  sagmotorpwm = sagtabanhiz + duzeltmehizi ;

  solmotorpwm = soltabanhiz - duzeltmehizi ;



  sagmotorpwm = constrain(sagmotorpwm,-100,110);

  solmotorpwm = constrain(solmotorpwm,-100,110);

  motorkontrol(sagmotorpwm,solmotorpwm);

  }



  void motorkontrol( int sagmotorpwm, int solmotorpwm){



   if(sagmotorpwm<=0){

      sagmotorpwm=abs(sagmotorpwm);

      digitalWrite(sagmotoryon,LOW);

      analogWrite(sagmotorpwmpin, sagmotorpwm);

    }

   else{

      digitalWrite(sagmotoryon,LOW);

      analogWrite(sagmotorpwmpin,sagmotorpwm);

   }

   if(solmootrpwm<=0){

      solmotorpwm=abs(solmotorpwm);

      digitalWrite(solmotoryon,LOW);

      analogWrite(solmotorpwmpin,solmotorpwm);

    }

   else{

      digitalWrite(solmotoryon,HIGH);

      analogWrite(solmotorpwmpin,solmotorpwm);

   }

  }

    void frenle(){

      motorkontrol(0,0);

      }



    void hafifsagadon(){

      motorkontrol(-100,100);

      }



    void hafifsoladon(){

      motorkontrol(100,-100);

      }

    }
 
Moderatör tarafında düzenlendi:
sorunu çözdünüz mü? Kodda sorun yok gibi geldi bana.
 
Kod sağlam gözüküyor ama yine de hafifsagadon() ve hafifsoladon olan kısımları süslü parantez içinde de bir dene
 

Forum istatistikleri

Konular
130,108
Mesajlar
933,182
Kullanıcılar
453,163
Son üye
gurkangunc

Yeni konular

Çevrimiçi üyeler

Geri
Üst