Şimdi Ara

Yazılan kodda ki hata nedir?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
3
Cevap
0
Favori
65
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaşlar bir arkadaşımdan projem için kod yazması konusunda destek almıştım ancak kodda hatalar var istikrarlı çalışmıyor. Aşağıda paylaşıyorum destek olanlara şimdiden teşekkürler.

    Projem Arduino ile tablet açma kapama üzerine;

    kontak açınca d5 e negatif tetik gidiyor ve tablete açma komutu gidiyor ancak d3 de 5v giriş olmasına rağmen yani tableti 0.45 saniye gitmesi gereken tetik 4 saniye gidiyor sanki hala kapalı algılıyor bazen ise hep kapalı gibi algılıyor


    //Ayarlar;

    #define kapamaSuresi 12 //Kontak kapandıktan sonra nekadar sürede tablet tam kapatılsın.(saat)

    #define sayac_onoff 1 //kontak kapanınca yukarıdaki süreden sonra tablet kapansın mı?(1=açık, 0=kapalı)


    //pin tanımlamaları;

    #define lm35 A0

    #define r_out 2

    #define t_alg 3

    #define but 4

    #define kntk 5

    #define r_in 6

    #define fan_h 7

    #define fan_l 8


    int lm35_deger; //analog pinden okunan ham değer.

    float lm35_v; //ham değerin voltaj olarak karşılığı.

    float sicaklik; //lm35 veri sayfasında belirtilen her bir derecede 10mV gerilimden hesplanan sıcaklık değeri.

    bool t_durum; //tablet açık/kapalı durumu.

    bool k_durum; //kontak açık/kapalı durumu.

    bool r_durum; //geri vites durumu.

    bool whl_girdi; //döngü içerisinde her seferinde tablet tuşuna basılmaması için değişkenimiz.

    unsigned long kapandiZaman = 0; //kontağın kapandığı sayaç zamanını kaydeden değişken.

    unsigned long yeniZaman; //güncel sayaç zamanını kaydettiğimiz değişken.

    int kapamaSuresi_h;

    bool zamanDurum = sayac_onoff;



    void setup()

    {

    //pin tanımlama ve ayarları;

    pinMode(lm35,INPUT); //LM35

    pinMode(r_out,OUTPUT); //GERİ VİTES ÇIKIŞ

    pinMode(t_alg,INPUT); //TABLET AÇIK ALGILAMA

    pinMode(but,OUTPUT); //BUTON ÇIKIŞ

    pinMode(kntk,INPUT_PULLUP); //KONTAK ALGILAMA

    pinMode(r_in,INPUT_PULLUP); //GERİ VİTES ALGILAMA

    pinMode(fan_h,OUTPUT); //FAN HIZLI ÇIKIŞ

    pinMode(fan_l,OUTPUT); //FAN YAVAŞ ÇIKIŞ


    //çıkışlarımızın ve değişkenlerin varsayılan değerleri;

    digitalWrite(r_out,LOW); digitalWrite(but,LOW); digitalWrite(fan_h,LOW); digitalWrite(fan_l,LOW);

    k_durum = 1;

    r_durum = 1;

    whl_girdi = 0;

    t_durum = digitalRead(t_alg); //tablet açık/kapalı durumunu oku ve t_durum değişkenine kaydet.

    kapamaSuresi_h = kapamaSuresi*60000;// saat cinsinde kaydedilen kapama süresini milisaniye cinsine çevirme.

    }


    void loop() {

    k_durum = digitalRead(kntk); //kontak durumunun oku ve değişkene kaydet.

    whl_girdi = 0; //kontağa bağlı while döngüsüne hiç girilmedi veya çıkıldı ise değeri 0 yap.

    yeniZaman = millis(); //yenizaman değişkenine güncel sayaç zamanını kaydet.


    while(k_durum == LOW) //kontak açılınca negatif sinyal gelecek ve döngü başlayacak.

    {

    if(whl_girdi == 0 && t_durum == HIGH) //tablet açık algılandı ise 0,45 sn butona güç ver.

    {

    digitalWrite(but,HIGH); delay(450); digitalWrite(but,LOW);

    }

    if(whl_girdi == 0 && t_durum == LOW) //tablet kapalı algılandı ise 4 sn butona güç ver.

    {

    digitalWrite(but,HIGH); delay(4000); digitalWrite(but,LOW);

    }


    k_durum = digitalRead(kntk); //kontak durumu değişkenini güncelle.

    if(k_durum == HIGH || sicaklik <45)//kontak kapalı veya sıcaklık 45C altında ise fanı kapat.

    {

    digitalWrite(fan_h,LOW);

    digitalWrite(fan_l,LOW);

    }

    else if(sicaklik>45 && sicaklik <65)//sıcaklık 45C ve 65C arasında ise fanı yavaş hızında çalıştır.

    {

    digitalWrite(fan_h,LOW);

    digitalWrite(fan_l,HIGH);

    }

    else if(sicaklik>65) //sıcaklık 65C denn yüksek ise fanı hızlı hızında çalıştır.

    {

    digitalWrite(fan_h,HIGH);

    digitalWrite(fan_l,LOW);

    }

    r_durum = digitalRead(r_in);//geri vites durum değişkenini güncelle.

    if(r_durum == LOW) //geri vites algılandığında, +5v çıkış ver.

    {

    digitalWrite(r_out,HIGH);

    }

    else //geri viteste değil ise çıkış gücünü kes.

    digitalWrite(r_out,LOW);


    if(k_durum == HIGH) //kontak kapalı algılandı ise fanı durdur 8 saniye bekle ve 0.45 sn butona güç ver.

    {

    delay(8000);

    digitalWrite(but,HIGH); delay(450); digitalWrite(but,LOW);

    }

    whl_girdi = 1; //buton fonksiyonlarının tek sefer çalışması için değişkenlere döngüye girildiğini bildiren değişken.

    //sıcaklık hesaplamaları.

    lm35_deger = analogRead(lm35); //analog girişteki ham değeri değer değişkenine kaydet.

    lm35_v = lm35_deger* (5000/1024.0); //ham değerin voltaj karşılığını hesapla.

    sicaklik = lm35_v/10.0; //her 10mV = 1C


    kapandiZaman == millis(); //döngüden çıkarken kontak kapama zamanını kaydet.

    }

    if(zamanDurum == 1 && yeniZaman-kapandiZaman > kapamaSuresi_h) //milisaniye cinsinden tabletin tam kapanması için geçen süre.

    digitalWrite(but,HIGH); delay(11000); digitalWrite(but,LOW);

    }




    < Bu mesaj bu kişi tarafından değiştirildi ergunka07 -- 2 Aralık 2024; 12:9:17 >
    < Bu ileti mobil sürüm kullanılarak atıldı >







  • Merhaba. Mesajın bu hâliyle sorunu anlamak zor, tablet modeli ve devre şemaları eklerseniz daha iyi olur. Ayrıca varsa örnek aldığınız projelerin fotoğraflarını, videolarını veya proje sayfalarını da ekleyin. Kolay gelsin.

  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.