Arduino kodundaki hata nedir?

Geforce Mx130

Hectopat
Katılım
20 Ekim 2020
Mesajlar
1.676
Çözümler
16
Daha fazla  
Sistem Özellikleri
Ryzen 5 5500 3.6GHz-Sapphire RX5700XT 8GB GDDR6-Gigabyte B550m Ds3h rev 1.4-Viper Steel 8x2GB 3600Mhz CL17 Ram-Apacer Panther As340 240GB-Aerocool Vx Plus 500W-Bitfeniz Helios Mesh kasa 🙂
Cinsiyet
Erkek
Arduino'da butonlu trafik lambası yapacağım ancak yazdığım kodda hata var diyor. Kodlamaya yeni başladım çözemedim.

Kod:
int buton = 7;
int red = 8;
int yellow = 9;
int green = 11;
int butondurum = 0;

void setup()
 {
 pinMode(buton,INPUT);
 pinMode(red,OUTPUT);
 pinMode(yellow,OUTPUT);
 pinMode(green,OUTPUT);
 }

 void loop() {
butondurum = digitalRead(buton);
 }
 
 if(butondurum == LOW);
  digitalWrite(red,HIGH);
  else
  digitalWrite(red,LOW);
  digitalWrite(yellow,HIGH);
  delay(2000);
  digitalWrite(yellow,LOW);
  digitalWrite(green,HIGH);
  delay(10000);
  digitalWrite(green,LOW);
  digitalWrite(red,HIGH);
 
 }


if(butondurum == LOW);
bu kodda hata var diyor.
 
butondurum = digitalRead(buton);

Bu koddan sonra süslü koyup loop fonksiyonunu sonlandırıyorsunuz. Kapatma süslüsünü loop fonksiyonunda istediğiniz kodları yazdıktan sonra koymanız lazım. Yani üstteki satırdan sonraki süslü parantezi silerseniz sorununuz çözülecektir.
 
butondurum = digitalRead(buton);

Bu koddan sonra süslü koyup loop fonksiyonunu sonlandırıyorsunuz. Kapatma süslüsünü loop fonksiyonunda istediğiniz kodları yazdıktan sonra koymanız lazım. Yani üstteki satırdan sonraki süslü parantezi silerseniz sorununuz çözülecektir.
Tamam hocam deneyip yazacagim.

Tamam hocam deneyip yazacagim.
butondurum = digitalRead(buton);

Bu koddan sonra süslü koyup loop fonksiyonunu sonlandırıyorsunuz. Kapatma süslüsünü loop fonksiyonunda istediğiniz kodları yazdıktan sonra koymanız lazım. Yani üstteki satırdan sonraki süslü parantezi silerseniz sorununuz çözülecektir.
'else' without a previous 'if' hatası veriyor hocam.
 
Son düzenleme:
Kodun son halini atabilir misiniz?
Kod:
int buton = 7;
int red = 8;
int yellow = 9;
int green = 11;
int butondurum = 0;

void setup()
 {
 pinMode(buton,INPUT);
 pinMode(red,OUTPUT);
 pinMode(yellow,OUTPUT);
 pinMode(green,OUTPUT);
 }

 void loop() {
butondurum = digitalRead(buton);
 
 if(butondurum == LOW);
  digitalWrite(red,HIGH);
  else
  digitalWrite(red,LOW);
  digitalWrite(yellow,HIGH);
  delay(2000);
  digitalWrite(yellow,LOW);
  digitalWrite(green,HIGH);
  delay(10000);
  digitalWrite(green,LOW);
  digitalWrite(red,HIGH);
 
 }
 
Kod:
int buton = 7;
int red = 8;
int yellow = 9;
int green = 11;
int butondurum = 0;

void setup()
 {
 pinMode(buton,INPUT);
 pinMode(red,OUTPUT);
 pinMode(yellow,OUTPUT);
 pinMode(green,OUTPUT);
 }

 void loop() {
butondurum = digitalRead(buton);
 
 if(butondurum == LOW);
  digitalWrite(red,HIGH);
  else
  digitalWrite(red,LOW);
  digitalWrite(yellow,HIGH);
  delay(2000);
  digitalWrite(yellow,LOW);
  digitalWrite(green,HIGH);
  delay(10000);
  digitalWrite(green,LOW);
  digitalWrite(red,HIGH);
 
 }
Else if'in içinde onu dışarı çıkar.
 
C:
void loop() {
 butondurum = digitalRead(buton);
 
 if(butondurum == LOW){
  digitalWrite(red,HIGH);
  digitalWrite(red,LOW);
  digitalWrite(yellow,HIGH);
  delay(2000);
  digitalWrite(yellow,LOW);
  digitalWrite(green,HIGH);
  delay(10000);
  digitalWrite(green,LOW);
  digitalWrite(red,HIGH);
 }

If'ten sonra noktalı virgül gelmez. Bloklara dikkat etmelisiniz. Her blok bir süslüyle başlar bir süslüyle biter. Else, if bloğunun dışında olması gerekirken içine koymuşsunuz. Kullanacaksanız if bloğunun bittiği yerde else yazıp yeni bir blok açmalısınız.
 
int buton = 7;
int red = 8;
int yellow = 9;
int green = 11;
int butondurum = 0;

void setup()
{
pinMode(buton,INPUT);
pinMode(red,OUTPUT);
pinMode(yellow,OUTPUT);
pinMode(green,OUTPUT);
}

void loop() {
butondurum = digitalRead(buton);

if(butondurum == LOW);
digitalWrite(red,HIGH);
else
digitalWrite(red,LOW);
digitalWrite(yellow,HIGH);
delay(2000);
digitalWrite(yellow,LOW);
digitalWrite(green,HIGH);
delay(10000);
digitalWrite(green,LOW);
digitalWrite(red,HIGH);

}
Üstte vermiş olduğunuz kodda @Evilmonster 'ın da dediği gibi if koşulunu belirttikten sonra noktalı virgül ";" kullanmamalısınız. Bunun yerine süslü parantez açarak if koşulu yerine getirildiğinde çalışmasını istediğiniz kodları yazmalısınız. Konu hakkında daha iyi bilgi sahibi olmak isterseniz: Koşul Yapıları

Kodunuzu aşağıdaki gibi güncellediğinizde beklediğiniz sonucu elde edeceğinizi düşünüyorum:
C:
int buton = 7;
int red = 8;
int yellow = 9;
int green = 11;
int butondurum = 0;

void setup()
{
    pinMode(buton, INPUT);
    pinMode(red, OUTPUT);
    pinMode(yellow, OUTPUT);
    pinMode(green, OUTPUT);
}

void loop()
{
    butondurum = digitalRead(buton);// Butona basılıp basılmadığını kontrol et
    
    if(butondurum == HIGH)          // Butona basıldıysa bloğa gir
    {         
        digitalWrite(red, HIGH);    // Kırmızı ışık yansın
        delay(1000);                // 1 saniye bekle
        
        digitalWrite(red, LOW);     // Kırmızı ışık sönsün
        digitalWrite(yellow, HIGH); // Sarı ışık yansın
        delay(2000);                // 1 saniye bekle
        
        digitalWrite(yellow, LOW);  // Sarı ışık sönsün
        digitalWrite(green, HIGH);  // Yeşil ışık yansın
        delay(10000);               // 10 saniye bekle
        
        digitalWrite(green, LOW);   // Yeşil ışık sönsün
        digitalWrite(red, HIGH);    // Kırmızı ışık yansın
    }
}

Fonksiyon(lar) oluşturarak daha kompakt kod hazırlamak isterseniz şu içeriğe göz atabilirsiniz (buton kullanımını sizin eklemeniz gerekmekte): Trafik Lambaları
 

Yeni konular

Geri
Yukarı