Bu projemizde
bir buton kontrolü ile led yakıp söndürme işlemi yapacağız. Devrenin çalışması
şu şekilde olacaktır: butona bastığımızda led yanacak, tekrar bastığımızda led
sönecektir. Bunun için devremizi devre şemasında belirtildiği gibi kurmalıyız.
Projenin Devre Şeması:
Projenin Devre Şeması:
digitalRead() Fonksiyonu:
Arduinoda
dijital değerler digitalRead fonksiyonu ile okunur. Dijital değer okuyacağımız
pini pinMode(pin_no, INPUT) komutu ile giriş pini olarak ayarlamalıyız.Projenin Kaynak Kodu:
int
led=9;
int
buton=10;
int
butonDurum;
int
ledDurum=0;
int
x=0;
void
setup(){
pinMode(led, OUTPUT);
pinMode(buton, INPUT);
}
void
loop(){
butonDurum=digitalRead(buton);
if(butonDurum==HIGH && x==0){
x=1;
if(ledDurum==0) ledDurum=1;
else if(ledDurum==1) ledDurum=0;
}
else if(butonDurum==LOW && x==1){
x=0;
}
if (ledDurum==1){
digitalWrite(led, HIGH);
}
else{
digitalWrite(led, LOW);
}
}
Hocam Allah razı olsun, tam olarak bunu arıyordum.
YanıtlaSilBredboard olmadan olmuyormu ?
YanıtlaSilfarketmez, olur yani
SilDİRENÇ ŞARTMI
YanıtlaSilarduino için şart değil. normalde led yanar (bozulur)
Silled bozulmaz. Ama elektriksel gürültü olacağından butonu gnd göndermek için kullanırız.Kullanmak istemiyorsanız INPUT_PULLUP yazarak direnç kullanmanız gerek yok sadece açıklama gereği duydum :)
Silyorumunuz için teşekkürler. Ledin hasar görmemesi için lede bağlı olan direnci kullanmakta yarar vardır. butona bağlı direnci ise kullanmayıp, dediğiniz gibi, mikrodenetleyicinin dahili dirençlerini aktif edebiliriz.
SilCok tesekkurler birazcik bilgim artmaya basladim mantigini bir turlu kavrayamadim :)
Silbu projede x değişkeni ne işe yarıyor. Sanki fazlalık gibi.
YanıtlaSilsistem butona basıldığında ledi yakmakta ve tekrar basıldığında ledi söndürmektedir. her butona basıldığında ledin durumu değişmekte ve butona tekrar basılana kadar ledin durumu korunmaktadır. böyle bir algoritma için x değişkeni tanımlanmıştır. burada x değişkeni ledDurum değişkeninin değerinin belirlenebilmesi için tanımlanmıştır.
SilTeşekkürler.. Mantığını kurmaya çalışıyordum. Yapmışsınız bile.
YanıtlaSilYaptığım denemelerde en sona Delay değeri eklerseniz çok daha kararlı çalışıyor bilginize.
else{
digitalWrite(led, LOW);
}
delay (50);
}
Rica ederim.
SilDelay konusunda haklısınız. Gecikme vererek daha kararlı çalıştırabilirsiniz devreyi.
İlginiz için ben teşekkür ederim.
bilgisayardan ii anlıyonuz heral
Silbilgisayardan ii anlıyonuz heral
Sili mis
YanıtlaSilDeğerli açıklamalarınız bizi aydınlatmış olup emekleriniz için çok teşekkür ederiz.
YanıtlaSilRica ederim. İlginiz için ben teşekkür ederim.
SilMerhaba ben arduino ile hiç kod kullanmadan led yakma söndürme yaptım fakat 10k direnç koydum bunu çıkartsam sorun oluşur mu?
YanıtlaSilMerhaba arduinoyu buton kullanarak kapatıp açabiliyor muyuz bilgi verebilir misiniz? kodları nasıl yazıyoruz
YanıtlaSilÇalışmadı
YanıtlaSilyanlış yapmışım
YanıtlaSilMerhaba ismim İbrahim
YanıtlaSilSize bir sorum olacak
Bir devrede 2 buton 2 led var
1. Butona basınca led 7 kez yanacak
2. Butona basınca led 3 kez yanacak
Bunun ardinyoda nasıl proglamlarım
digitalWrite(led, HIGH); // Bu komut ledimizi yakar..
Sildelay(500); //Bu komutta led 500 ms ye yanık bir şekilde bekliyor.
digitalWrite(led, LOW);//Bu komut ledi söndürüyor
delay(500); //Led 500 ms ye sönük olarak beklemede kalıyor.
tekrar etmesini istersen for döngüsüne sokmalısın
Silİnt a;
for(a=0; a<10;a=a+1){
digitalWrite(led,HIGH);
delay(1000);
digitalWrite(led,LOW);
delay(1000);
}
Açıklama:
Öncelikle a adında değişken belirlenir. Ve for komutu içerisinde başlangıç değeri olarak a=0 yazılarak 0 değeri atanır.
Daha sonra bitiş sayısını belirlemek için koşul ifadesi belirlenir. Burada a<10 yazılarak a sayısı 10 sayısından küçük olduğu sürece program çalıştırılır. Yani koşul olarak belirtilen ifade doğru olduğu sürece döngü tekrar eder.
Son olarakta artış miktarı belirlenir. a=a+1 ifadesi a değişkenine her çevrimde bir arttırılmasını sağlayacaktır. Bu değer a=a+2 olsaydı her çevrimde değer 2 artacaktı ve 10 sayısına beş çevrimde ulaşılacaktı.
For komutunun sonunda “{“ açılır ve kapatılır “}”. Bu parantezler arasına tekrar etmesi istenilen komutlar yazılır.
mrb bu kodlar sadece ledi açıp kapatıyor değil mi tek butonla 7-8 farklı işlemi nasıl yaparız butona bastığımızda birinci animasyon butona ikinci bastığımızda 2. animasyon butona üçüncü bastığımızda 3. animasyon gibi burada nasıl bir değişiklik yapmam gerekli
YanıtlaSilbu kodları baz alarak 8 animasyon ekledim her butona basışta animasyon gelmesi lazım birinci zaten direk geliyor ikincisi butona bastığında hemen geliyor ama üçüncü ve diğer animasyonlar gelmiyor nedeni nedir sizin if(ledDurum ==1){birinci işlem kısmı}else if(ledDurum ==2){ikinci işlem kısmı} böyle devam ettiriyorum tabi yukarıdaki kodlarda da değişiklik yaptım if(ledDurum ==1) ledDurum =2;else if(led Durum == 2) ledDurum =3 gibi sonunda 0 değeri veriyorum ki geri dönsün işlem bitince ama ne hikmetse 2 animasyondan sonra göstermiyor animasyonsuz her bölge çalışıyor ama animasyon koyduğumda çalışmıyor uzun süre butona bastığımda kafasına eserse üçüncüye dördüncüye falan geçiyor benim istediğim her basışta ne olursa olsun direk animasyona geçmesi animasyon uzunmuş kısaymış farketmeksizin böyle bir olayı nasıl yaparım
YanıtlaSilşu siyahlar ney ki
YanıtlaSilÖncelikle belirteyim bu kodları denemeden yazıyorum. Ancak kafama takılan ve benim için sorun oluşturan bir konuyu belirtmek istiyorum. Butona 1 saniye veya daha uzun süre basıldığında kararsızlık oluşmuyormu? Yani kesin bir şekilde bu işin yapılabilmesi için butona basıldığı andan itibaren taki buton bırakılınca kadar while döngüsünde sokmak gerektiğini bir kaç yerde okudum. Ancak nasıl uygulanacağını bir türlü öğrenemedim. Bu şekilde yeniden bu kodu yazıp yardımcı olursanız sevinirim.
YanıtlaSilx değişkeninin kullanılmasındaki amaç nedir? Anlayamadım
YanıtlaSilMerhaba, bir projemde nextion ekran kulaniyorum. Ekrandan sayfalari degistirdikce mega da badka islem yaptircam, ama sayfalar degismedine ragmen arduinom bu komutlarinkaciriyor. Bunu nasil cozerim
YanıtlaSilHerkese selamlar 1 led var Arduino 3 buton butona bastığım zaman renkler yanacak lütfen biri kod yapabilirmi
YanıtlaSil