Merhaba arkadaşlar. Arduino dersleri serimizin bu kısmında sizlere Arduino ile push buton kullanımından bahsedeceğiz ve LED ile bir uygulama yapacağız.
Serimizin ilk yazısında Arduino kurulumundan bahsetmiştik >>> Arduino Nedir? Detaylı Arduino Kurulumu
Buton kullanmadan Arduino ile nasıl LED yakılır diyorsan >>> Serinin ilk uygulaması Arduino ile Blink yazımıza buradan ulaşabilirsiniz.
Arduino İle Buton Kullanımı
Arduino kartımızın dijital pinlerini şimdiye kadar sadece çıkış fonksiyonunda kullanmıştık. Fakat dijital pinler giriş özelliği sayesinde sensörler ve butonlar gibi diğer çevre birimleriyle de kullanılmakta. Bu dersimizde push buton kullanarak LED yakıp söndürmeyi öğreneceğiz.
Gerekli malzemeler: ( Not: Arduino Buton Kullanımı ve 10. Derse Kadar Olan Dersleri “Arduino Başlangıç Seti” İle Yapabilirsiniz. Malzemeler Bu Sette! >)
- Arduino UNO
- Breadboard
- 1 adet 330Ω direnç
- 1 adet 10kΩ direnç
- 1 adet push-buton
- İki ucu erkek jumper kablo
Arduino Buton Bağlantısı – Buton ve LED Devre Bağlantısı Nasıl Yapılır?
Kartımızın bağlantı şeması şu şekilde:
Dikkat ettiyseniz butonu bağlarken 10kΩ direnç kullandık. Bu direncin ismi pull-down direncidir. Peki pull-down direnci ne işe yarar?
Pull-down direnci, dijital pinleri giriş olarak kullandığımızda sinyalin bozulmamasını sağlar. Bu projemizde buton basılı değilken dijital pinden okunan değer 0V yani lojik LOW seviyesidir. Pull-down direnci, buton basılıp değer HIGH’a çekilmediği sürece bu pindeki gerilimin 0V’ta sabit kalmasını sağlar.
Haydi! Buton İle LED Yakmak İçin Kodu Yazalım
#define Buton 8 #define Led 10 void setup() { pinMode(Buton, INPUT); pinMode(Led, OUTPUT); } void loop() { if (digitalRead(Buton) == 1) digitalWrite(Led,HIGH); else digitalWrite(Led,LOW); }
2 Pinli Push Buton İle 4 Pinli Push Buton Bağlamada Fark Var Mı?
2 pinli push buton ile 4 pinli push buton bağlantıları arasında hiçbir fark yoktur. 4 pinli push butonların ikişer bacakları paralel bağlıdır. Yani buton 4 pinli de olsa 2 pinli mantığı ile bağlanmaktadır. Burada önemli olan nokta hangi iki bacağın paralel olduğunun bilinmesidir.
Görselde de göründüğü gibi 4 pinli push butonda kırmızı olarak gösterdiğimiz 2 pin, 1 pin olarak kullanılır, mavi 2 pin de 1 pin olarak görev yapar.
Hocam aldığım set de, çıt çıt uton geldi ve benim tabirimce 2 bacaklı, projede 4 bacaklı olarak gösterilmiştir, ben bir türlü yakamadım led i.
Saygılarımla
Görseldeki buton, breadboard’un üst kısmında kalan iki bacak butona basıldığında kısa devre olacak şekilde çalışmaktadır. Siz de 2 bacaklı butonunuzu buna göre bağlayabilirsiniz.
hocam ben bunların aynısını yapıyorum ancak olmuyor burada dirençlerin kaç ohm olduğu önemli mi
Evet, dirençlerin değerleri önemli, yüksek değerli direnç kullandıysanız LED’ler çok düşük parlaklıklta yanacağından yanmıyormuş gibi görünebilir.
hocam 220 ohm olumu bende 330 yok çünkü
Olur, sorunsuzca kullanabilirsiniz.
evet 10k olamalı
Devreyi ve programı aynen yazmama rağmen butonuna hiç bir işlevi yok ledler butona basmadanda yanıyor ????
Büyük olasılıkla butonu ters bağladınız, bağlantılarınızı tekrar kontrol etmenizi tavsiye ederim.
kerem bey buton bağlantınız yanlış. lütfen bağlantının doğrusunu ekleyerek düzenleyiniz.
hocam buton olmadanda çalışıyor
Öncelikle kolay gelsin güzel bir paylaşım yalnız devreyi şekildeki kurmama ve kodlarıda birebir yazmama rağmen yanma işlemi yapıyor yalnız söndürme işlemi yapmıyor.
Söndürme işlemini ekleyebileceğimiz kod buluğunu nerede ve nasıl kullanabilirim ??
ledi kapatmak için digitalWrite (ledPin,OUTPUT); kodunu yazabilirsiniz. LedPini hangi ledi yakmak isterseniz ona göre değiştirebilirsiniz.
Aga böyle bir kod mu var? digitalWrite(led, LOW); olması gerekmiyor mu
hocam yazılımı aynen yapıştırmama rağmen buton deger does not a type name hatası alıyorum neden acaba
Hocam gönderilen beeadboard resimlerle aynı değildir.bana gönderilende resimlerdeki gibi +- sırasındaki girişler ile harf sırasındaki girişler aynı hizada değil
Bir fark olmayacaktır, üst ve alt sıraları ayrı ayrı + ve – hatları olarak kullanabilirsiniz.
merhabalar kullandığınız % kavramının işlevini açıklayabilir misiniz acaba??
Merhabalar, C dilinde % işareti modülüs operatörüdür. Yani matematikte kullanmmış olduğumuz mod işlemine denk düşer. İki tam sayı arasında kullanıldığında soldaki sayının sağdakine bölümünden kalanı verir. Örneğin
7 % 5;
bize 2 verecektir.
Evet bir tür işaret gibi.
Çok Yararlı Bir Yazım olmuş. Ve Bende Gayet Güzel Çalıştı. Sadece devreler gecikme yapıyor. Onun Dışında, Harika bir paylaşım olmuş.
Kardeşim 10 Ohm Kullanıyoruz dirençleri demişsin İlk olan siyah turuncu kahverengi renkli . Fakat Diğer dordu Turuncu Turuncu Kahve neden ve o dordu kaç ohm ? ACİL
butona bağlı olan direnç kodun altında belirtildiği gibi pull up pull down işleminde kullanılmış ve 10 k dirençtir ledlere bağlı olan dirençler ise ledeleri korumak amaçlı konulmuş 330 ohm kullanılmış
merhaba,
Arduino:1.8.3 (Windows XP), Kart:”Arduino/Genuino Uno”
Çalışmanız programın 1294 bayt (4 %) saklama alanını kullandı. Maksimum 32256 bayt.
Global değişkenler belleğin 21 byte kadarını (1%) kullanıyor. Yerel değişkenler için 2027 byte yer kalıyor. En fazla 2048 byte kullanılabilir.
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x60
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x60
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x60
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x60
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x60
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x60
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x60
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x60
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x60
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x60
Karta yüklenirken sorun oluştu. Tavsiyeler için http://www.arduino.cc/en/Guide/Troubleshooting#upload adresine göz atabilirsiniz.
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
arıza çözümü nedir?
Dijital pin 0 ve 1’de bağlı herhangi bir donanım olmadığından emin olun.
port seçimini doğru yapmamış olabilirsin
selamlar..Hocam öncelikle ellerinize sağlık teşekkürler.. Programın çalışma mantığını adım adım anlatabilir misiniz?
İyi çalışmalar..
Hocam peki bunun butona bastıktan sonra saymaya devam etmemesi için ne yapacağız. butona basılı tuttukça sayıyor bunu tek sayma nasıl yapabiliriz.
Şuaradaki örneğe bakarak dijital pinlerin durum değişimini algılatabilirsiniz: https://www.arduino.cc/en/Tutorial/StateChangeDetection
butona basıldığında ledi bi sure yakcak bi projeyi nasıl yapabilirim
#define Buton 8
#define Led 10
void setup()
{
pinMode(Buton, INPUT);
pinMode(Led, OUTPUT);
}
void loop()
{
if (digitalRead(Buton) == 1)
digitalWrite(Led,HIGH);
delay(süre);
digitalWrite(Led,LOW);
}
delay parantezinin içine milisaniye cinsinden yazacaksın
stay’\304’şn program hatası veriyor nerede yanlış yapmış olabilirim
Arduino:1.8.3 (Windows 10), Kart:”Arduino/Genuino Uno”
C:\Users\Win10\AppData\Local\Temp\arduino_modified_sketch_276983\sketch_nov18a.ino: In function ‘void setup()’:
sketch_nov18a:11: error: redefinition of ‘void setup()’
void setup()
^
C:\Users\Win10\AppData\Local\Temp\arduino_modified_sketch_276983\sketch_nov18a.ino:1:6: note: ‘void setup()’ previously defined here
void setup() {
^
C:\Users\Win10\AppData\Local\Temp\arduino_modified_sketch_276983\sketch_nov18a.ino: In function ‘void loop()’:
sketch_nov18a:36: error: redefinition of ‘void loop()’
void loop() {
^
C:\Users\Win10\AppData\Local\Temp\arduino_modified_sketch_276983\sketch_nov18a.ino:20:6: note: ‘void loop()’ previously defined here
void loop()
^
exit status 1
redefinition of ‘void setup()’
C:\Users\Win10\Documents\Arduino\libraries\sketch_nov17a içerisinde geçersiz kütüphane bulundu: C:\Users\Win10\Documents\Arduino\libraries\sketch_nov17a
C:\Users\Win10\Documents\Arduino\libraries\sketch_nov17a içerisinde geçersiz kütüphane bulundu: C:\Users\Win10\Documents\Arduino\libraries\sketch_nov17a
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
hocam herşeyi yaptım ama bu hatayı veriyor neden????
Kodu yanlışlıkla iki kere alt alta yapıştırmış olabilir misiniz? Verilen hata mesajlarında göreceğiniz üzere void loop ve void setup fonksiyonları iki kere tanımlanmış olduğu belirtiliyor.
Hocam ben de yukarıdaki ledleri butona her bastığımda sırayla yanmasını istiyorum.Mesela butona bastım 1.led,butona bastım 1.led sönecek 2.led yanacak,butona bastım bu sefer 2.led sönecek 3.led yanacak…… diye yapmam gerekiyor.Lütfen yardım edin.Öğretmenim. Okulda öğrencilerim için bir materyal yapıyorum.
Arkadaşlar tek buton ile ledleri sırayla nasıl yakarız?Yani her basışta tek tek yanacak
sayaç yapmanız lazım
Öncelikle bu başarılı proje için teşekkürler .
Ben bir proje üzerinde uğraşıyorum . Proje görsel amaçlı bir proje .
Çalışma Şekli ;
Yaklaşık 10 tane led var bunlar kara şimşek gibi yanıyor işin bu kısmı tamamdır .
Eklemek istediğim şey ise 3 tane buton bu butonların görevi . 1. butona(tach buton) basıldığı zaman ledler kara şimşek şeklinde yanmaya başlıyacak(2. butona basılana kadar) , 2. buton(tach buton) basıldığı zaman ledlerin yanması duracak(1. butona basılana kadar) , 3. buton(tach buton) basıldığı zaman ledlerin örnrğin 3.leddeyse veya 5. leddeyse nerede kaldısya en başa saracak yani sıfırlamış olacak . Böyle birşey yapmam mümkün müdür ? Şimdiden yapacağınız yardımlar için teşekkür ediyorum .
Lezzetli robot tariflerinde senin istediğin gibi bir proje var
hocam aynısını defalarca yaptım ama ledler yanmıyo bide arduinoyu pc ye bağladığımda l ışığı sabit kalıyo yanıp sonmuyo
Program doğru şekilde yükleniyor mu?
SAYIN ROBOTİSTAN EKİBİ 5V PORTUNUN ALTINDAKİ GND PORTUNA BAĞLI OLAN KABLO YANLIŞTIR, O KABLONUN YERİ DEĞİŞTİRİLMELİDİR BEN O KABLONUN YERİNİ A PORTLARINDAN BİRİNE TAKARAK İŞLEMİ TAMAMLADIM AMA O KABLO GND PORTUNDAN A PORTLARINDAN BİRİNE TAŞINMALIDIR LÜTFEN DÜZELTİN BELKİ BENİMKİNDEN DAHA İYİ BİŞEY BULABİLİRSİNİZ SAYGILARIMLA TOPRAK TEMİZKAN
kardeşim çok teşekkür ederim senin sayende yaptım …………………..
Ora yanlış değil
Kod satırlarının anlamlarını nasıl öğrenebiliriz ? C bilmediğim için biraz yabancı geliyor.
herşeyi tıpatıp yapıorum banamı bozuk mal geldi anlamadım ledler yanmıyo hiç bişey olmuyo sadece kodu gönderebiliyorum
LED’lerinizin yönü ters olabilir mi acaba?
Mrb,
Arduino konusunda çok yeniyim.
Ama bu uygulamada anlayamadığım ve çözemediğim problemler yaşadım. Şöyle ki;
Bir kere butona basıldıktan sonra
bütün LED ler sırasıyla yanıyor ve sönmüyor.
Butona tekrar bastığımda bir değişiklik olmuyor LED ler yanmaya devam ediyor.
Büyük bir ihtimalle buton_pin=2 nolu pinden
buton_deger = digitalRead(button_pin);
komutuyla okunan değer hep HIGH oluyor.
Kartta mı bir problem var diye buton_pin=11 yaptım ama sonuç aynı.
Ayrıca LED ler
digitalWrite(ledler[i],LOW);
komutu ile sönmüyor.
Verilen kod eksik mi?
Ya da kodu yüklerken başka birşeyler mi yapmamız gerekiyor?
Debug modda çalıştırıp koddaki değişkenlerin değerlerini görebiliyor muyuz?
Konu ile ilgili yardımcı olursanız sevinirim.
problem çözüldü. buton_basilma++ ve delay(100) komutları for döngüsünün içinde kaldığından bu problem yaşanıyor. Bu komutlar for döngüsünün dışına alınınca problem çözüldü.
arkadaşlar ledlerin yönü nasıl
bükük olan mı uzun düz olan mı??????
LED’lerin kısa bacakları katot, yani eksi ucudur. Buna göre bağlantı yapabilirsiniz.
Ben Arduinoda çok yeniyim. Bu kodları bir de blok ile yazabilirseniz çok sevinirim.
Merhaba, buradaki yazımızdan faydalanabilirsiniz.
hocam bana çok acil 2 buton 2 led 1 butona bastıgımzda 1 led 7 defa yanıp söneck 2 buttona bastıgımzda 2 led 3 defa yanıp sönecek
tüm her şeyi tamamladım fakat düğmeye basınca ledler yanmıyor
LED’lerinizin veya butonunuzun yönü ters olabilir.
meraba iyi günler hocam. Bana PULLDOWN İLE LEDİ İLK BASTIGIMIZDA DEVAMLI YANACA, 2. BASTIGIMIZDA YANIP SÖNECEK VE 3.BASTIGIMIZDA KOMPLE SONECEK. DEVRENİN KODLARI LAZIM YARDIMCI OLURMUSUNUZ. dersden kaldım ve bunu yapmam lazım
Butona her basıldığında bir artacak bir sayaç oluşturun. Örn:
if(buton == LOW) {counter++;}
Daha sonra sayaç değerinin her bir artması durumunda LED’in yanma modunu değiştirecek bir if yapısı oluşturun. Örn:
if(counter %3 == 0) {digitalWrite(ledpin, HIGH);}
if(counter %3 == 1) {digitalWrite(ledpin,LOW);}
Arduino: 1.8.5 (Mac OS X), Board: “Arduino/Genuino Uno”
/var/folders/n3/cd5zn_fd44jfdt_52mj0c1g40000gn/T//ccvxxlTG.ltrans0.ltrans.o: In function `main’:
/Users/aayavuz/Desktop/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/main.cpp:43: undefined reference to `setup’
collect2: error: ld returned 1 exit status
exit status 1
Error compiling for board Arduino/Genuino Uno.
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
Arduino IDE programını tekrar yüklemeyi deneyin.
Hocam kodların ne anlama geldiğini yazınıza ekleyebilir misiniz ?
led_sayisi , i++ vb. nedir ne anlama geliyor ? Hepsini detaylıca açıklayabilir misiniz ?
mrb anlatımınız için tşk ederim. bar neopixel ile birden fazla animasyon yapıp butona her basışta animasyon değiştirmesini istiyorum nasıl yapabilirim birde bar neopixel için elinizde animasyonlar varsa eklerseniz sevinirim kolay gelsin
meraba
bende ” if (buton_basilma % led_sayisi == i)” satırında ” ‘i’ was not declared in this scope” hatasını veriyor kodlar aynı şema dahil aynı ama bu hatayı veriyor lütfen neden olduğunu söylermisiniz
Ben bu sitede buton ile 4 led kontrol etmeyi yapmıştım.Ama şimdi o burda yok.Onun kodunu bilen varsa yazabilir mi?Sanırım güncelleme getirmişsiniz.Bundan dolayı eskiden baktığım.1 buton ile 4 led yakılmıştı.Ve ledler döngü halindeydi.O kodu ne olur yazın?
İyi günler elimde 220volt 6w bir motor var 2 adet switch ile bu motoru 1. Switch e bastıktan 2 saat sonra çalışacak 2. Switch e bastıktan sonra durup 2 saat sonra çalışıp 1.switch e basıp durup 2 saat sonra çalışıp 2.switch e basıp durup 2 saat sonra calisacak bir döngü lazim acaba nasil yapabilirim
Yorumları okudum itina ile herkese yardımcı olduğunuz için teşekkür etmek istedim. Kolay gelsin 🙂
beyler kodlar bu
#define buton (kaça bağladıysanız)
#define led (kaça bağladıysanız)
void setup()
{
pinMode(buton,INPUT);
pinMode(led,OUTPUT);
}
void loop()
{
if digitalRead(buton)==1)
digitalWrite(led,HIGH);
else
digitalWrite(led,LOW);
}
#define buton
#define led 3
void setup()
{
pinMode(buton,INPUT);
pinMode(led,OUTPUT);
}
void loop()
{
if digitalRead(buton)==1)
digitalWrite(led,HIGH);
else
digitalWrite(led,LOW);
}
Hocam Acil Yardımınıza İhtiyacım var Dersten Kalıcam yoksa.ben butona basınca led hep yanıcak takı ben bıdaha butona bastıgımda yanı bırkere butona bastıgımda hep yanıcak acık kalıcak bıdaha bastıgımda sonucek.Lutfen Yardım
hocam merhaba ;
ben yeni başladım kodu tamamıyla yazdım birebir ama ‘#’ stray hatası veriyor acil yardım
ikinci yaptığım deney oldu ve gayet düzgün çalıştı teşekkürler daha öğrenecek çok şeyimiz var
Bendeki push buton farklı ben scratch ile arduino seti almıştım sitenizden, onuun nasıl bağlanacağını anlayamadım mavi başlı içinde yay var
Butona 4. kez basınca LED ışık versin, 7. kez bastıktan sonra ise LED sönsün.
bu deneyi nasıl yapabiliriz hocam
Hocam merhaba ben ilk okul 2. sınıf öğrencisiyim. Yeni öğreniyorum Butona basınca yansın tekrar butona basıca sönsün istiyorum komutunu yazar mısınız?
int buton = 1; //burada butonlardan birini 1’e bağladık
int led = 3; //burada ledi 3’e bağladık
void setup() {
pinMode(buton1,INPUT) //burada buton1’den bilgi alacağımızı belirttik
pinMode(led,OUTPUT); //burada led’e bilgi vereceğimizi belirttik
}
void loop() {
if (digitalRead(buton) == 1){ //burada buton1 çalıştığı zaman ledi yakacak
digitalWrite(led,HIGH);
}
if (digitalRead(buton) == 1){ //burada buton1 çalıştığı zaman ledi söndürecek
digitalWrite(led,LOW);
}
}
burada tek butonla yaptığım kod var
bir yanlışım varsa yazın lütfen
eh artık devre yapmak sana düşer 😉
Ödev: 2 adet buton kullanarak 1.butona bastığımı zaman 5 adet led soldan sağa doğru yürüyen ışık şeklinde gidecek.2.butona bastığımızda ise sağdan sola doğru yürüyen ışık şeklinde giden devreyi simülasyon programı ile yapınız.
rica etsem yardımcı olur musunuz kodlarda
Aşağıdaki linkte istediğin program var.
https://yadi.sk/d/VnB1VDrC_X4XvQ
İki buton ve bir led ten oluşan devrede birinci butona kaç kere basıp bırakırsak ikinci butona bir defa basıp bırakınca ilk butonu kaç defa basıp bırakmışsak led te o kadar yanıp sönecek. Örneğin birinci butona 4 defa basıp bıraktık ikinci butona bir defa basıp bırakınca led 4 defa yanıp sönecek. Ve bu işlem sonzuz şekilde çalışacak rica etsem yardımcı olabilecek
Butona bastığımda bunu bilgisayarıma herhangi bir tuş gibi tanıtmak için ne yapmalıyım?
hocam çok yararlı bir bilgi olmuş ben butona bastığımda led yansın (sönmesin ama) tekrar bastığımda kapansın bunu nasıl yapabilirim acaba ?
Merhaba, ben yazılımı tamı tamına yaptım fakat; düğmeye basmadan ya da her hangi bir şey yapmadan led ışığım yanıp sönmeye başladı. Sorunu nasıl çözebilirim?
kodu yüklerken şu mesaj geldi: Arduino:1.8.13 (Windows Store 1.8.42.0) (Windows 10), Kart:”Arduino Uno”
Çalışmanız programın 892 bayt (2 %) saklama alanını kullandı. Maksimum 32256 bayt.
Global değişkenler belleğin 9 byte kadarını (0%) kullanıyor. Yerel değişkenler için 2039 byte yer kalıyor. En fazla 2048 byte kullanılabilir.
Taslak yüklenirken bir hata oluştu
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
Kerem İzgöl hocam Allah yardımcın olsun
😂
butonu değil de ledin durumunu if döngüsü ile nasıl kontrol edebiliriz? butona bastığında led yanıyorsa kapat, kapalıysa aç şeklinde?