Expected unqualified-id before “if” Hatası ve Örnek Kod

Casper

GadgetEfsanesi
Arduino kodumu derlerken 'expected unqualified-id before if' hatası alıyorum. Yukarıda paylaştığım kodda, özellikle hareket algoritmaları ve sensör kontrolü içeren kısımlarda bir sorun olduğunu düşünüyorum. Kodun detayları aşağıda:

---
C++:
int trigPin=7;
int echoPin=8;

int motorA1 = 5; 
int motorA2 = 6; 
int motorB1 = 9; 
int motorB2 = 10; 

int onsagled = 13;
int onsolled = 12;
int arkasagled = 3;
int arkasolled = 4;
int gazalarmiicinicerdekiled=11;

int buzzer = 7;

int vel = 255; 
int state = '0';

void setup() { 
Serial.begin(9600); 
pinMode(motorA1, OUTPUT);
pinMode(motorA2, OUTPUT);
pinMode(motorB1, OUTPUT);
pinMode(motorB2, OUTPUT);
pinMode(onsagled,OUTPUT);
pinMode(onsolled,OUTPUT);
pinMode(arkasagled,OUTPUT);
pinMode(arkasolled,OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
} 

void loop() { 
  
int sure, mesafe;
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  sure = pulseIn(echoPin, HIGH);
  mesafe = (sure/2) / 29.1;

int isik = analogRead(A5);  
Serial.println(isik);
delay(500);

if(Serial.available()>0){ 
state = Serial.read();
}

if (state == '0'){
      vel=0;}
    else if (state == '1'){
      vel=100;}
    else if (state == '2'){
      vel=180;}
    else if (state == '3'){
      vel=200;}
    else if (state == '4'){
      vel=255;}
---

Kodun tamamını paylaştım ve sorunun büyük ihtimalle loop fonksiyonundaki yapısal bir hatadan kaynaklandığını düşünüyorum. Kodumda if bloklarının yerleşimi veya başka bir yanlışlık mı var emin değilim. Bu konuda öneri ve çözüm yollarınızı paylaşabilir misiniz?
 
Çözüm
Bu hata genelde bir süslü parantez eksikliğinden kaynaklanır. loop fonksiyonunun sonunda açılmış bir parantezi kapatmayı unutmuş olabilirsiniz. Parantez eşleşmelerini kontrol edin.
Kodunuzu incelediğimde loop fonksiyonunun bir yerinde fazla süslü parantez veya yanlış kapatma olduğunu fark ettim. Her bir if bloğundan sonra süslü parantezleri dikkatlice kontrol edin.
 
Bu hata genelde bir süslü parantez eksikliğinden kaynaklanır. loop fonksiyonunun sonunda açılmış bir parantezi kapatmayı unutmuş olabilirsiniz. Parantez eşleşmelerini kontrol edin.
 
Çözüm
Kodun state değişkeniyle ilgili kısmını gözden geçirin. Özellikle tanımlamayı int state = '0'; yerine char state = '0'; olarak yapmayı deneyin. Bu, veri tipine bağlı bir hata olabilir.
 
Kod içinde kullandığınız if koşullarını tek tek kontrol edin. Birkaç yerde if ile başlanan bloklardan önce başka bir şey unutmuş olabilirsiniz.
 
Kodunuzu Arduino IDE'de tekrar derleyerek, hatanın tam satır numarasını öğrenmeye çalışın. Genelde bu tür hatalar, bir fonksiyonun içinde olmayan yanlış bir if kullanımıyla ilişkilidir.
 
Kodunuzu daha okunabilir hale getirmek için bölümlere ayırmayı deneyebilirsiniz. loop fonksiyonundaki if bloklarını ayrı bir fonksiyona taşıyarak daha kolay hata ayıklayabilirsiniz.
 
Kodunuzu daha düzenli hale getirmek için süslü parantezleri doğru biçimde hizalayın. Böylece, nerede bir hata olduğunu daha kolay anlayabilirsiniz.
 
state değişkeniniz için kullanacağınız karakterlerin ASCII değerlerini kullanmayı deneyebilirsiniz. Örneğin, 'a' yerine doğrudan 97 yazmayı deneyebilirsiniz.
 

Yeni Konular

Geri
Üst