Arduino kodundaki hata nedir?

Halil Aydin

Hectopat
Katılım
3 Şubat 2020
Mesajlar
159
Çözümler
1
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?
 
@osos11 teşekkür etmekle beraber maalesef bir değişiklik olmadı :/
 
Hayır, şöyle oluyor. A'ya basıyorum. Ölçülen değeri bir kere yazıyor. Eğer bir kere daha yazmasını



istersem bir daha A'ya basmam gerekiyor.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…