Arduino kodundaki hata nedir?

Halil Aydin

Hectopat
Katılım
3 Şubat 2020
Mesajlar
144
Daha fazla  
Cinsiyet
Erkek
Selam. Geliştirme kartları hakkında çok şey bilmiyorum. Yarın sınavım var o yüzden son gün öğrenmesindeyim. Hocamız sınavda çıkacak şeye dair örnek verdi. Örneğin kullanıcıdan veri alınacak. A ise şu olacak b ise şu olacak gibi. Ben veriyi alıyorum. Ama sadece bir kere ekrana verebiliyorum. Kod üzerinden anlatayım. Kodlarım şu.

Kod:
char veri;
int trig=9, echo=10, zaman, mesafe;
void setup() {
Serial.begin(9600);
Serial.println("*** Aşağıda belirtilen değerlerden birini giriniz ***");
Serial.println("a: Mesafe sensörü ile ölçulen değerleri gösterir");
Serial.println("b: Ldr ile ölçülen değerleri gösterir");
Serial.println("c: Mesafe sensöründen gelen değer ve Ldr'den gelen degere göre RGB led random çalisir");
Serial.println("d: Devredeki butonlar led şiddetini arttırır ve azaltır");
Serial.println("e: Potansiyometre ile RGB ledin şiddeti kontrol edilir");
Serial.println("f: 10'dan geri sayım başlar, kırmızı led yanarken buzzer öter. Butona basarsanız sayım durur");
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);

}
void loop() {
if (Serial.available() > 0) {
veri = Serial.read();
if (veri == 'a') {
digitalWrite(trig, HIGH);
delayMicroseconds(100);
digitalWrite(trig,LOW);
zaman=pulseIn(echo, HIGH);
mesafe=(zaman/2)/29.1;
Serial.print("Ölçülen mesafe:");
Serial.print(mesafe);
Serial.println("cm");
delay(1000);
}
else if (veri == 'b') {
Serial.println("*Ldr ile ölçülen değerleri gösterir*");
}
else if (veri == 'c') {
Serial.println("*Mesafe sensöründen gelen değer ve Ldr'den gelen degere göre RGB led random çalisir*");
}
else if (veri == 'd') {
Serial.println("*Devredeki butonlar led şiddetini arttırır ve azaltır*");
}
else if (veri == 'e') {
Serial.println("*Potansiyometre ile RGB ledin siddeti kontrol edilir*");
}
else if (veri == 'f') {
Serial.println("*0'dan geri sayım başlar, kırmızi led yanarken buzzer öter. Butona basarsanız sayım durur*");
}
}
delay(1000);

}


Burada a verisi geldiği zaman, mesafe sensörü bir kere ölçüp yazıyor. Ben ise b c gibi başka bir harf girene kadar oynamasını istiyorum. Bunu nasıl yapabilirim?
 
Kod:
char veri;
int trig=9, echo=10, zaman, mesafe;
void setup() {
Serial.begin(9600);
Serial.println("*** Aşağıda belirtilen değerlerden birini giriniz ***");
Serial.println("a: Mesafe sensörü ile ölçulen değerleri gösterir");
Serial.println("b: Ldr ile ölçülen değerleri gösterir");
Serial.println("c: Mesafe sensöründen gelen değer ve Ldr'den gelen degere göre RGB led random çalisir");
Serial.println("d: Devredeki butonlar led şiddetini arttırır ve azaltır");
Serial.println("e: Potansiyometre ile RGB ledin şiddeti kontrol edilir");
Serial.println("f: 10'dan geri sayım başlar, kırmızı led yanarken buzzer öter. Butona basarsanız sayım durur");
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);

}
void loop() {
if (Serial.available() > 0) {
veri = Serial.read();
}
if (veri == 'a') {
digitalWrite(trig, HIGH);
delayMicroseconds(100);
digitalWrite(trig,LOW);
zaman=pulseIn(echo, HIGH);
mesafe=(zaman/2)/29.1;
Serial.print("Ölçülen mesafe:");
Serial.print(mesafe);
Serial.println("cm");
delay(1000);
}
else if (veri == 'b') {
Serial.println("*Ldr ile ölçülen değerleri gösterir*");
}
else if (veri == 'c') {
Serial.println("*Mesafe sensöründen gelen değer ve Ldr'den gelen degere göre RGB led random çalisir*");
}
else if (veri == 'd') {
Serial.println("*Devredeki butonlar led şiddetini arttırır ve azaltır*");
}
else if (veri == 'e') {
Serial.println("*Potansiyometre ile RGB ledin siddeti kontrol edilir*");
}
else if (veri == 'f') {
Serial.println("*0'dan geri sayım başlar, kırmızi led yanarken buzzer öter. Butona basarsanız sayım durur*");
}

delay(1000);

}

@Halil Aydin
Kodu değiştirdim. Bu şekilde bir dener misiniz?
 
Hayır, şöyle oluyor. A'ya basıyorum. Ölçülen değeri bir kere yazıyor. Eğer bir kere daha yazmasını

Ekran görüntüsü 2022-11-09 112115.png


istersem bir daha A'ya basmam gerekiyor.
 

Yeni konular

Geri
Yukarı