• SDN Forum üyelikleri çok yakında yeniden açılıyor. Siz de bu büyük topluluğun bir parçası olmak için bizi takipte kalın, gelişmeleri kaçırmayın!

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

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);
}
 

Alois Alzheimer

Profesör
Katılım
18 Ocak 2019
Mesajlar
1,718
Reaksiyon puanı
2,321
Puanları
358
Yaş
32
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