Arama butonu
Bu konudaki kullanıcılar: 1 misafir
16
Cevap
174
Tıklama
0
Öne Çıkarma
KODU YAZDIĞIMDA SADECE 1. PİNDEKİ LAMBA ÇALIŞIYOR
G
2 yıl
Onbaşı
Konu Sahibi

void setup() {
pinMode(3, OUTPUT);
pinMode(1, OUTPUT);
}

void loop() {
digitalWrite(1, HIGH);
delay(1000);
digitalWrite(1, LOW);
delay(1000);

if (digitalRead(1) == HIGH) {
digitalWrite(3, HIGH);
} else {
digitalWrite(3, LOW);
}
}
Bu şekilde kodu yazıp devreyi de hazırlıyorum standart şekilde
Ancak sadece 1. PİNDEKİ lamba yanıp sönüyor 3. Pindekinde herhangi bi değişiklik olmuyor
Sorun ne olabilir



< Bu ileti mobil sürüm kullanılarak atıldı >

R
2 yıl
Binbaşı

Ne yapmak istediğin kodundan anlaşılmıyor ama amacın 3. pini de yakıp söndürmekse aşağıdaki gibi kodunu düzenleyebilirsin.


void loop() {
digitalWrite(1, HIGH);
delay(1000);
digitalWrite(1, LOW);
delay(1000);


digitalWrite(3, HIGH);
delay(1000);
digitalWrite(3, LOW);
delay(1000);

}


Bu mesaja 1 cevap geldi.
G
2 yıl
Onbaşı
Konu Sahibi

Amacım aslında 1. Pinin high değerini verdiğinde 3. Pinin de aynı değeri vermesini if döngüsü ile sağlamaktı
Ancak bu şekilde yazdığımda sadece 1. Pin çalışıyor
Aynı olayı while ile de denedim ancak durum aynı



< Bu ileti mobil sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @rafet32
L
2 yıl
Binbaşı

Kodlar gerçekte de satır satır çalıştığı dolayısıyla,
pin yanıp sönüyor sonrada pin 1 yanık mı diye bakıyorsun,
anlaşıldı mı ?

void loop() {
digitalWrite(1, HIGH);
digitalWrite(3, HIGH);
delay(1000);
digitalWrite(1, LOW);
digitalWrite(3, LOW);
delay(1000);
}

böyle olsun, olmaz mı ?


Bu mesaja 1 cevap geldi.
G
2 yıl
Onbaşı
Konu Sahibi

Evet bu halde mantıklı tabii ama benim yazdığım neden çalışmıyor onu kavrayamadım



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @limbesh
F
2 yıl
Yüzbaşı

Merhaba. digitalRead() fonksiyonunun örnek kodlarında okunacak pini setup içinde giriş olarak tanımlamışlar. Siz setup içinde çıkış olarak tanımladığınız pini digitalRead() fonksiyonu ile okumaya çalışmışsınız. Bu yüzden ne yapmaya çalıştığınız sadece kodlara bakarak anlaşılmıyor. Buna dikkat ettiniz mi?

Ayrıca digitalRead fonksiyonu ile okunacak pinin giriş veya çıkış olarak tanımlanmasından bağımsız olarak, üstteki cevapta da yazıldığı gibi kodlar adım adım çalıştırılıp sıra "if (digitalRead(1) == HIGH)" satırına geldiğinde kontrol edilen değer çoktan sıfırlanmış oluyor. 1 saniye önce çalıştırılan "digitalWrite(1, LOW);" satırı if bloğunu anlamsız hâle getiriyor.

digitalRead() - Arduino Reference





< Bu mesaj bu kişi tarafından değiştirildi F3SV mağduru -- 2 Aralık 2023; 1:59:38 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @izbırakanlarunutulmaz
G
2 yıl
Onbaşı
Konu Sahibi

Amacım aslında if döngüsünü kullanarak 3. Pini kontrol etmek
Peki bu işlemi if kullanarak gerçekleştiremez miyim



< Bu ileti mobil sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @F3SV mağduru
R
2 yıl
Binbaşı

if yapısı ile yapmak istediğin şey ile, yola çıktığın örnek pek uygun değil. İlla bu yöntem ile denemek istiyorum diyorsan aşağıdaki örneklerdeki gibi deneyebilirsin. İkiye bölünen aşağıdaki örnekde 1. led senin örneğideki gibi flash yapmayacaktır. Sabit yanacak veya hiç yanmayacaktır. 1. lede bağlı olarak 3. ledde yanacak veya sönük kalacak.

Bunun yerine bir girişi input olarak tanımlayıp " pinMode(2, INPUT); ", çıkış ledini bu inputun durumuna göre kontrol etmek için IF yapısını kullanman, olayı kavraman açsından daha faydalı olur.


//--- 1. örnek---
void loop() {

digitalWrite(1, HIGH); // bu denemede 3. pinde H olacak

if (digitalRead(1) == HIGH) {
digitalWrite(3, HIGH);
} else {
digitalWrite(3, LOW);
}
}

//--- 2. örnek---
void loop() {

digitalWrite(1, LOW); // bu denemede 3. pinde L olacak

if (digitalRead(1) == HIGH) {
digitalWrite(3, HIGH);
} else {
digitalWrite(3, LOW);
}
}


Nerede hata yapıyorum soruna cevap (Mantık hatası)

< Resime gitmek için tıklayın >


Bu mesaja 1 cevap geldi.
G
2 yıl
Onbaşı
Konu Sahibi

Hocam kusura bakmayın biraz yordum sizi ama şunu cidden anlamadım pin neden sürekli else e düşüyor
Çünkü mantıken şöyle olması gerekmez mi:
1. Pin high değerini verdiğinde 3. Pinin de high vermesi gerkir(çünkü ben if ifadesi ile bunu böyle belirttiğimi düşünüyorum)( 1. Pin high olduğunda 3. Pin de high olsun demek değil mi bu yazdığım ifade)



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 2 cevap geldi.

Bu mesajda bahsedilenler: @rafet32
K
2 yıl
Yarbay

Hıgh yaptığın ledi hemen peşine söndürmüşsün. ARada delay var. Hıgh yaptığında da delay yani bekleme var, low yaptıktan sonra da. Sonraki satırlara bu delayden beklemeden sonra geçmiyor mu ?

Hıgh yaptığın yerde eşitleyebilseydin olurdu.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @izbırakanlarunutulmaz
R
2 yıl
Binbaşı

IF ELSE konularına biraz daha bakmanda fayda var. Kendi düşüncelerinden sıyrılıp, doğrusunu öğrenmeye odaklan.
quote:

(çünkü ben if ifadesi ile bunu böyle belirttiğimi düşünüyorum)


Ayrıca program kodlarının yukarıdan aşağıya doğru işleme alındığını unutmayınız.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @izbırakanlarunutulmaz
G
2 yıl
Onbaşı
Konu Sahibi

Hocam yukarıdan aşağıya doğru gittiğini biliyorum ancak burada nasıl bi tezatlık var ki?



< Bu ileti mobil sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @rafet32
G
2 yıl
Onbaşı
Konu Sahibi

Hocam şimdi siz deyince farkettim
Delayları ekledim ancak sonuç yine aynı



< Bu ileti mobil sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @karafetva
R
2 yıl
Binbaşı

Yukarıdaki mesajımda resim üzerinde işaretleyerek ve açıklamlar ekleyerek mantık hatasını göstermiştim.


Bu mesaja 1 cevap geldi.
G
2 yıl
Onbaşı
Konu Sahibi

Çok teşekkür ederim
void setup() {
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);


}

void loop() {

digitalWrite(2,1);
delay(1000);
if(digitalRead(2)==1) {
digitalWrite(3,1);
delay(1000);
}
digitalWrite(2,0);
delay(1000);
if(digitalRead(2)==0) {
digitalWrite(3,0);
delay(1000);
}


}
Sizin mesajınızı da dikkate alıp kendim de sakin kafayla biraz düşününce bu kodu oluşturdum ve çalıştı



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @rafet32
B
2 yıl
Binbaşı

Burada if kullanmanın bir anlamı yok çünkü içindeki koşul her türlü sağlanıyor o yüzden if leri silebirsin aynı sonuç olur.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @izbırakanlarunutulmaz
K
2 yıl
Yarbay

BUrada basit haliyle yapıp, karmaşık işlerde kullanma fikri vardır. Zaten led yakmak da sadece sonucu görmek.




Bu mesajda bahsedilenler: @bersgurs
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.