Arduino kodundaki hata nedir?

Coder_1

Centipat
Katılım
13 Haziran 2022
Mesajlar
16
Daha fazla  
Cinsiyet
Erkek
Kod:
// QTR kütüphanesini ekliyoruz ve sabitlerimizi tanimliyoruz
#include <QTRSensors.h>
#define tabanhiz 150
#define sagmotorl 10
#define sagmotor2 9
#define sagmotorpwmpin 11
#define solmotorl 6
#define solmotor2 7
#define solmotorpwmpin 5
#define MZ80 8
#define taktik 12
#define LED 13
// QTR sensörümü bağlı olduğu pinlere tanımlayıp
//sensorlerden gelen veriler igin sensor dizisi olusturuyoruz
QTRSensorsAnalog qtra((unsigned char[]) {
  A0, A1, A2, A3, A4 , A5, A6, A7
} , 8);
unsigned int sensors[8];
// Degigkenlerimizi tanimliyoruz
float Kp = 0.04; float Kn = 0.6; float Ki = 0.0001; int integral = 0;
int ekhiz = 0; int sonhata = 0; int hata = 0; byte K = 0;
int sagmotorpwm = 0; int solmotorpwm = 0; unsigned char zemin = 1;
int cizgisay = 0; long baslamazamani = 0; long doksanzamani = 50000;
void setup()
{
  // Dijital olarak kullanacağımız pinlerin giriş veya çıkış olarak tanımlıyoruz
  pinMode(sagmotorl, OUTPUT);
  pinMode(sagmotor2, OUTPUT);
  pinMode(sagmotorpwmpin, OUTPUT);
  pinMode(solmotorl, OUTPUT);
  pinMode(solmotor2, OUTPUT);
  pinMode(solmotorpwmpin, OUTPUT);
  pinMode(MZ80, INPUT);
  pinMode(taktik, INPUT_PULLUP);
  delay(1000); // kalibrasyon başlamadan ek süre koyuyoruz
  //Kalibrasyon kodlari arduino üzerindeki led yanık olduğu sürece devama eder
  digitalWrite(LED, HIGH);
  // Kalibrsayonun otomatik gergeklesmesi robotumnza hafis sag sol kafa sallama yaptiriyoruz
  for (int i = 0; i < 150; 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 < 40 ) hafifsagadon();
    if ( 45 <= i && i < 50 ) hafifsoladon();
    // Kalibrasyon dongusu 50yi astiktan sonra frenliyoruz bu esnada robotu
    // Arduino uzerindeki led flash yapana kadar elle de kalibre edebiliriz
    if ( i >= 50 ) {
      fren1e(1);
      delay(3);
    }
    qtra.calibrate();
    delay(1);
  }
  // kalibrasyon döngüsünün çıktığını anlamak için Arduinoda bulunan yerleşik lede flaş yaptırıyoruz
  // Bu esnada robotumuzun çizgi sensörünü çizgiye ortalıyoruz
  flashyap();
  // başlangıçta engel varsa durup bekler. MZ80 sensörü takılı olmalıdır
  while (digitalRead(MZ80) == 2 LOW) {
    frenle(l);
  }
  // Serial.begin(9600);
}
void loop() {
  sensoroku();
  //sensorlerioku_yaz();
  dikcizgioku();
  yol_ayrimi();
  sag_sol_90();
  engeldenatla();
  if (cizgisay == 1 || cizgisay == 3 ) ekhiz = 1OO; else ekhiz = O;
  if (cizgisay == 3) K = l;
}
if (cizgisay == 5) {
  fren1e(10000);
}
//90 dereceden alınan zamana göre hızlanma komtlarımız
if (200 < (millis() - doksanzamani) && (millis() - doksanzamani) < 1200 ) ekhiz = 100;
if (1200 < (millis() - doksanzamani) && (millis() - doksanzamani) < 2400 ) ekhiz - 30;
if (2400 < (millis() - doksanzamani) && (millis() - doksanzamani) < 5000 ) ekhiz - 100:
  // motorlara verilecek hız duzeltme oran hesebı PID
  integral += hata; //çizgiden uzeklastikça hatalari toplar
if (abs(hata) < 500)integral = 0;
int duzeltmehizi = Kp * hata + Kd * (hata - sonhata) + Ki * integral;
sonhata = hata;
// Motorlara uygulanacak kesin hız ayarları
sagmotorpwm = tabanhiz + duzeltmehizi + ekhiz ;
solmotorpwm tabanhiz - duzeltmehizi + ekhiz ;
//***************
// motorlara hiz ayarlarinin uygulanması
// Burada motorlara uyqulanacek PWM degerlerine sınırlendırme getirilmiştir.
sagmotorpwm = constrain(sagmotorpwm, -50, 254);
solmotorpwn = constrain(solmotorpwm, -50, 254);
motorkontrol(solmotorpwm, sagmotorpwm);
}
void engeldenatla() {
  if (digitalRead(MZ80) == LOW) {
    motorkontrol(0, 150); delay(300); // önce sol motora fren verip sağ ileri yapıyor ve sola yönleniyoyoruz
    motorkontrol(150, 150); delay(200); // biraz ileri gidiyor
    motorkontrol(150, 0); delay(250); // sağ motora fren verip sol ileri yapıyor ve sola yönleniyoruz
    motorkontrol(150, l50); delay(800): // biraz ileri gidiyor
      motorkontrol(150, 0); delay(100); // biraz daha sağa yöne robotumuzu yönlendiriyoruz
      do {
      sensoroku(); //çizgi görene kadar kavis yaptırıyoruz
      motorkontrol(150, 120);
    }
    while (hata == O);
  }
}
void sag_sol_90() {
  // sağa 90 derece var ise şartımız alttaki şekilde olacaktır
  if (sensors[0] < 100 && sensors[1] < 100 && sensors[2] < 100 && sensors[3] < 100 && sensors[6] > 500 && sensors[7] > 700) {
    // motorkontrol(-lOO,-250); delay(25); eğer hızlı bir motor kullanılıyorsa aktif edin
    doksanzamani = millis(); // 90 derece geçişlerde zaman bilgisini alıyoruz
    // robotumuznun ön sensör boşa çıktığında hata -3500 olur ve hata -3500 olduğunca
    // sol motoru ileri sağ motoru geri çevirip sensör okumaya devam ediyoruz
    do {
      sensoroku();
      motorkontrol(200, -50);
    }
    while (hata == -3500);
  }
  // sola 90 derece var ise şartımız alttaki şekide olacaktır
  if (sensors[7] < 100 && sensors[6] < 100 && sensors[5] < 100 && sonsors[4] < 100 && sonsors[1] > 500 && sensors[0] > 700 ) {
    // motorkontrol(-250,-100); delay(25); eğer hızlı bir motor kullanılıyorsa aktif edin
    doksanzamani = millis(); // 90 derece geçişlerde zaman bilgisini alıyoruz
    // robotumuznun ön sensör boşa çıktığında hata 3500 olur ve hata 3500 olduğunca
    // sağ motoru ileri sol motoru geri çevirip sensör okumaya devam ediyoruz
    do {
      sensoroku();
      motorkontrol(-50, 200);
    }
    while (hata == 3500);
  }
}
void yol_ayrimi() {
  // eğer yol ayrımı var ise şartımız alttaki şekide olacaktır
  if (sensors[0] > 800 && sensors[2] < 600 && sensors[3] < 100 && sensors[4] < 100 && sensors[5] < 600 && sensors[7[] > 800 ) {
  if(K == O) {
      // Sol tarafa dönmek için
      motorkontrol(80, 180); delay(300);
    }
    if (K == 1) {
      // Sag tarafa dönmek için
      motorkontrol(180, 80); delay(300);
    }
  }
}
void sensoroku() {
  //Çizgi sensörü hesap kodları
  unsigned int position = qtra.readLine(sensors, 1, zemin);
  hata = position - 3500;
  // zemin değiştirme kodları
  if { sensors[0] < 100 && sensors[7] < 100 } { zemin = 0; } //beyaz
if { sensors[0] > 750 && sensors[7] > 750 } { zemin = 1; } //siyah
}
void flashyap() {
  for (int x = 0; x < 6; x++) {
    digitalWrite(LED, HIGH): delay(200);
      digitalWrite(LED, LOW); delay(200);
    }
  }
  void dikcizgioku() {
  if (sensors[0] < 100 && sensors[l] < 100 && sensors[2] < 100 && sensors[3] < 100 &&
      sensors[4] < 100 && sensors[5] < 100 && sensors[6] < 100 && sensors[7] < 100 ) {
    cizgisay++; motorkontrol(tabanhiz, tabanhiz); delay(50);
  }
}
void sensorlerioku_yaz() {
  for (unsigned char z = 0; z < 8; z++)
  {
    Serial.print(sensors[z]);
    Serial.print('\t');
  }
  Serial.println();
  delay(250);
}
void motorkontrol(int solmotorpwm, int sagmotorpwm) {
  if (sagmotorpwm <= O) {
    sagmotorpwm = abs(sagmotorpwm);
    digitalWrite(sagmotorl, LOW);
    digitalWrite(sagmotor2, HIGH);
    analogWrite(sagmotorpwmpin, sagmotorpwm);
  }
  else {
    digitalWrite(sagmotorl, HIGH);
    digitalWrite(sagmotor2, LOW);
    analogWrite(sagmotorpwmpin, sagmotorpwm);
  }
  if (solmotorpwm <= O) {
    solmotorpwm = abs(solmotorpwm);
    digitalWrite(solmotor1, LOW);
    digitalWrite(solmotor2, HIGH);
    analogWrite(solmotorpwmpin, solmotorpwm);
  }
  else {
    digitalWrite(solmotor1, HIGH);
    digitalWrite(solmotor2, LOW);
    analogWrite(solmotorpwmpin, solmotorpwm);
  }
}
void fren1e(int bekle)(motorkontrol(0, 0), delay(bekle);
}
void hafifsagadon() {
  motorkontrol(60, -60);
}
void hafifsoladon() {
  motorkontrol(-60, 60);
}
 
@krmxlk01 Kas mesajını kas...

Ne tür bir hata alıyorsun? Program sorunsuz derleniyor ve yükleniyor ama kod istediğin sonucu vermiyor mu? İstediğin sonuç ne?

Daha fazla bilgi gerek.
Arduino:1.8.19 (Windows 10), Kart:"Arduino Nano, ATmega328P"





















C:\Users\Administrator\Desktop\çizgi proje\nuri_\nuri_.ino: In function 'void setup()':

nuri_:45:24: error: 'hafifsagadon' was not declared in this scope

nuri_:46:25: error: 'hafifsoladon' was not declared in this scope

nuri_:47:26: error: 'hafifsagadon' was not declared in this scope

nuri_:48:26: error: 'hafifsoladon' was not declared in this scope

nuri_:49:26: error: 'hafifsagadon' was not declared in this scope

nuri_:50:26: error: 'hafifsoladon' was not declared in this scope

nuri_:55:7: error: 'frenle' was not declared in this scope

C:\Users\Administrator\Desktop\çizgi proje\nuri_\nuri_.ino:55:7: note: suggested alternative: 'free'

In file included from sketch\nuri_.ino.cpp:1:0:

C:\Users\Administrator\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino/Arduino.h:41:14: error: expected ')' before numeric constant

#define LOW 0x0

^

C:\Users\Administrator\Desktop\çizgi proje\nuri_\nuri_.ino:67:33: note: in expansion of macro 'LOW'

nuri_:67:36: error: expected ';' before ')' token

C:\Users\Administrator\Desktop\çizgi proje\nuri_\nuri_.ino: In function 'void loop()':

nuri_:84:21: error: 'frenle' was not declared in this scope

C:\Users\Administrator\Desktop\çizgi proje\nuri_\nuri_.ino:84:21: note: suggested alternative: 'free'

nuri_:107:1: error: 'solmotorpwn' was not declared in this scope

C:\Users\Administrator\Desktop\çizgi proje\nuri_\nuri_.ino:107:1: note: suggested alternative: 'solmotorpwm'

C:\Users\Administrator\Desktop\çizgi proje\nuri_\nuri_.ino: In function 'void sensoroku()':

nuri_:161:6: error: expected '(' before '{' token

nuri_:162:4: error: expected '(' before '{' token

C:\Users\Administrator\Desktop\çizgi proje\nuri_\nuri_.ino: In function 'void flashyap()':

nuri_:166:28: error: expected ';' before ':' token

C:\Users\Administrator\Desktop\çizgi proje\nuri_\nuri_.ino: At global scope:

nuri_:222:23: error: initializer provided for function

nuri_:223:1: error: expected declaration before '}' token

exit status 1

'hafifsagadon' was not declared in this scope



This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
 
Arduino:1.8.19 (Windows 10), Kart:"Arduino Nano, ATmega328P"





















C:\Users\Administrator\Desktop\çizgi proje\nuri_\nuri_.ino: In function 'void setup()':

nuri_:45:24: error: 'hafifsagadon' was not declared in this scope

nuri_:46:25: error: 'hafifsoladon' was not declared in this scope

nuri_:47:26: error: 'hafifsagadon' was not declared in this scope

nuri_:48:26: error: 'hafifsoladon' was not declared in this scope

nuri_:49:26: error: 'hafifsagadon' was not declared in this scope

nuri_:50:26: error: 'hafifsoladon' was not declared in this scope

nuri_:55:7: error: 'frenle' was not declared in this scope

C:\Users\Administrator\Desktop\çizgi proje\nuri_\nuri_.ino:55:7: note: suggested alternative: 'free'

In file included from sketch\nuri_.ino.cpp:1:0:

C:\Users\Administrator\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino/Arduino.h:41:14: error: expected ')' before numeric constant

#define LOW 0x0

^

C:\Users\Administrator\Desktop\çizgi proje\nuri_\nuri_.ino:67:33: note: in expansion of macro 'LOW'

nuri_:67:36: error: expected ';' before ')' token

C:\Users\Administrator\Desktop\çizgi proje\nuri_\nuri_.ino: In function 'void loop()':

nuri_:84:21: error: 'frenle' was not declared in this scope

C:\Users\Administrator\Desktop\çizgi proje\nuri_\nuri_.ino:84:21: note: suggested alternative: 'free'

nuri_:107:1: error: 'solmotorpwn' was not declared in this scope

C:\Users\Administrator\Desktop\çizgi proje\nuri_\nuri_.ino:107:1: note: suggested alternative: 'solmotorpwm'

C:\Users\Administrator\Desktop\çizgi proje\nuri_\nuri_.ino: In function 'void sensoroku()':

nuri_:161:6: error: expected '(' before '{' token

nuri_:162:4: error: expected '(' before '{' token

C:\Users\Administrator\Desktop\çizgi proje\nuri_\nuri_.ino: In function 'void flashyap()':

nuri_:166:28: error: expected ';' before ':' token

C:\Users\Administrator\Desktop\çizgi proje\nuri_\nuri_.ino: At global scope:

nuri_:222:23: error: initializer provided for function

nuri_:223:1: error: expected declaration before '}' token

exit status 1

'hafifsagadon' was not declared in this scope



This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
Başta not declared in the scope hatalarından başlayalım, fonksiyonlarını üstte tanımla veya üstte tanımlayıp altta prototiple.

Daha sonra süslü parantezlerin eşleşip eşleşmediğini kontrol et.

Bu tür hatalar yapmamak için pratik önemli.
 
Başta not declared in the scope hatalarından başlayalım, fonksiyonlarını üstte tanımla veya üstte tanımlayıp altta prototiple.

Daha sonra süslü parantezlerin eşleşip eşleşmediğini kontrol et.

Bu tür hatalar yapmamak için pratik önemli.

Hocam not declared in the scipe hatalarında yardımcı olur musunuz demek istediğinizi anlamadım.

Başta not declared in the scope hatalarından başlayalım, fonksiyonlarını üstte tanımla veya üstte tanımlayıp altta prototiple.

Daha sonra süslü parantezlerin eşleşip eşleşmediğini kontrol et.

Bu tür hatalar yapmamak için pratik önemli.
Hocam bütün sorunlar çözüldü derlene hatası vermiyor fakat karta yüklerken şu hatayû verdi

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x55
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x55
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x55
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x55
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x55
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x55
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x55
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x55
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x55
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x55
Problem uploading to board. See https://support.arduino.cc/hc/en-us/sections/360003198300 for suggestions.
 
Son düzenleme:

Technopat Haberler

Geri
Yukarı