C/C++ C kodum if komutundan sonra +1 eklemiyor

Shankusu

Hectopat
Katılım
5 Şubat 2022
Mesajlar
236
Daha fazla  
Cinsiyet
Erkek
Merhaba, benim aşağıdaki gibi bir kodum var. En kısa mantığı ile sensör değeri 7 veya 7'den küçük olunca, değeri 0 olan gry değişkenine +1 ekleyecek, daha sonra 1. döngü çalışacak. Daha sonra sensör değeri tekrar 7 veya 7'den küçük olunca 2. döngü çalışacak. Aynı şekilde bir kez daha if bloğu olduktan sonra, gry değeri 4 olunca sifirlayacak ve baştan başlayacak lakin bende hep 1. döngü (gry <= 0 döngüsü) çalışıyor ve +1 eklemiyor.

C:
int trigPin = 12;
int echoPin = 13;
int mtp1 = 8;
int mtp2 = 9;
int mtp3 = 10;
int mtp4 = 11;
int gry;
void setup(){
 pinMode(trigPin, OUTPUT);
 pinMode(echoPin, INPUT);
 Serial.begin(9600);
 pinMode(mtp1, OUTPUT);
 pinMode(mtp2, OUTPUT);
 pinMode(mtp3, OUTPUT);
 pinMode(mtp4, OUTPUT);

}

void loop(){
 int gry = 0;
 int sure, uzaklik;
 digitalWrite(trigPin, HIGH);
 delayMicroseconds(1000);

 digitalWrite(trigPin, LOW);
 sure = pulseIn(echoPin, HIGH);

 uzaklik = sure/58;
 Serial.print("uzaklik: ");
 Serial.println(uzaklik);
 delay(200);
 if(uzaklik <= 7){
 gry = gry+1 ;
 delay(1000);
 if(gry > 0){
 if(gry == 1){
 digitalWrite(mtp1, HIGH);
 digitalWrite(mtp2, LOW);
 digitalWrite(mtp3, HIGH);
 digitalWrite(mtp4, LOW);
 delay(5000);
 digitalWrite(mtp1, LOW);
 digitalWrite(mtp2, LOW);
 digitalWrite(mtp3, LOW);
 digitalWrite(mtp4, LOW);
 Serial.println(gry);

 }
 if(gry == 2){
 digitalWrite(mtp1, LOW);
 digitalWrite(mtp2, HIGH);
 digitalWrite(mtp3, LOW);
 digitalWrite(mtp4, HIGH);
 delay(5000);
 digitalWrite(mtp1, LOW);
 digitalWrite(mtp2, LOW);
 digitalWrite(mtp3, LOW);
 digitalWrite(mtp4, LOW);
 Serial.println(gry);

 }
 if(gry == 3){
 digitalWrite(mtp1, HIGH);
 digitalWrite(mtp2, LOW);
 digitalWrite(mtp3, LOW);
 digitalWrite(mtp4, LOW);
 delay(5000);
 digitalWrite(mtp1, LOW);
 digitalWrite(mtp2, LOW);
 digitalWrite(mtp3, LOW);
 digitalWrite(mtp4, LOW);
 Serial.println(gry);

 }

 Serial.println(gry);

 }
 }

}

(C kategorisine açma sebebim; 0 Arduino bilgisi ile sadece C bilerek düzeltilebilecek olması.)
 

İnt trigpin = 12;
İnt echopin = 13;
İnt MTP1 = 8;
İnt MTP2 = 9;
İnt MTP3 = 10;
İnt MTP4 = 11;
İnt gry;
Void setup() {
Pinmode(trigpin, output);
Pinmode(echopin, ınput);
Serial. Begin(9600);
Pinmode(MTP1, output);
Pinmode(MTP2, output);
Pinmode(MTP3, output);
Pinmode(MTP4, output);
}
Void loop() {
İnt sure, uzaklik;
Digitalwrite(trigpin, hıgh);
Delaymicroseconds(1000);
Digitalwrite(trigpin, Low);
Sure = pulseın(echopin, hıgh);
Uzaklik = sure / 58;
Serial. Print("uzaklik: ");
Serial. Println(uzaklik);
Delay(200);
İf (uzaklik <= 7) {
Gry = gry + 1;
Delay(1000);
İf (gry > 0) {
İf (gry == 1) {
Digitalwrite(MTP1, hıgh);
Digitalwrite(MTP2, Low);
Digitalwrite(MTP3, hıgh);
Digitalwrite(MTP4, Low);
Delay(5000);
Digitalwrite(MTP1, Low);
Digitalwrite(MTP2, Low);
Digitalwrite(MTP3, Low);
Digitalwrite(MTP4, Low);
Serial. Println(gry);
}
İf (gry == 2) {
Digitalwrite(MTP1, Low);
Digitalwrite(MTP2, hıgh);
Digitalwrite(MTP3, Low);
Digitalwrite(MTP4, hıgh);
Delay(5000);
Digitalwrite(MTP1, Low);
Digitalwrite(MTP2, Low);
Digitalwrite(MTP3, Low);
Digitalwrite(MTP4, Low);
Serial. Println(gry);
}
İf (gry == 3) {
Digitalwrite(MTP1, hıgh);
Digitalwrite(MTP2, Low);
Digitalwrite(MTP3, Low);
Digitalwrite(MTP4, Low);
Delay(5000);
Digitalwrite(MTP1, Low);
Digitalwrite(MTP2, Low);
Digitalwrite(MTP3, Low);
Digitalwrite(MTP4, Low);
Serial. Println(gry);
}
Serial. Println(gry);
}
}
}
Bu şekilde dener misin?


Değişken gry olanda problem var sanırım.

Ayrıca iki kere bildirmişsin.
 

Tabii deneyeyim hemen
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…