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ı.)
 
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?

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ı.)

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

Ayrıca iki kere bildirmişsin.
 
İ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
 

Technopat Haberler

Geri
Yukarı