Sonunda 3. yazımızıda yazmak nasip oldu, inşallah yeni bir arduino uygulamasını yapımını daha anlatmaya çalışıcam. Yapıcağımız uygulama ne derseniz açıkçası yukardaki resimle pek ilgisi yok o resmi ilginizi çeksin diye koydum :D bu gün yapıcağımız uygulama biraz daha yazının başlığıyla ilgili. 2. yazımızda arduino karttan veri almayı öğrenmiştik bu yazımızda arduino kartımıza bir buton yardımıyla veri gönderip LED'imizin yanmasını sağlıycaz. Yalnız sizden ufak bir ricam var lütfen yapılan bu LED yakıp söndürme uygulamalarını küçümsemeyelim, siz eğer o ledlerin yerine gerekli motorları koyarsanız yukardakine benzer bir robot kolda yapabilirsiniz. Bazı arkadaşlar alttarafı ampül yakıp söndürüyosun diye bu işleri küçümsüyo o yüzden böyle bir uyarıda bulunuyum dedim :) İnşallah biyerlerden para bulup kendime bi 3d yazıcı alabilirsem ilerleyen uygulamalarda bir robot kol yapmayıda düşünüyorum, o zamana kadar resmiyle yetinelim :D
Uygulamaya başlamadan hatırlatmamızı yapalım, bu uygulamaya başlamadan lütfen önceki yazıları okuyalım, çünkü orda verdiğim bazı bilgileri kalabalık olmasın diye burda vermiyorum.
Bu uygulamamızda tek bi devre yapıcaz ama yazdığımız kodlarda ufak değişiklikler yapıp, LEDin farklı tepkiler vermesini sağlıycaz O yüzden uygulama hakkında biraz daha bilgi veriyim.
**İlk baştaki amacımız butona bastığımız sürece LEDin yanması, aslında bunun için arduino karta gerek yok, pil, LED, anahtar ve birazda kabloyla bunları kolaylıkla yapabilirz. Ama karta veri gönderme mantığını anlamamız için gerekli.
**2. olarak butona bastığımız sürece LEDin 50ms aralıklarla yanıp sönmesini sağlıycaz. (50ms 1 saniyenin 20'te biridir sıkıyosa bunu arduinosuz elinizle yapmaya çalışın :D)
**3. olarakta butona basılı değilken ledin 500ms lik aralıklarla yanıp sönmesini, basıldığındaysa 50ms lik aralıklarla yanıp sönmesini sağlıycaz.
Şimdi uygulama için malzeme listesini vererek başlayalım.
Neler Gerekli?
*Arduino Uno/Mega
*Arduino Yazılımı
*Breadboard
*Jumper Kablo Seti
*2 tane 470 Ohm Direnç
*5mm LED
*Buton
Bu uygulamada daha önceden açıklamadığımız bi buton var onuda tanımlamaya gerek yok heralde bildiğiniz düğme işte :)
Uygulamamıza ilk olarak kurmamız gereken devre ile başlayalım
Şimdi kodlama bölümüne geçelim, Uygulamamızda 42 numaralı pin'e buton aracılığıyla veri göndericez daha sonrada 21 numaralı pin'deki LEDin yanmasını sağlıycaz
İlk olarak kartımızdaki 21 numaralı pin'i çıkış 42 numaralı pin'i de giriş olarak tanımlayalım
void setup bölümündeki süslü parantezler arasına
pinMode(42, INPUT); //42 numaralı pin'i giriş olarak ayarladık
pinMode(21, OUTPUT); //21 numaralı pin'i çıkış olarak ayarladık
yazıyoruz. Daha öncede dediğim gibi 3 tane program yazıcaz, bu 3 programdada void setup bölümünde aynı şeyler yazıcak çünkü devrede kullandığımız pinlerde herhangi bir değişiklik yapmıyoruz.
Şimdi ilk baştaki kısmı yani butona basınca LEDin yanması elimizi çekince LEDin sönmesi için olan bölümün kodlarını yazalım. void loop bölümündeki süslü parantezler arasına aşağıdaki kodları yazalım.
int buton = digitalRead(42);
//digitalRead(xx) kodu istediğiniz bir pindeki değerin HIGH mı yoksa LOW mu olduğunu belirlemek için kullanılıyor. Yani elektrik varmı yokmu onu öğreniyoruz. ``int`` kodunu ise digitalRead(42) den aldığımız değere buton ismini vermek için kullandık.
if (buton == HIGH)
{
digitalWrite(21, HIGH);
digitalWrite(21, LOW);
}
//bu bölümde if kodunu kullandık, dedikki eğer butondan HIGH değeri geliyosa 21 numaralı pin'e elektrik gönder. Burda aklınıza neden digitalWrite(21, LOW) dediğimiz gelebilir, bunun nedeni butondan elimizi çekince LEDin sönmesi eğer bunu yazmasaydık LED birkez yanardı ve daha sonra sönmezdi.
Evet uygulamamızın ilk bölümü bitti, Arduino programına kodların yazılmış hali aşağıdaki gibi olucak. Bu kodları yazıp kartımıza yüklersek butona basınca LED yanıcak butondan elimizi çekince sönücek.
Şimdi 2. kod bölümüne geçelim, bu sefer butona basınca LEDin 50ms aralıklarla yanıp sönmesini istiyoruz. void setup bölümü daha öncede dediğim gibi aynı olduğu için onu yazmıyorum direk void loop bölümünden başlıyorum. void loop bölümüne aşağıdaki kodları yazıyoruz.
int buton = digitalRead(42);
if (buton == HIGH)
{
digitalWrite(21, HIGH);
delay(50);
digitalWrite(21, LOW);
delay(50);
}
farkettiyseniz burda bir öncekiyle aynı kodları yazdım sadece yanma ve sönme sürelerini aralarına delay kodu ile 50ms aralık koyarak yanma ve sönme sürelerini ayarladım. 2. Bölümümüzde bitti kodların programa yazılmış hali aşağıdaki gibi olucak, eğer bu kodları yazıp kartımıza yüklersek butona basınca LED 50ms lik aralıklarla yanıp sönücek.
Son bölüme geçme vakti geldi, bu bölümde LED karta elektrik verildiği müddetçe 500ms lik aralıklarla yanıp sönücek, eğer LEDe basılırsada 50ms lik aralıklarla yanıp sönücek. Yine öncekilerdeki gibi void setup bölümü aynı olduğu için void loop bölümündeki kodları veriyorum. Kodlar aşağıdaki gibi olucak.
int buton = digitalRead(42);
if (buton == HIGH)
{
digitalWrite(21, HIGH);
delay(50);
digitalWrite(21, LOW);
delay(50);
}
else
{
digitalWrite(21, HIGH);
delay(500);
digitalWrite(21, LOW);
delay(500);
}
farketmişsinizdir bu bölümde 2. bölüme çok benziyo tek farklılığı biz karta dedikki sen butona basılmadığındada bişeyler yap boş durma. Son bölümümüzde bitti, eğer bu kodları yazıp karta yüklersek, LED karta elektrik verildiği anda 500ms lik aralıklarla yanıp sönmeye başlıcak, butona basıldığında ise 50ms lik aralıklarla yanıp sönmeye başlıcak. Kodların yazılmış hali aşağıda.
Bir uygulamamızın daha sonuna geldik :) ben sizi yazdığımız kodlarla kartın neler yaptığını gösteren video ile başbaşa bırakıyorum, sormak istediğiniz bir soru olursa aşağıdaki yorum bölümünden veya mesaj yoluyla sorabilirsiniz, herkese hayırlı ramazanlar :)
Vallahi hacı bu kadar zevkli anlatan görmedim.
YanıtlaSilDaha ileri seviye proje anlatımlarını bekliyorum.
Teşekkürler :)
SilYurt dışından baya parça sipariş ettim, inşallah onlar gelirse farklı şeyler yapmaya çalışıcam :)
Benim gibi elektronik bilgisi olmayanlar için bile anlaşılır olmuş. Bende ses ile fotoğraf makinesini tetikleyecek bir sistem yapmak istiyorum. Buradan okuduklarım ile yapabilirim inşallah...
YanıtlaSilBen arduino işine sıfırdan başladım, Genelde internetteki anlatımları elektronik bilgisi olan kişiler anlatıyor, o anlatımları okurken bazı yerlerde hiç bilgim olmadığı için takılıyodum. Bu blogda elimden geldiğince basit ve anlaşılır anlatımlar yapmaya çalıştım :)
Sil