Temeller · 8 dk okuma

Blok Kodlama Eğer Bloğu: Arduino Buton ile LED Yakma ve if-else

Blok kodlama eğer bloğu ile Arduino buton ile LED yakma: pin okuma, if-else, =, ≠, <, >, iç içe koşul, aç-kapa, debounce ve LDR gece lambası blok blok.

Blok kodlama eğer bloğu, programın bir soruya göre iki yoldan birini seçmesini sağlar: "Butona basıldı mı? Basıldıysa LED'i yak, basılmadıysa söndür." Arduino'nun C++ dilinde bu yapının adı if/else'tir ve BlueGrays bloklarındaki "eğer … yap … değilse" bloğu bu kodun birebir karşılığıdır. Bu yazıda Arduino buton ile LED yakma projesi üzerinden önce bir pini giriş olarak ayarlamayı ve okumayı, sonra eğer bloğunu, karşılaştırma işaretlerini, iç içe koşulları ve iki koşulu "ve" ile birleştirmeyi blok blok ve satır satır göreceksin.

Bu yazı Bloktan Koda serisinin 3. bölümü. Bir önceki bölümde ilk programı yazıp LED'i bloklarla yakıp söndürmüştük; bir sonraki bölümde döngüleri ve değişkenleri ele alacağız.

Şimdiye kadarki programlar hep aynı şeyi yapıyordu: LED yanıyor, bekliyor, sönüyor, yine bekliyordu. Dış dünyayı hiç dinlemiyordu. Koşullar devreye girince kart artık bir butona, bir ışık sensörüne ya da ölçtüğü bir mesafeye bakarak karar verir; robotik kodlamanın asıl eğlencesi de burada başlar. Buradaki örneklerin hepsi ücretsiz bloklu projelerden geliyor. Bloklarını ve kodlarını blok kodlama sayfasından ya da uygulamadan açıp yazıyla yan yana takip edebilirsin.

Giriş ve çıkış: pin hangi yönde çalışıyor?

Arduino'nun dijital pinleri iki işten birini yapar. Çıkış olarak ayarlanan pin dışarıya 5 V (YÜKSEK) ya da 0 V (DÜŞÜK) verir; LED, buzzer ve röle böyle sürülür. Giriş olarak ayarlanan pin ise hiçbir şey vermez, yalnızca üzerindeki gerilimi dinler: Arduino Uno'da yaklaşık 3 V'un üstünü YÜKSEK, 1,5 V'un altını DÜŞÜK okur. Bloklarda bu ayar kurulum bölümünde yapılır: "13 numaralı pini GİRİŞ olarak ayarla" bloğu C++'ta pinMode(13, INPUT);, "7 numaralı pini ÇIKIŞ olarak ayarla" bloğu da pinMode(7, OUTPUT); satırına dönüşür. Pini okumak için "13 numaralı pini oku" bloğu kullanılır. Bu blok diğerlerinden farklı görünür: alt alta dizilen bir komut değil, kenarları yuvarlak bir değer bloğudur ve başka bir bloğun içindeki boşluğa takılır. C++'taki karşılığı digitalRead(13) fonksiyonudur ve HIGH ya da LOW döndürür. Arduino'da HIGH 1'e, LOW 0'a eşit olduğu için bu sonucu bir sayı gibi değişkene de atayabilirsin. Kısacası komut blokları bir iş yapar, değer blokları bir sonuç verir; eğer bloğunun koşul yuvası da ancak böyle bir sonuçla dolar.

BlokC++ karşılığıNe yapar?
13 numaralı pini GİRİŞ olarak ayarlapinMode(13, INPUT);Pini dinleme moduna alır (kurulumda bir kez)
7 numaralı pini ÇIKIŞ olarak ayarlapinMode(7, OUTPUT);Pini gerilim verecek şekilde ayarlar
13 numaralı pini okudigitalRead(13)HIGH (1) ya da LOW (0) döndürür
7 numaralı pine YÜKSEK yazdigitalWrite(7, HIGH);Pine 5 V verir, LED yanar
analog oku A0analogRead(A0)0–1023 arası bir sayı döndürür
eğer … yap … değilseif (…) { … } else { … }Koşula göre iki yoldan birini çalıştırır

Devre: buton 13'te, LED 7'de, pull-down direnci şart

Buton İle Led Yakma (Push) projesinde buton D13'e, LED D7'ye bağlıdır. Butonun bir bacağı 5V'a, diğeri D13'e gider; D13 ile GND arasına da 10 kΩ'luk bir pull-down direnci konur. Buton bırakıldığında direnç pini GND'ye çeker ve pin DÜŞÜK okunur. Butona basınca 5V doğrudan pine ulaşır ve pin YÜKSEK okunur. Direnç büyük olduğu için basılıyken 5V'tan GND'ye yalnızca yarım miliamper kadar akım geçer. LED'in uzun bacağı 220 Ω'luk direnç üzerinden D7'ye, kısa bacağı GND'ye bağlanır.

ParçaNereye bağlanır?Arduino Uno pini
Buton, 1. bacakDoğrudan5V
Buton, 2. bacak (çapraz)DoğrudanD13
10 kΩ direnç (pull-down)D13 ile GND arasınaD13 – GND
LED uzun bacak (anot)220 Ω direnç üzerindenD7
LED kısa bacak (katot)DoğrudanGND
Pull-down direncini atlarsan buton bırakıldığında D13 hiçbir yere bağlı kalmaz; buna havada kalan (floating) giriş denir. Pin çevredeki elektrik gürültüsünü toplar, digitalRead() rastgele YÜKSEK ya da DÜŞÜK okur ve LED sen dokunmadan titrer, hatta elini yaklaştırınca yanar. Dört bacaklı butonlarda aynı taraftaki iki bacak içeride zaten birbirine bağlıdır, bu yüzden çapraz bacakları kullan. Ayrıntılar için Arduino'ya buton nasıl bağlanır ve pull-up ve pull-down direnci yazılarına bak.

Eğer bloğu ile if/else: butona basınca LED yansın

Projenin blok hâli iki bölümden oluşur. "kurulum (bir kez çalışır)" bölümünde 13 numaralı pin GİRİŞ, 7 numaralı pin ÇIKIŞ yapılır. "sürekli tekrarla" bölümünde ise tek bir büyük blok vardır: eğer … yap … değilse. Altıgen koşul yuvasında "13 numaralı pini oku = YÜKSEK" karşılaştırması durur. Koşul doğruysa "yap" kolundaki "7 numaralı pine YÜKSEK yaz" bloğu, yanlışsa "değilse" kolundaki "7 numaralı pine DÜŞÜK yaz" bloğu çalışır.

Blok kodlama eğer bloğu: Buton İle Led Yakma (Push) projesinin blokları
13 numaralı pin GİRİŞ, 7 numaralı pin ÇIKIŞ; eğer 13 numaralı pin YÜKSEK okunursa LED yanar, değilse söner.
C++ (Arduino IDE)
1void setup() {
2  pinMode(13, INPUT);    // Buton girişi (harici pull-down) / Button input (external pull-down)
3  pinMode(7, OUTPUT);    // LED çıkışı / LED output
4}
5
6void loop() {
7  if (digitalRead(13) == HIGH) {   // Buton basılı mı? / Is the button pressed?
8    digitalWrite(7, HIGH);         // Basılı: LED yanar / Pressed: LED on
9  } else {
10    digitalWrite(7, LOW);          // Bırakıldı: LED söner / Released: LED off
11  }
12}
13

Kodu bloklarla yan yana koyunca eşleşme çok net görünür. if kelimesi "eğer"in, parantez içindeki digitalRead(13) == HIGH koşul yuvasının, ilk süslü parantez çifti "yap" kolunun, else ve ardından gelen süslü parantezler de "değilse" kolunun karşılığıdır. Kollara yerleştirdiğin her blok, kodda ilgili süslü parantezlerin içine bir satır olarak yazılır. loop() saniyede on binlerce kez döndüğü için kart butonu durmadan yeniden okur; parmağını çektiğin anda bir sonraki turda koşul yanlış olur ve LED söner. Projenin adındaki "Push" bu yüzden: LED yalnızca basılı tuttuğun sürece yanar. "değilse" kolu zorunlu değildir; yalnızca "yap" kolu olan bir eğer bloğu else'siz bir if'e dönüşür. Ama bu projede değilse kolunu silersen LED bir kez yandıktan sonra hiç sönmez, çünkü onu söndüren satır kalmaz. Her koşulda iki kolu da düşünmek iyi bir alışkanlıktır.

Karşılaştırma blokları: =, ≠, < ve >

Bloktaki işaretC++AnlamıProjelerdeki örnek
===eşittirdigitalRead(13) == HIGH (Buton İle Led Yakma)
≠!=eşit değildirbutton != lastButton (Buton İle Led Yakma On Off)
<<küçüktürvalue < 50 (Ldr İle Gece Lambası)
>>büyüktürdistance > minDistance (HC-SR04 Mesafe Ölçme)
Karşılaştırma bloğundaki "=" işareti C++'ta == olarak yazılır. Tek eşittir C++'ta karşılaştırma değil atamadır. if (button = 1) yazarsan derleyici durmaz: button değişkenine 1 atanır, sonuç sıfırdan farklı olduğu için koşul her turda doğru çıkar ve LED butona hiç bakmadan yanar. Blokta bu hatayı yapamazsın, çünkü atama ("… değişkenine … ata") ile karşılaştırma ayrı bloklardır. Koda geçtiğinde ise en sık yapılan hata budur.

Butonla aç-kapa: iç içe eğer ve durum değişkeni

Push projesinde LED yalnızca butonu basılı tuttuğun sürece yanıyordu. Gerçek bir lamba düğmesi gibi "bir bas yansın, bir daha bas sönsün" istiyorsan program iki şeyi hatırlamalı: LED'in şu an yanık mı sönük mü olduğunu ve butonun bir önceki turda ne okunduğunu. Buton İle Led Yakma (On Off) projesi bunun için "genel değişkenler (en başta)" bölümünde iki tam sayı tanımlar: ledState (0 = sönük, 1 = yanık) ve lastButton (önceki okuma). Devre bir öncekiyle aynıdır: buton D13'te harici pull-down ile, LED D7'de.

Buton İle Led Yakma (On Off) projesinin blokları: iç içe eğer, ≠ karşılaştırması ve değil bloğu
Dıştaki eğer buton durumunun değiştiğini, içteki eğer bunun bir basış olduğunu yakalar; ledState değil bloğu LED'in durumunu ters çevirir.
C++ (Arduino IDE)
1int ledState = 0;     // LED durumu: 0 = sönük, 1 = yanık / LED state: 0 = off, 1 = on
2int lastButton = 0;   // Butonun önceki okuması / Previous button reading
3
4void setup() {
5  pinMode(13, INPUT);   // Buton girişi (harici pull-down) / Button input (external pull-down)
6  pinMode(7, OUTPUT);   // LED çıkışı / LED output
7}
8
9void loop() {
10  int button = digitalRead(13);   // Butonu oku / Read the button
11  if (button != lastButton) {     // Buton durumu değişti / Button state changed
12    if (button == 1) {            // Yalnız basış anında (LOW -> HIGH) / Only at the press (LOW -> HIGH)
13      ledState = !ledState;       // Durumu ters çevir / Flip the state
14      digitalWrite(7, ledState);
15    }
16    delay(50);                    // Sıçramayı atlamak için kısa bekleme / Short wait to skip the bounce
17    lastButton = button;          // Bu okumayı sakla / Store this reading
18  }
19}
20
BlokC++ satırıGörevi
tanımla: tam sayı (int) ledState = 0int ledState = 0;LED'in durumunu saklar
tanımla: tam sayı (int) lastButton = 0int lastButton = 0;Butonun önceki okumasını saklar
button değişkenine 13 numaralı pini oku ataint button = digitalRead(13);Butonun şimdiki durumunu okur
eğer button ≠ lastButtonif (button != lastButton) {Buton durumu değiştiyse içeri girer
eğer button = 1if (button == 1) {Değişim bir basışsa (0'dan 1'e) içeri girer
ledState değişkenine ledState değil ataledState = !ledState;0'ı 1, 1'i 0 yapar
7 numaralı pine ledState yazdigitalWrite(7, ledState);LED'i yeni duruma getirir
50 ms bekledelay(50);Buton kontağının sıçramasını atlar
lastButton değişkenine button atalastButton = button;Bu okumayı bir sonraki tur için saklar

Programın kalbi iç içe iki eğer bloğudur. Dıştaki button ≠ lastButton koşulu yalnızca butonun durumu değiştiği turda doğru olur; butonu basılı tuttuğun ya da hiç dokunmadığın binlerce turda hiçbir şey yapılmaz. Değişim iki yönde olabilir: basış (0'dan 1'e) ya da bırakış (1'den 0'a). İçteki button = 1 koşulu bunlardan yalnızca basışı seçer. Böylece LED her basışta bir kez değişir, bırakınca hiç değişmez. Kodda iç içe if'ler süslü parantezlerin iç içe geçmesiyle görünür. Bloklarda ise içteki eğer bloğu dıştakinin "yap" koluna oturur; hangi satırın hangi koşula bağlı olduğu ilk bakışta anlaşılır.

ledState değil bloğu C++'ta !ledState olarak yazılır. Ünlem işareti mantıksal tersini alır: 0'ın tersi 1, sıfır olmayan her sayının tersi 0'dır. ledState'i kendi tersine atamak durumu her basışta çevirir. Ardından gelen "7 numaralı pine ledState yaz" bloğu digitalWrite(7, ledState) satırıdır; HIGH 1'e, LOW 0'a eşit olduğu için değişkenin değeri doğrudan pine yazılabilir. En sonda lastButton'a bu turun okuması atanır ki bir sonraki turdaki karşılaştırma doğru yapılsın. Bu atamayı unutursan lastButton hep 0 kalır, butonu basılı tuttuğun sürece dıştaki koşul her turda doğru çıkar ve LED hızla yanıp söner.

50 ms bekle bloğu süs değil, basit bir debounce (sıçrama önleme) yöntemidir. Butonun metal kontakları kapanırken birkaç milisaniye boyunca açılıp kapanır; kart bunu çok hızlı okuduğu için tek basışı art arda birkaç basış sanabilir ve LED rastgele yanık ya da sönük kalır. Durum değiştikten sonra 50 ms beklemek sıçramanın bitmesine zaman tanır. delay() beklerken kart başka iş yapamaz; programı durdurmadan zamanlama için millis() ve delay() yazısına göz at.

Analog koşul: LDR ile gece lambası

Koşullar yalnızca YÜKSEK ve DÜŞÜK için değildir. Ldr İle Gece Lambası projesinde "value değişkenine analog oku A0 ata" bloğu, LDR'nin bağlı olduğu A0 pinindeki gerilimi 0 ile 1023 arasında bir sayıya çevirir; C++'taki karşılığı value = analogRead(A0); satırıdır. Ardından eğer bloğu value < 50 koşuluna bakar. Değer 50'nin altındaysa ortam karanlık sayılır ve D13'teki LED yanar, değilse söner. Yapı Push projesiyle aynıdır; değişen tek şey koşul yuvasındaki karşılaştırmadır.

Ldr İle Gece Lambası projesinin blokları: analog oku A0 ve value < 50 koşulu
Analog okuma 0–1023 arası bir sayı verir; eğer value 50'den küçükse LED yanar, değilse söner.
C++ (Arduino IDE)
1int value;   // Işık okuması (0-1023) / Light reading (0-1023)
2
3void setup() {
4  pinMode(13, OUTPUT);   // LED çıkışı / LED output
5}
6
7void loop() {
8  value = analogRead(A0);   // Işık seviyesini oku / Read the light level
9
10  // Eşik 50: altı karanlık sayılır, hassasiyeti bu sayıyla ayarla
11  // Threshold 50: anything below counts as dark. Tune the sensitivity with this number
12  if (value < 50) {
13    digitalWrite(13, HIGH);   // Karanlık: LED yanar / Dark: LED on
14  } else {
15    digitalWrite(13, LOW);    // Aydınlık: LED söner / Bright: LED off
16  }
17}
18

Eşik 50, LDR'nin ve devredeki direncin değerine göre senin odanda fazla düşük ya da yüksek kalabilir. Doğru sayıyı bulmak için önce Ldr İle Işık Şiddeti Okuma projesiyle aydınlık ve karanlık değerlerini Seri Port Ekranı'nda izle, eşiği ikisinin arasına koy. Değer tam eşiğin çevresinde gidip geliyorsa LED titreyebilir; açma ve kapama için iki ayrı eşik kullanmak bunun güzel bir çözümüdür. LDR'nin çalışma mantığını LDR ışık sensörü yazısında bulabilirsin.

Koşulları birleştirmek: ve bloğu ile &&

Bazen tek koşul yetmez. HC-SR04 Mesafe Ölçme (Serial Ekran) projesinde ölçülen mesafe yalnızca 3 cm ile 100 cm arasındaysa Seri Port Ekranı'na yazılır. Blokta iki karşılaştırma bir ve bloğuyla yan yana bağlanır: "distance > minDistance ve distance < maxDistance". C++'ta bu satır if (distance > minDistance && distance < maxDistance) olur. && işareti iki taraf da doğruysa sonucu doğru yapar, biri bile yanlışsa koşul yanlıştır. Böylece sensörün ölçüm sınırı dışındaki anlamsız değerler ekrana hiç düşmez. C++'ta "veya" için || kullanılır; iki koşuldan birinin doğru olması yeter. VE, VEYA ve DEĞİL'in doğruluk tablolarını mantık kapıları aracında deneyebilirsin.

ESP32'de aynı koşullar: dahili pull-up ve ters mantık

ESP32 Buton ile LED Kontrol (Push) projesi aynı eğer bloğunu ESP32'de kullanır, ama iki farkla. LED GPIO 5'e, buton GPIO 4'e bağlıdır ve buton pinine "GİRİŞ (PULLUP)" seçeneği verilir. Bu, C++'ta pinMode(BUTTON_PIN, INPUT_PULLUP); satırıdır: kartın içindeki direnç pini YÜKSEK'e çeker, dışarıdan direnç gerekmez. Buton bu kez GND'ye bağlandığı için basınca pin DÜŞÜK okunur, yani koşul "BUTTON_PIN numaralı pini oku = DÜŞÜK" olur. ESP32 Buton ile LED Kontrol (Toggle) projesi ise aç-kapa işini 50 ms bekleme yerine "açılıştan beri geçen ms" bloğuyla, yani millis() ile yapar ve iki koşulu yine bir ve bloğuyla birleştirir. ESP32 pinleri 3,3 V ile çalışır; butonu 5 V'a bağlama.

Sık yapılan hatalar ve çözümleri

HataBelirtiÇözüm
Pull-down direnci yokLED kendi kendine titriyor, el yaklaşınca yanıyorD13 ile GND arasına 10 kΩ koy ya da INPUT_PULLUP kullanıp mantığı ters çevir
Koşulda tek eşittir: if (button = 1)LED butona bakmadan hep yanıyorKarşılaştırmada == kullan
if satırının sonuna noktalı virgülSüslü parantezdeki kod koşuldan bağımsız her turda çalışıyorif (…) satırının sonundaki ; işaretini sil
Butonun aynı taraftaki bacakları kullanılmışPin hep YÜKSEK ya da hep DÜŞÜK okunuyorÇapraz bacakları kullan
Aç-kapada lastButton güncellenmiyor ya da bekleme yokLED basılı tutunca yanıp sönüyor ya da rastgele kalıyorlastButton = button satırını ve 50 ms beklemeyi ekle
INPUT_PULLUP'ta HIGH'ı basılı sanmakLED ters çalışıyor, bırakınca yanıyorDahili pull-up'ta LOW = basılı demektir
LDR eşiği ortama uymuyorLED hiç yanmıyor ya da hep yanıkDeğeri Seri Port Ekranı'nda izleyip eşiği yeniden seç

Uygulamada blokları ve kodu yan yana açmak

Bu yazıdaki projelerin hepsi BlueGrays uygulamasındaki ücretsiz bloklu projeler arasında. Bir projenin kod bölümünde Bloklarla göster anahtarını açınca kodun yerine aynı programın blokları gelir; görsele dokunursan tam ekran açılır. Blokları anla sekmesi programı adım adım anlatır: her adımda yalnızca o adımın blokları ve ne yaptıkları görünür, böylece iç içe eğer bloklarını tek tek izleyebilirsin. Kod rehberindeki if/else ve digitalRead örnekleri de bloklarla gösteriliyor. Bloklar karta doğrudan yüklenmez ve şimdilik kendi bloklarını dizerek program yazamazsın; karta her zaman projenin gerçek C++ kodunu Arduino IDE'ye kopyalayıp yüklersin. Öğrendiklerini tekrar etmek istersen Günün soruları her gün A1'den C2'ye seviyelerde 5 soru soruyor.

Koşulları öğrendiğine göre sıradaki adım tekrarları ve sayaçları yönetmek: döngüler ve değişkenler bölümünde "sürekli tekrarla"nın loop() ile, say bloğunun for döngüsüyle ilişkisini göreceksin. O zamana kadar BlueGrays uygulamasında Buton İle Led Yakma, Ldr İle Gece Lambası ve ESP32 buton projelerinin devre şemasına ve koduna bakabilir, Bloklarla göster ile blok hâline, Blokları anla ile adım adım açıklamasına geçebilirsin.

Sıkça sorulan sorular

Blok kodlamada eğer bloğu ne işe yarar?

Eğer bloğu programın bir koşula göre karar vermesini sağlar: koşul doğruysa "yap" kolundaki bloklar, yanlışsa "değilse" kolundakiler çalışır. Arduino projelerinde genellikle bir butonun basılı olup olmadığına ya da bir sensör değerinin eşiği geçip geçmediğine bakmak için kullanılır. C++'taki karşılığı if/else yapısıdır.

Arduino'da if ile else arasındaki fark nedir?

if, parantez içindeki koşul doğruysa süslü parantezlerindeki kodu çalıştırır. else ise isteğe bağlıdır ve yalnızca koşul yanlış olduğunda çalışacak kodu tutar. else yazmazsan koşul yanlışken hiçbir şey olmaz ve program bir sonraki satıra geçer.

Arduino'da = ile == arasındaki fark nedir?

Tek eşittir (=) bir değişkene değer atar, çift eşittir (==) iki değeri karşılaştırır. if (x = 1) yazmak x'e 1 atar ve koşulu her zaman doğru yapar; doğrusu if (x == 1)'dir. Bloklarda karşılaştırma bloğundaki "=" işareti koda == olarak çevrilir.

Arduino'da butona basmadan LED neden kendi kendine yanıyor?

Büyük olasılıkla buton pini havada kalıyordur, yani pull-down ya da pull-up direnci yoktur. Bu durumda pin çevredeki gürültüyü okur ve rastgele YÜKSEK ya da DÜŞÜK görünür. Pin ile GND arasına 10 kΩ direnç koy ya da pinMode(pin, INPUT_PULLUP) kullanıp butonu GND'ye bağla.

Arduino buton ile LED nasıl aç kapa yapılır?

LED'in durumunu bir değişkende (ledState), butonun önceki okumasını başka bir değişkende (lastButton) tut. Buton durumu değiştiğinde ve yeni durum basılı olduğunda ledState = !ledState ile durumu çevir, digitalWrite ile LED'e yaz. Kontak sıçramasını atlamak için kısa bir bekleme (örneğin 50 ms) ekle; Buton İle Led Yakma (On Off) projesi tam olarak bunu yapar.

BlueGrays'teki blokları Arduino'ya yükleyebilir miyim?

Hayır, bloklar karta doğrudan yüklenmez. Bloklar projenin gerçek koduna birebir karşılık gelir ve programı anlamak için kullanılır. Karta her zaman projenin C++ kodunu Arduino IDE'ye kopyalayıp yüklersin.

Tüm projeleri gör
Buton İle Led Yakma (Push)
#9Başlangıç

Buton İle Led Yakma (Push)

Kapı zili gibi: bastığın sürece ışık yanar, bırakınca söner. Arduino butonu sürekli dinler; butona basılıyken LED'i yakar, elini çektiğin an söndürür. Kartın dışarıdan gelen bir dokunuşu nasıl hissett

4.8(113)
229
Buton İle Led Yakma (On Off)
#10Başlangıç

Buton İle Led Yakma (On Off)

Bir butona bir kez basınca ışık yanar, bir daha basınca söner; tıpkı odandaki lamba düğmesi gibi. Arduino her basışı fark edip LED'in durumunu tersine çevirir, düğme içindeki minik titreşimler ışığı k

4.8(100)
167
Ldr İle Gece Lambası
#12Başlangıç

Ldr İle Gece Lambası

Hava karardığında kendiliğinden yanan, sabah olunca sönen küçük bir gece lambası. Işık sensörü odadaki aydınlığı ölçer; Arduino ortam yeterince karanlıksa LED'i yakar, aydınlanınca söndürür. Sokak lam

4.8(102)
205
HC-SR04 Mesafe Ölçme (Serial Ekran)
#27Başlangıç

HC-SR04 Mesafe Ölçme (Serial Ekran)

Yarasalar karanlıkta yollarını nasıl buluyorsa HC-SR04 sensörü de öyle çalışır: duyamadığın bir ses gönderir, yankısını dinler ve önündeki cismin ne kadar uzakta olduğunu ölçer. Arduino bu mesafeyi sa

4.6(46)
71
ESP32 Buton ile LED Kontrol (Push)
#104Başlangıç

ESP32 Buton ile LED Kontrol (Push)

Butona basılı tutulduğunda LED yanar, bırakıldığında söner. ESP32'nin dijital input pin'i ve dahili pull-up direncinin nasıl kullanıldığını gösterir. INPUT_PULLUP modu sayesinde harici direnç gerekmez.

4.6(36)
55
ESP32 Buton ile LED Kontrol (Toggle)
#105Başlangıç

ESP32 Buton ile LED Kontrol (Toggle)

Butona her basıldığında LED'in durumu değişir: açıksa kapanır, kapalıysa açılır. Klasik toggle (geçiş) pattern'i. Debounce (sıçrama önleme) ile butonun mekanik gürültüsünü temizleyerek tek basışta tek değişim sağlarız.

4.6(39)
57
Ldr İle Işık Şiddeti Okuma
#11Başlangıç

Ldr İle Işık Şiddeti Okuma

Odanın ne kadar aydınlık olduğunu sayıyla görmek ister misin? Işığa duyarlı küçük bir parça olan LDR ortam ışığını ölçer ve Arduino bu değeri yarım saniyede bir bilgisayar ekranına yazar. Elinle üstün

4.6(81)
139
Led Yakma
#1Başlangıç

Led Yakma

Elektroniğin ilk merhabası: tek bir LED'i yakıp söndürmek. Arduino LED'i çok kısa aralıklarla yakıp söndürür, ışık hızlı hızlı göz kırpar. Kartın bir ışığı nasıl yönettiğini en sade haliyle görür, son

4.6(188)
1127