Yazılmıs kod a ekleme yapmak ıcın destek
Merhaba bir blok sayfasında paylasılan kod dızınıne ekleme yapmak ıstıyorum bu konuda bılgısı olan yardımcı olabılırse sevınııırım.
burada kı konuya eklemek ıstedıgım su; ardunıoya tabletten (tabletın acık olmadııgını algılayacak) sınyal hattı cekıp tablet acıksa yanı uyku modundaysa 0.45 sanıye tablet tamamen kapalıysa 4 sanıye ardunıonun buton cıkısına tetık gıdecek sekılde kod eklebılırmısınız
Yazılan kodda ki hata nedir?
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);
}
Son Giriş: 5 gün önce
Son Mesaj Zamanı: geçen hafta
Mesaj Sayısı: 2
Gerçek Toplam Mesaj Sayısı: 2
İkinci El Bölümü Mesajları: 0
Konularının görüntülenme sayısı: 92 (Bu ay: 92)
Toplam aldığı artı oy sayısı: 0 (Bu hafta: 0)
En çok mesaj yazdığı forum bölümü: Elektronik ve Mekanik