Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
7
Cevap
482
Tıklama
0
Öne Çıkarma
arduino kodu hatam nerede ?
G
11 yıl
Binbaşı
Konu Sahibi

const int buton = 12;
int butondurumu = 0;
const int lamba= 13;
const long zaman = 4000;

void setup () {
pinMode(lamba, OUTPUT);
pinMode(buton, INPUT);
}

void loop () {
int butondurumu=digitalRead(buton);
if (butondurumu == HIGH)
{digitalWrite(lamba, HIGH);
delay(zaman);
digitalWrite(lamba, LOW); }
else {digitalWrite(lamba, LOW);
}
}

Amacım şuydu, tuşa basınca led açılsın ve 30 dakika sonra kapansın. "Zaman" değerini değiştirerek onu ayarlayabiliyorum onda sorun yok. Ama bunu yükleyince 13 nolu pindeki led sürekli yanıyor. Hiç buton falan iplemiyor 12. pine trafo bağlasam yine iplemeyecek resmen. İşlemci mi bozuk diye 3 farklı işlemci taktım ama kod sorunda. Neden olabilir ?



G
11 yıl
Yarbay

Buton bağladığın pini 4.7k civarı bir direnç ile toprağa bağla.


Bu mesaja 1 cevap geldi.
G
11 yıl
Binbaşı
Konu Sahibi

quote:

Orijinalden alıntı: elektro_gadget

Buton bağladığın pini 4.7k civarı bir direnç ile toprağa bağla.

Gece gözlerim yarım açıkken denemiştim, üşengeçlikten pull-down koymadım. Eğer gerçekten sırf bu yüzden olduysa kendimi keserim.


Bu mesaja 1 cevap geldi.
N
11 yıl
Teğmen

Yukarıdaki öneriye ek olarak;
setup() fonksiyonu içinde lamba için pinmode u set ettikten sonra digitalWrite(lamba, LOW); ile programa başlarken sönük olmasını sağlayabilirsiniz.


Bu mesaja 1 cevap geldi.
G
11 yıl
Binbaşı
Konu Sahibi

setup'ın içine fonksiyonda yapılacak şeyler koymak karmaşaya sebep olabiliyor diye biliyordum ben ?




Bu mesajda bahsedilenler: @nedium
E
11 yıl
Er

Bak şimdi bunu dene nasıl çalışacak ;)

const int buton = 12;
int butondurumu = 0;
const int lamba= 13;
const long zaman = 4000;

void setup () {
pinMode(lamba, OUTPUT);
pinMode(buton, INPUT);
}

void loop () {
int butondurumu=digitalRead(buton);

if (butondurumu == HIGH) {
digitalWrite(lamba, HIGH);
delay(zaman);
digitalWrite(lamba, LOW);
delay(zaman); //-----------------------------------> Hep atlanan bir nokta!!!!!!!!Ledin sönüyor ancak hiç göremiyorsun.
}
else {
digitalWrite(lamba, LOW);
}
}


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @kimyasalatik
G
11 yıl
Binbaşı
Konu Sahibi

quote:

Orijinalden alıntı: eistain_54

Bak şimdi bunu dene nasıl çalışacak ;)

const int buton = 12;
int butondurumu = 0;
const int lamba= 13;
const long zaman = 4000;

void setup () {
pinMode(lamba, OUTPUT);
pinMode(buton, INPUT);
}

void loop () {
int butondurumu=digitalRead(buton);

if (butondurumu == HIGH) {
digitalWrite(lamba, HIGH);
delay(zaman);
digitalWrite(lamba, LOW);
delay(zaman); //-----------------------------------> Hep atlanan bir nokta!!!!!!!!Ledin sönüyor ancak hiç göremiyorsun.
}
else {
digitalWrite(lamba, LOW);
}
}

En son benim de aklıma böyle bir şey geldi, çözüm olarak da 30 saatlik bir değer gösterip ikinci delay'e onu yerleştirdim.


Bu mesaja 1 cevap geldi.
G
11 yıl
Yarbay

O ikinci delaya gerek yok. else'e de gerek yok.

Ayrıca bir ekstra bilgi. Dijital girişlerde dahili pull-up dirençlerini aktif edebilirsiniz böylece dışardan direnç bağlamaya gerek kalmaz. Arduino da bu işlem INPUT_PULLUP ile yapılıyormuş. Tabi bunu yapınca butonu lojik 0'a bağlayacaksınız ve buton basılı kontrolünü şöyle yapacaksınız. if(digitalRead(buton) == LOW)



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.