Koddaki hatayı çözemedim

masazuka

Üye
Katılım
31 Ara 2020
Mesajlar
2
Puanları
1
Yaş
24
ısıya göre yanan renkli ledler ile ilgili bir çalışmam vardı yapmıştım çalışıyordu fakat sonradan 4. ledi ekliyim dedim ve kodlar çalışmamaya başladı problem nerde çözemedim ( 4. ledi eklediğimde ledlerin isimleri karışıyor diye isimlerini de değiştirmiştim )

KARTA HALİ HAZIRDA PROBLEMSİZ ÇALIŞAN KODLAR .
Kod:
int lm35Pin = A0;

int led = 8;

int lediki = 9;

int leduc = 10 ;

#define buzzer 9

int zaman = 50;

int okunan_deger = 0;

float sicaklik_gerilim = 0;

float sicaklik = 0;



void setup()

{



  pinMode(led,OUTPUT);

  pinMode(buzzer,OUTPUT);

  Serial.begin(9600);

}



void loop()

{

  okunan_deger = analogRead(lm35Pin);

  sicaklik_gerilim = (okunan_deger / 1023.0)*5000;

  sicaklik = sicaklik_gerilim /10.0;

  Serial.println(sicaklik);

  delay(1000);

 



  if(sicaklik >= 23)

   {

    digitalWrite(led,HIGH);

    digitalWrite(lediki,LOW);

    digitalWrite(leduc,LOW);

   delay(500);

   digitalWrite(led,LOW);

    digitalWrite(lediki,LOW);

    digitalWrite(leduc,LOW);

    delay(2500);

 

 

 

 

   }



  else if(sicaklik < 22 && sicaklik >= 21)

      {

    digitalWrite(led,LOW);

    digitalWrite(lediki,HIGH);

    digitalWrite(leduc,LOW);

      delay(500);

   digitalWrite(led,LOW);

    digitalWrite(lediki,LOW);

    digitalWrite(leduc,LOW);

    delay(2500);

      

      

       }

  else if (sicaklik < 21 )



    {

    digitalWrite(led,LOW);

    digitalWrite(lediki,LOW);

    digitalWrite(leduc,HIGH);

      delay(500);

   digitalWrite(led,LOW);

    digitalWrite(lediki,LOW);

    digitalWrite(leduc,LOW);

    delay(2500);

        

      }



}



4.LEDİ EKLEDİĞİM VE REVİZE YAPTIPĞIM ÇALIŞMAYAN KODLAR



int lm35Pin = A0;

int ledyesil = 9;

int ledsari = 8;

int ledkirmizi = 10;

int ledmavi = 11;



#define buzzer 9

int zaman = 50;

int okunan_deger = 0;

float sicaklik_gerilim = 0;

float sicaklik = 0;



void setup()

{

   pinMode(ledkirmizi,OUTPUT);

   pinMode(ledmavi,OUTPUT);

   pinMode(ledsari,OUTPUT);

   pinMode(ledyesil,OUTPUT);

  Serial.begin(9600);

}



void loop()

{

  okunan_deger = analogRead(lm35Pin);

  sicaklik_gerilim = (okunan_deger / 1023.0)*5000;

  sicaklik = sicaklik_gerilim /10.0;

  Serial.println(sicaklik);

  delay(1000);

 



  if (sicaklik >= 23)

   {

    digitalWrite(ledkirmizi,HIGH);

    digitalWrite(ledsari,LOW);

    digitalWrite(ledyesil,LOW);

   digitalWrite(ledmavi,LOW);

   delay(500);

   digitalWrite(ledkirmizi,LOW);

    digitalWrite(ledsari,LOW);

    digitalWrite(ledyesil,LOW);

   digitalWrite(ledmavi,LOW);

    delay(2500);

 

 

 

 

   }



  else if(sicaklik < 23 && sicaklik >= 21)

      {

    digitalWrite(ledyesil,HIGH);

    digitalWrite(ledkirmizi,LOW);

    digitalWrite(ledsari,LOW);

     digitalWrite(ledmavi,LOW);

      delay(500);

   digitalWrite(ledyesil,LOW);

    digitalWrite(ledkirmizi,LOW);

    digitalWrite(ledsari,LOW);

    digitalWrite(ledmavi,LOW);

    delay(2500);

      

      

       }

 

    }



  else if(sicaklik < 21 && sicaklik >= 19)

      {

    digitalWrite(ledsari,HIGH);

    digitalWrite(ledkirmizi,LOW);

    digitalWrite(ledyesil,LOW);

     digitalWrite(ledmavi,LOW);

      delay(500);

   digitalWrite(ledsari,LOW);

    digitalWrite(ledkirmizi,LOW);

    digitalWrite(ledyesil,LOW);

    digitalWrite(ledmavi,LOW);

    delay(2500);

      

      

       }

 



  else(sicaklik < 19)

 



    {

    digitalWrite(ledyesil,LOW);

    digitalWrite(ledsari,LOW);

    digitalWrite(ledkirmizi,LOW);

     digitalWrite(ledmavi,HIGH);

      delay(500);

   digitalWrite(ledyesil,LOW);

    digitalWrite(ledkirmizi,LOW);

    digitalWrite(ledsari,LOW);

   digitalWrite(ledmavi,LOW);

    delay(2500);

    

    

      }

    





}
ALDIĞIM HATA KODU

Arduino:1.8.13 (Windows 10), Kart:"Arduino Uno"


sketch_dec27a:68:3: error: expected unqualified-id before 'else'
else if(sicaklik < 21 && sicaklik >= 19)
^~~~
sketch_dec27a:85:3: error: expected unqualified-id before 'else'
else(sicaklik < 19)
^~~~
sketch_dec27a:105:1: error: expected declaration before '}' token
}
^
exit status 1
expected unqualified-id before 'else'
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.


HATANIN NERDE OLDUĞUNU ANLAMADIM ELSE İF İLE HİÇBİR DEĞİŞİM YAPMADIM FAKAT BU HATAYI VERDİ ŞİMDİDEN YARDIMMLARINIZ İÇİN TEŞEKKÜR EDİYORUM .
 
Moderatör tarafında düzenlendi:
Hataların nerede olduğunu aşağıda gösteriyorum.

C++:
void loop()
{
    /*  sıcaklık okuyan kodlar */


    if (sicaklik >= 23)
    {

    }

    else if(sicaklik < 23 && sicaklik >= 21)
    {


    }

} // <-- Burada fazladan bir parantez var

else if(sicaklik < 21 && sicaklik >= 19)
{


}

else //(sicaklik < 19) <-- Bu bölüm olmayacak
    {

    }

}

else ifadesinden sonra başka bir ifade kullanılmaz.

C++:
void loop()
{
    /*  sıcaklık okuyan kodlar */


    if (sicaklik >= 23)
    {

    }

    else if(sicaklik < 23 && sicaklik >= 21)
    {


    }

    else if(sicaklik < 21 && sicaklik >= 19)
    {


    }

    /*  Hatalar ortadan kalkınca kod hizalaması da düzeliyor */
    else
    {

    }

}

Demek ki yazılım geliştirirken hizalamaya dikkat edip, inci gibi satırları dizmekte fayda var ;-)
 
@Erdem, katılıyorum, kod okunaklı olmalı ki hem yazma esnasında hem de çalışır bir kod olsa bile ileride bir değişiklikte tırmalamayasınız. Ayrıca bir çok kod yazma arayüzünde (arduino ide gibi) açılan ya da kapanan parantezlerin üzerine gelerek, açıksa nerede kapandığı, kapalı ise nerede açıldığı görünebilir.
 
Emacs üzerinde kolaylıkla tüm satırları seçebiliyorum. Sonra M-x indent-region komutuyla hepsini hizalayabiliyor.

Zaten normalde döngü bloklarını otomatik hizalayabiliyor. Ya da tırnak işareti, parantez gibi karakterleri bir kere yazdığınızda bir eşini oluşturuyor.

Profesyonel olarak yazılım geliştirenler için bazı yazılım geliştirme standartları vardır. Örneğin dallanma bloklarının hizalanması nasıl olacak:

C++:
if (birseyler) {
    /*   */
}

if (birseyler)
{
    /*   */
}

Ya da işlevlerin isimlendirilmesi nasıl olacak.

Eğer bir yazılım geliştirme takımının parçası isek o standartlara uymak gerekiyor.

C++ için bir sınıfın üye değişkenlerini belirtmek için en sona bir _ işareti koyuyorduk.

C++:
class GokCismi
{
public:
    GokCismi (double kutle)
        : kutle_ (kutle)
    {
        std::cout << "Kütlesi " << kutle_ << " olan gökcismi oluşturuluyor\n";
    }
    ~GokCismi ()
    {
        std::cout << "Kütlesi " << kutle_ << " olan gökcismi yokediliyor\n";
    }

private:
    const double kutle_;
};

Hatta bu iş için geliştirilmiş araçlar da var. Yazdığınız yazılım parçasını inceleyip, hangi bölümde ekibin geliştirme standartlarına uymayan yerler var. Onları gösterebiliyor. Bazıları hatta kodu düzenleyebiliyor diye hatırlıyorum.

Gene boşluk karakterleri de yazılım parçası içinde istenmez. Emacs bunları da gösterebiliyor.

Şimdi hangi programlama dili olduğunu hatırlayamadım. Ama yazdığım bir örnek sadece içindeki boşluk karakterleri yüzünden çalışmamıştı.

Python programlama dili için PEP 8 isimli yazılım geliştirme desen kılavuzu var.
 
Son düzenleme:
Verdiğiniz cevaplar için teşekkür ederim , henüz daha çok acemiyim , verdiğiniz değerli bilgilere ilerde daha çok dikkat edeceğim .
 

Forum istatistikleri

Konular
128,169
Mesajlar
915,618
Kullanıcılar
449,933
Son üye
selcukbatman54

Yeni konular

Geri
Üst