Yardım Arduino 'mesafe' was not declared in this scope hatası

Bu konuyu okuyanlar

ATACANKY

Öğrenci
Katılım
27 Temmuz 2021
Mesajlar
21
Reaksiyon puanı
3
Puanları
3
Merhaba Arduino dan mesafe ölcüm kodu yapmaya başladım ama "int mesafe" yapmama rağmen olmuyor.

KOD:
#define echoPin 6
#define trigPin 7
#define buzzerPin 8

int maximumRange = 50;
int minimumRange = 0;


void setup() {
pinMode(trigPin,OUTPUT);
pinMode(echoPin,INPUT);
pinMode(buzzerPin,OUTPUT);
}

void loop() {
int olcum = mesafe(maximumRange, minimumRange)

melodi(olcum*10);


}
int mesafe(int maxrange, int minrange);
{
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigpin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);
distance = duration / 58.2;
delay(50);
if (distance m >= maxrange || distance <= minrange)
return 0;
return distance;

}
int melodi(int dly){
tone(buzzerPin, 440);
delay(dly);
noTone(buzzerpin);
delay(dly);
}
 

Assad Najjar

Profesör
Katılım
18 Ocak 2019
Mesajlar
1,673
Reaksiyon puanı
2,305
Puanları
113
Yaş
30
Arduino programlamayı bilmiyorum; lakin C++ ve Delphi biliyorum. Mantık yürütecek olursam eğer, bir fonksiyonu tanımlamadan önce çağırmak istiyorsan "forward declaration" yapman lazım.

Bu şekilde kod yazmışsın:

C++:
int olcum = mesafe(maximumRange, minimumRange)

Lakin bu fonksiyonun ne olduğunu bu satırın yukarısına yazmamışsın. Bu fonksiyonun içeriğini daha aşağıda yazmışsın.

Önünde iki seçenek var:

1. "Forward declaration" yapmak. Yani, fonksiyonun tanımını kullanmadan önce yazmak. Yani şu şekilde:

C++:
int mesafe(int maxrange, int minrange);
int olcum = mesafe(maximumRange, minimumRange) //Bu arada bu satırın sonunda noktalı virgül yok, burada da yanlış yapmışsın.

2. Ya da fonksiyonun içeriğini yukarıya yazmak. Yani şu şekilde:

C++:
int mesafe(int maxrange, int minrange); //Fonksiyon tanımlarının sonuna noktalı virgül konmaz. (Struct tanımlarken ise köşeli parantezi kapattıktan sonra noktalı virgül konur.)
{
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigpin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);
distance = duration / 58.2;
delay(50);
if (distance m >= maxrange || distance <= minrange)
return 0;
return distance;

}

int olcum = mesafe(maximumRange, minimumRange);
 
Üst