Arduino 'else' without a previous 'if' sorunu

MekBuk Pıro

Centipat
Katılım
23 Temmuz 2019
Mesajlar
98
Çözümler
1
Arkadaşlar daha çok yeni olduğum Arduino'da bu sorunu yaşıyorum. Joystick ile 4 adet LED'i kontrol etmek için kod yazdım. Bunlar sorunsuz çalışırken Joystickin butonuna bastığımda da tüm LED'ler yansın istiyorum. Aşağıdaki kodu yazdım ancak 'else' without a previous 'if' hatası alıyorum.
Kod:
int xPin = A0;
int yPin = A1;
int butonPin = 2;
int ledK=2; int ledM=3; int ledY=4; int ledS=5;

int xPozisyon = 0;
int yPozisyon = 0;
int butonDurum = 0;

void setup() {
pinMode(xPin, INPUT);
pinMode(yPin, INPUT);
pinMode(butonPin, INPUT_PULLUP);
pinMode(ledK,OUTPUT); pinMode(ledM,OUTPUT);
pinMode(ledY,OUTPUT); pinMode(ledS,OUTPUT);
}

void loop() {
xPozisyon = analogRead(xPin);
yPozisyon = analogRead(yPin);
butonDurum = digitalRead(butonPin);
if(xPozisyon<10){digitalWrite(ledK,HIGH);}else{digitalWrite(ledK,LOW);}
if(xPozisyon>1000){digitalWrite(ledM,HIGH);}else{digitalWrite(ledM,LOW);}
if(yPozisyon<10){digitalWrite(ledY,HIGH);}else{digitalWrite(ledY,LOW);}
if(yPozisyon>1000){digitalWrite(ledS,HIGH);}else{digitalWrite(ledS,LOW);}
if(" | Buton Durum: "){digitalWrite(ledK,HIGH);}else{digitalWrite(ledK,LOW);}{digitalWrite(ledM,HIGH);}else{digitalWrite(ledM,LOW);}digitalWrite(ledY,HIGH);}else{digitalWrite(ledY,LOW);}{digitalWrite(ledS,HIGH);}else{digitalWrite(ledS,LOW);}
}
 
Yazman gereken kod şu olmalı.
C++:
if(buttonAll > "Buraya buton basılıyken değeri gelecek"){
    digitalWrite(ledK,HIGH);
    digitalWrite(ledM,HIGH);
    digitalWrite(ledY,HIGH);
    digitalWrite(ledS,HIGH)
}
"buttonAll" değişkenini de kendin butonun pinine göre oluşturabilirsin.
 
Yazman gereken kod şu olmalı.
C++:
if(buttonAll > "Buraya buton basılıyken değeri gelecek"){
    digitalWrite(ledK,HIGH);
    digitalWrite(ledM,HIGH);
    digitalWrite(ledY,HIGH);
    digitalWrite(ledS,HIGH)
}
"buttonAll" değişkenini de kendin butonun pinine göre oluşturabilirsin.
Yardım için teşekkürler. Ben denedim ama yine olmadı. ButtonAll'a ve "Buraya buton basılıyken değeri gelecek" olan yere tam olarak ne yazmalıyım?
 
Arduino bildiğimden değil ama son satırda if kullandıktan sonra 3-4 tane else kullanmışsın. Muhtemelen hata orada. Arada kalanların else if olması gerekmiyor mu?
 
Arduino bildiğimden değil ama son satırda if kullandıktan sonra 3-4 tane else kullanmışsın. Muhtemelen hata orada. Arada kalanların else if olması gerekmiyor mu?
Kod:
int xPin = A0;
int yPin = A1;
int butonPin = 2;
int ledK=2; int ledM=3; int ledY=4; int ledS=5;
 
int xPozisyon = 0;
int yPozisyon = 0;
int butonDurum = 0;
 
void setup() {
pinMode(xPin, INPUT);
pinMode(yPin, INPUT);
pinMode(butonPin, INPUT_PULLUP);
pinMode(ledK,OUTPUT); pinMode(ledM,OUTPUT);
pinMode(ledY,OUTPUT); pinMode(ledS,OUTPUT);
}
 
void loop() {
xPozisyon = analogRead(xPin);
yPozisyon = analogRead(yPin);
butonDurum = digitalRead(butonPin);
if(xPozisyon<10){digitalWrite(ledK,HIGH);}else{digitalWrite(ledK,LOW);}
if(xPozisyon>1000){digitalWrite(ledM,HIGH);}else{digitalWrite(ledM,LOW);}
if(yPozisyon<10){digitalWrite(ledY,HIGH);}else{digitalWrite(ledY,LOW);}
if(yPozisyon>1000){digitalWrite(ledS,HIGH);}else{digitalWrite(ledS,LOW);}
if(" | Buton Durum: "){digitalWrite(ledK,HIGH);}else if{digitalWrite(ledK,LOW);}{digitalWrite(ledM,HIGH);}else if{digitalWrite(ledM,LOW);}digitalWrite(ledY,HIGH);}else if{digitalWrite(ledY,LOW);}{digitalWrite(ledS,HIGH);}else if{digitalWrite(ledS,LOW);}
Bu şekilde mi? O zaman da expected '(' before '{' token hatası veriyor.
 
Kod:
int xPin = A0;
int yPin = A1;
int butonPin = 2;
int ledK=2; int ledM=3; int ledY=4; int ledS=5;

int xPozisyon = 0;
int yPozisyon = 0;
int butonDurum = 0;

void setup() {
pinMode(xPin, INPUT);
pinMode(yPin, INPUT);
pinMode(butonPin, INPUT_PULLUP);
pinMode(ledK,OUTPUT); pinMode(ledM,OUTPUT);
pinMode(ledY,OUTPUT); pinMode(ledS,OUTPUT);
}

void loop() {
xPozisyon = analogRead(xPin);
yPozisyon = analogRead(yPin);
butonDurum = digitalRead(butonPin);
if(xPozisyon<10){digitalWrite(ledK,HIGH);}else{digitalWrite(ledK,LOW);}
if(xPozisyon>1000){digitalWrite(ledM,HIGH);}else{digitalWrite(ledM,LOW);}
if(yPozisyon<10){digitalWrite(ledY,HIGH);}else{digitalWrite(ledY,LOW);}
if(yPozisyon>1000){digitalWrite(ledS,HIGH);}else{digitalWrite(ledS,LOW);}
if(" | Buton Durum: "){digitalWrite(ledK,HIGH);}else if{digitalWrite(ledK,LOW);}{digitalWrite(ledM,HIGH);}else if{digitalWrite(ledM,LOW);}digitalWrite(ledY,HIGH);}else if{digitalWrite(ledY,LOW);}{digitalWrite(ledS,HIGH);}else if{digitalWrite(ledS,LOW);}
Bu şekilde mi? O zaman da expected '(' before '{' token hatası veriyor.

Tam olarak değil. "else if" kalıbından sonra "if" kalıbındaki gibi şart belirtmelisin. "else if (falan filan)" şeklinde. else if'ten sonra parantez ile şart belirtmediğin için hata alıyorsun.
 
Tam olarak değil. "else if" kalıbından sonra "if" kalıbındaki gibi şart belirtmelisin. "else if (falan filan)" şeklinde. else if'ten sonra parantez ile şart belirtmediğin için hata alıyorsun.
Ya sizden ricam siz düzeltebilir misiniz anlamadım gitti 10 defa hata verdi 1 tuş için tüm gündür uğraşıyorum ya!
 
Ya sizden ricam siz düzeltebilir misiniz anlamadım gitti 10 defa hata verdi 1 tuş için tüm gündür uğraşıyorum ya!

Düzeltmesine düzeltirim ama şartlara ne yazacağını bilmiyorum ki :)

Aşağıda boş olan else if şartlarını sen doldur madem.

C#:
int xPin = A0;
int yPin = A1;
int butonPin = 2;
int ledK=2; int ledM=3; int ledY=4; int ledS=5;

int xPozisyon = 0;
int yPozisyon = 0;
int butonDurum = 0;

void setup()
{
    pinMode(xPin, INPUT);
    pinMode(yPin, INPUT);
    pinMode(butonPin, INPUT_PULLUP);
    pinMode(ledK,OUTPUT);
    pinMode(ledM,OUTPUT);
    pinMode(ledY,OUTPUT);
    pinMode(ledS,OUTPUT);
}

void loop()
{
    xPozisyon = analogRead(xPin);
    yPozisyon = analogRead(yPin);
    butonDurum = digitalRead(butonPin);
if(xPozisyon<10)
{
    digitalWrite(ledK,HIGH);
}
else
{
    digitalWrite(ledK,LOW);
}
if(xPozisyon>1000)
{
    digitalWrite(ledM,HIGH);
}
else
{
    digitalWrite(ledM,LOW);
}
if(yPozisyon<10)
{
    digitalWrite(ledY,HIGH);
}
else
{
    digitalWrite(ledY,LOW);
}
if(yPozisyon>1000)
{
    digitalWrite(ledS,HIGH);
}
else
{
    digitalWrite(ledS,LOW);
}
if(" | Buton Durum: ")
{    
    digitalWrite(ledK,HIGH);
}
else if(şartı sen yazmalısın ne yapmaya çalıştığını bilmiyorum)
{
    digitalWrite(ledK,LOW);
    digitalWrite(ledM,HIGH);
}
else if(şartı sen yazmalısın ne yapmaya çalıştığını bilmiyorum)
{
    digitalWrite(ledM,LOW);
    digitalWrite(ledY,HIGH);
}
else if(şartı sen yazmalısın ne yapmaya çalıştığını bilmiyorum)
{
    digitalWrite(ledY,LOW);
    digitalWrite(ledS,HIGH);
}
else
{
    digitalWrite(ledS,LOW);}
}
 
Yardımın için teşekkürler. Şöyle, bir joystick var ve yukarı aşağı sağ sol hareketlerinde ledleri yakıyor. Ayrıca bir de tuş var. Bu tuşa bastığımda hepsi birden yansın istiyorum.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Geri
Yukarı