4-) Kod Adı 4219


     Hala ramazan ayında olmamız münasabetiyle yine hayırlı ramazanlar diyerek 4. uygulamamızı anlatmaya başlayalım.
     Bu uygulama için aklıma güzel, insanın içinde heycan uyandırabilicek bi başlık gelmedi o yüzden başlığı direkt uygulamamızda kullandığımız şifreden oluşturuyum dedim :) Şimdi geyik muhabbeti bölümümüze geçelim :)
     Son uygulamamızı sağolsunlar arkadaşlar beğenmişti, bende dedim yine böle şuana kadar yapılmamış yapılmış olsa dahi paylaşılmamış bizlerden saklanmış uygulamaları sizlerle paylaşıyım dedim. Son uygulamanın beğenildiğini görünce keyifliydim heralde yaklaşık bi yarım saat bir saat filan keyfini yaşadım. Ama daha sonra şöyle bir sorun oldu, tmm iyi güzel sen bunu yaptında bundan sonra napıcaksın, çok şükür aklına güzel bişey geldi yaptın ama bundan sonraki uygulama ne olucak derdii sardı beni biraz. Yaklaşık 1 günümü internette dolaşarak ve bişey bulamayarak geçirdim. Daha sonra akşam olmuş hala internette dolaşıyodum, bu aradada aldığım malzemelere bakarak kendi kendime bunlarla ne yapılır diyodum. Dertli dertli malzemelere bakarken birden aklıma potansiyometrelerle bi şifre paneli oluşturabilceğim aklıma geldi. Daha sonra tamam şifre panelimiz olucak ama bu panel neyin şifresini çözücek dedim, sonra aklıma lise yıllarından çekmecemde kalan dolap kilidi geldi, hani bu yurtlarda kullanılan dolap kilitlerinden. İyi güzel dolap kilidimiz var ama bunlar 4-5 liralık kilitler ve haliyle elektronik değil :( Uzun uzun anlattık şimdi hemen kısaca bi özet daha geöip uygulamamıza geçelim. Bu uygulamada bildiğimiz yurtlarda kullanılan bi dolap kilidine motor takıp elektronik bir şekilde kullanılabilir hale getiricez, potansiyometrelerden oluşan 4 haneli bir şifre girme paneli yapıcaz, daha sonrada bunların hepsini arduino ile kullanılabilir hale getiricez inşallah. Bundan sonra uygulamalarda videoları sonda deilde başlarda paylaşmayı düşünüyorumm belki ilginizi çekerde okumak için dahada iştahlanırsınız :)


     Videomuzu izledikten sonra yazıyı daha bi iştahlı okursunuz inşallah :) gerekli malzemeler listemizi verelim.

Neler Gerekli ?
*Arduino Uno/Mega
*Arduino Yazılımı
*Breadboard
*Jumper Kablo Seti
*4 tane 470 Ohm Direnç
*2 tane Buton
*2 tane LED (1xYeşil - 2xKırmızı)
*1 tane Buzzer
*4 tane 1K Ohm Potansiyometre
*1 tane Dolap Kilidi
*1 tane DC Motor
*1 tane L239D
*12 tane Timsah Kablo Ucu
*Adaptör
*Alet edevat :)

     Bu seferki uygulamamız gözüktüğü gibi kalabalık denebilicek bir malzeme listesinden oluşuyo, şimdi şuana kadar kullanmadığımız malzemeleri açıklayarak başlayalım.


**Potansiyometre**
     Resimdeki arkadaşımıza potansiyometre diyoruz, ne işe yaradığına gelicek olursak aslında bildiğiniz direnç bu. Ama normal dirençten farkı ne demi. Bunun üstünde çevirebildiğimiz bi çubuk var bunu çevirdikçe uyguladığı direnç değişiyo. Bizim bu uygulamada kullanıcağımız potansiyometre 1K Ohm'luk bi potansiyometre. Videodaki şifre girme panelini görmüşsünüzdür 0'dan 9'a kadar sayılar var. Burda potansiyometre 0'da iken 0Ohm direnç 9'da ikende 1K Ohm direnç uyguluyo.





**Dolap Kilidi**
     Bu malzemeyide sanki daha önce açıklamadık ama blogda uğraştığımız alanla pek ilgili olmadığı için değinmiyorum, resimle yetinin :D





**DC Motor**
     Bildiğimiz şu uzaktan kumandalı arabalarda olan motor fazla kasmaya gerek yok :) yalnız ucuz uzaktan kumandalı arabalardaki motor diyelim, pahalılarda değişik şeylerde olabiliyo :) Resimde motorun ucuzda gördüğünüz gibi farklı bişey var, bu kırmızı şeyi evde bulduğum plastik bi parçayı keserek ben yaptım sizde bunu benzer bişeyler yapabilirsiniz.





**L239**
     Bunlara aslında ne deniyo tam bende bilmiyorum ama mikro denetleyici denebilir, ben alıcağım adama L239D varmı diceğimde direkt vermişti. Ne işe yaradığına gelicek olursak bu zamazingo motoru kontrol etmemize yarıyo, mesela bunun sayesinde biz her ne kadar bu uygulamada 1 motor kullansakta 2 motora sağa dön, sola dön ve şu hızda dön, bu hızda dön komutlarını verebiliyoruz. Motora sağamı yoksa solamı dönmesini nasıl sağladığımızı anlatıyım. Bu zamazingoya bağlantılar yapılırken dikkat ederseniz 2 tane dijital pin bağlanıyor ( bağlantı yazının alt tarafında ve biz tek motor kontrol ettiğimiz için 2 dijital pin bağlıyoruz, 2 motor kontrol etseydik 4 tane dijital pin bağlıycaktık) biz bu pinlerden birine güç verince motor bi tarafa diğerine güç verincede motor diğer bir tarafa dönüyor, hangi pin'e güç verince hangi tarafa döndüğünü bulmak için deneme yanılma metodunu kullanıyoruz. 1 pin'ede aynı anda güç verince ne oluyo açıkçası bilmiyorum, sizde kötü bi sonuçla karşılaşmamak için bence denemeyin :)





**Timsah Kablo Ucu**
     Aslında bu uygulama için çokta gerekli olmayabilir ama ben jumper kabloları potansiyometreye bunla bağladığım için yazıyım dedim. Jumper kabloyu bunun arkasından sokuyosunuz, daha sonra bunlarda arka tarafta diş gibi şeyler var onu pense veya benzeri bişeyle sıkınca jumper kablo buna yapışıyo gibi bişey oluyo :)

**Adaptör**
     Aslında bu uygulama için gereklimi bilmiyorum ama ben bunla çalıştırdım aklıma hiç usb'den güç alarak çalıştırmak gelmedi. Yine konuya bodozlama daldım ne diyo bu diyebilirsiniz açıklıyım. Bazen kartın gücü az gelebiliyo, az geldiği içinde özellikle motorların çalışması sıkıntı olabiliyor, bide benim yaptığım kilide motor bağlama işi eldeki aletlerle tam olmadığı için motorun kilidi biraz zorlaması gerekiyodu, o yüzden adaptör ile çalıştırdım sistemi. Arkadaşlar şuan evde deilim telefonun internetinden zor koşullarda bu yazıyı yazıyorum adaptörün resmini koyamıyorum :D

**Alet Edevat**
     Heralde açıklanması en zor bölüm bu :) benim çöplük gibi nitelendirilebilicek çekmecelerim var evde söktüğüm aletler, sağda solda bulduğum hoşuma giden nesneler ve bakıp ilerde ben bundan bişey yaparımki dediğim şeylerden oluşuyo :D bu uygulamanın mekanik kısmı olduğu için çekmecelerimi bol bol karıştırdım ve çok şükür işe yarayan bişeyler çıktıda yapabildim. O yüzden açıklamıyorum resimlerde az çok sistemin nasıl çalıştığını anlayıp sizdede böle çekmeceler varsa uygulamayı yaparsınız :)

     Bu uygulamada malum mekanik kısımda var, o yüzden ilk başta şu motoru kilide montaj yaparak başlayalım, nasıl yaptığımı anlatıyım daha sonrada resimleri veriyim siz anlarsınız zaten :) şimdi daha öncede bahsettiğim çekmecemi karıştırdım ve bazı malzemeler buldum. İlk başta bi plastik parçayı maket bıçağı yardımıyla kesip bir ucunun motorun ucuna girmesini diğer ucununda dolap kilidinin anahtar kısmına girmesi için gerekli şekilleri verdim. Ayriyeten dolap kilidinin anahtarı hazırladığım plastik parçaya uysun diye anahtarıda kestim bazı yerlerinden. Daha sonra yine çekmecemden çıkan ve ne olduğu ve kimin koyduğu hakkında bilgim olmayan bir plastik parça buldum :D bu plastik boruya benzer parçaylada motorla kilidi birbirine bağladım, tabi boru biraz küçük geliyodu, motor ve kilidin boruya girmesi zor oluyodu, bu kısımları bulaşık deterjanının yardımıyla hallettik :) Şimdi Resimleri verelim.





     Şimdide devremizin nasıl kurulduğunu breadboard üstünde gösterelim. Yalnız arkadaşlar bu uygulamanın sadece motor bağlantısı kısmını breadboard üstünde göstericem. Bunun sebebi diğerlerinide gösterince bağlantıların baya karmaşık olması zaten buton, LED ve buzzerin nasıl bağlanıcağınıca daha önceleri göstermiştik. Burda bazı şeyler söylemek istiyorum aldığınız L239D de bi taraf hafiften oyuk olur resme dikkatli bakarsanızda bu tarafı görebilirsiniz, breadboard üzerinde devreyi kurarken buna dikkat edelim. Ama biyerde takılırsanız daha önceleride dediğim gibi istediğiniz soruyu sorabilirsiniz.



     Şifre girme panelimizin nasıl olucağını anlatarak anlatalım şimdide.

     Arkadaşlar ilk başta word'de resimde görüldüğü gibi 4 haneden oluşan şifre panelini yapıp yazıcıdan çıkardım, daha sonrada çıkardığım panelin boyutuna göre bi karton kestim, gösterge panelini kartona yapıştırmak daha mantıklı tabi ama ben biraz hemen olsun dediğim için yapıştırmadım onun yerine potansiyometreyi bir yere sabitlemek için kullanılan civatalardan faydalandım. Ayriyeten potansiyometrelerdeki çevrilen çubukların ortasında bi kanal oluyor. o kanalda bi kablo geçirip hangi sayılarda olduğunu daha belirgin bir şekilde gösteriyim dedim. Panelin arkadan görüntüsünüde gösteriyim.

96
     Arkadaşlar farkındaysanız potansiyometrelerin arkasını bantladım, bunun sebebi bazı timsah kablo uclarının potansiyometreye değiyor olması, bunun sistem açısından bi sıkıntısı varmı bilmiyorum ama ben yinede bantlıyım dedim. Ayriyeten gördüğünüz gibi potansiyometreler yamuk bağlı panele, bunun sebebi ise ön taraftaki kanalların göstergedeki 0'a denk gelmesi için. Potansiyometrelerin nasıl bağlandığına gelelim şimdide. Potansiyometrelerde 3 tane bacak olur, biz bu bacaklardan ortadakine analog girişimize bağlanıcak kabloyu, diğer kalan 2 uca ise toprak ve +5 volt kablolarını bağlıyoruz. Şimdi biz  hangisine +5 volt hangisine toprak bağlıycaz diyebilirsiniz, ilk başta kafanıza göre bağlayın ardından sistemde ufak bir test yapın ona göre kabloların yerini değiştirebilirsiniz. Bu test kısmını analog girişleri açıkladıktan sonra değinicem. Arkadaşlar farkındayım bu yazı karmaşık oldu gibi. Bazı sebeblerden ötürü yazıyı yazmam gecikti daha fazla geciktirmemek için biraz acele ediyorum.

***Analog Girişler***
     Şuana kadar biz hep dijital pinleri kullanmıştık ama analog pinleri hiç kullanmadık, değindiğimizide hatırlamıyorum. Şimdi dilimiz döndğünce anlatmaya çalışalım. Arkadaşlar biz dijital pinlerdeki butonlardan örnek vermek gerekirse butonlar ne yapıyoduk, butona basıyoduk ve butona basılıp basılmadığı ile ilgili bilgiyi alıcağımız pin'e +5 volt geliyorsa veya gelmiyorsa ona göre bazı işlemler yaptırıyoduk.  Evet tekrar söyleyelim geliyorsa veya gelmiyorsa, ya geliyodur ya gelmiyodur, ne kadar geldiğine bakmıyoduk. Analog pinlerde ne oluyor şimdide ona değinelim, analog pinler gelen veriye göre 0 ile 1023 arasında değerler alır. Yani bizim bağladığımız potansiyometre 0 sayısında ise pin'de 0 değeri geliyor, potansiyometre 9 değerinde ise pin'de 1023 değeri gözüküyor. Burda bi not eklemek istiyorum analog pinlere +5v den fazla bir değer uygulanmamalı eğer uygulanırsa kartınız bozulabilir.

***Şimdide potansiyometremizin sağ bacağınamı yoksa sol bacağınamı +5 volt veya gnd(toprak) bacağımızı ve paneldeki hangi sayıda hangi değerleri alıcağını bulalım.***

Evet arkadaşlar bu dediğim şeyleri yapabilmek için arduinoda yeni bazı şeyleri öğrenmemiz gerek, ilk başta ``Serial.begin(9600);`` kodu ile başlayalım. Biz arduinomuzla bilindiği gibi bazı şeyler yapıyoruz LED  yakıyoruz söndürüyoruz veya şuanki gibi analog pinleri kullanıyoruz, eğer istersek bu yaptığımız işlemleri bilgisayardan takip edebiliriz yani butona basınca bilgisayarda butona basıldı yazısını görebiliriz.  Bunu nasıl yaptığımıza gelirsek arduinodaki seri haberleşme ile öğreniyoruz. Eğer biz arduinodaki void setup bölümüne Serial.begin(9600); kodunu girersek kartın seri haberleşmesini açmış oluyoruz, burdaki 9600 sayısını sorucak olursanız bu sayı haberleşmenin frekansı gibi bişey, eğer bu sayıyı değiştirip yazarsanız ekranda bazı değerler alırmısınız evet alırsınız ama o değerleri anlayabilceğinizi pek zannetmiyorum :) Şimdi örnek kodu vererek, şifre paneline bağladığımız kabloları doğrumu bağladık onu öğrenelim.

void setup() {

  Serial.begin(9600);          //Seri haberleşmeyi başlattık.
}

void loop() {
  int deger = analogRead(A1); //Analog 1 pininde okunan değere ``deger`` ismini verdik
  Serial.println(deger);      //Serial.println(xxx) parantez içine bilgisayarda görmek istediğimiz değeri yazıyoruz
  delay(100);                 // Bu değerlerin kaç ms'de bir bilgisayara gönderilmesini istediğimizi söylüyoruz.

}

Eğer yukardaki kodu yazıp kartımıza gönderdiysek potansiyometrenin orta bacağını kartımızın A1 pin'ine diğer kalan 2 bacağında birini +5 a diğerinide GND pin'ine bağlayalım. Daha sonra programı yüklediğimiz arduino yazılımında sağ üst tarafında dikkat ederseniz bir büyüteç gibi birşey görüceksiniz. Eğer doğru bağlantıları yapıp bu butona tıklarsanız kart size 0 ile 1023 arasında değerler vericek. Siz potansiyometreyi çevirdikçe bu değerler değişicek. Şimdi şifre girme panelindeki ibreyi 0 sayısına getirin ve ekrandaki değerlere bakın 0 mı yoksa 1023mü eğer sıfırsa tebrikler doğru bağlamışsınız :) ama eğer 1023 değeri varsa potansiyometredeki +5v ve GND bacaklarını değiştirip bağlayın :) Evet potansiyometreyi doğru bağladığımızı farzederek şifre belirleme işlemine geçelim.

     Diyelimki biz bu uygulamada olduğu gibi 4219 şifresini girince kilidin açılmasını isticez, peki kart 4219 u girdiğimizi nasıl anlıcak demi? Aslında kart bizim 4219 girdiğimizi filan anlamıcak :) Olay şu, biz şimdi potansiyometreyi paneldeki 4 sayısının en uzak 2 noktasına çeviriyoruz farkındaysanız sayılar yuvarlar daireler içinde o dairelerin birinde 3e yakın olana diğerindeyse 5e yakın olan ucuna döndürüp, az önce potansiyometreyi doğrumu yoksa yanlışmı bağladığımızı anladığımız değerlerin çıkıtı ekrandaki değerlere bakıyoruz. ve 3e yakın olan yerdeki değeri biyere not alıyoruz sonrada 4e yakın olan değeri biyere not alıyoruz. Bu işlemi 4 sayı içinde uyguladıktan sonra asıl uygulamamızda kullanıcağımız kodlara geçebiliriz. Kodları önceki yazıdaki gibi yine aynen kopyala  yapıştır yaptm, siz bu yazılan kodları bilgisayarınızdaki Arduino yazılımına direkt kopyala yapıştır yaparsanız daha faydalı olur diye düşünüyorum çünkü program yazılan kodlara renk verdiği için bence daha anlaşılır oluyor. Arkadaşlar bu yazı gerçekten çok aceleye geldi, pek iyi olmadı gibi açıkçası benimde çok içime sindiği söylenemez mutlaka atladığım yerler ve bi ton yazım yanlışım vardır bu yüzden sizlerden özür diliyorum. Sizden ricam şu, lütfen takıldığınız biyer olursa hemen aşağıdaki yorum bölümünden, facebook tan mesaj atardak veya twitterdan sormanız. Twitter veya facebook üzerinden mesaj atarak sorularınızı sorarsanız açıkçası daha iyi olur çünkü buralarda gelen mesajlarda direk telefona bildirim geliyor, yorum yaparsanız yorumu görmem biraz geç olabilir. Herkese iyi günler, inşallah başka bir Arduino uygulamasında görüşmek dileğiyle :)


 void setup() {
  
  pinMode(1, OUTPUT);  // KİLİT AÇIK LED ((YEŞİL))
  pinMode(2, OUTPUT);  // KİLİT KAPALI LED ((KIRMIZI))
  pinMode(4, OUTPUT);  // MOTOR KAPA
  pinMode(5, OUTPUT);  // MOTOR AÇ
  pinMode(8, OUTPUT);  // HATALI ŞİFRE SİNYAL + LED
  pinMode(9, INPUT);   // ŞİFRE KABUL
  pinMode(11, INPUT);  // KİLİT KAPA
  
  Serial.begin(9600);
  
}

void loop() {
  
  
  if(digitalRead(9) == HIGH)      // Şifre kabul butonuna basınca girdiğimiz şifreyi kontrol etmesini sağlıyoruz.
  {
    if(200analogRead(A1) && 200analogRead(A2) && 10analogRead(A3) && 900analogRead(A4))  // Belirlediğimiz şifre, hani test bölümünde bazı değerler  not almıştık ya buraya o not aldığımız değerleri ekliyoruz.
    {
                                  // Bu bölümde motora ve LED'e vericeğimiz komutlar var, biraz fazla olmasının nedeni motorun kilitle tam uyumlu çalışamaması, motoru bir kaç kez aç kapa yaptırmak gerek.
    digitalWrite(5, HIGH);        // Motora kilidi açması için elektrik veriyoruz. 
    digitalWrite(1, HIGH);        // Kilidin açık olduğunu KİLİT AÇIK LED'ini yakıyoruz.
    digitalWrite(2, LOW);         // KİLİT KAPALI LED'i söndürüyoruz.
    delay(500);
    digitalWrite(5, LOW);         // 500ms motora kilidi kapaması için için verilen gücü kesiyoruz.
    delay(500);
    digitalWrite(5, HIGH);        // 500ms motora kilidi açması için güç veriyoruz.
    delay(500);
    digitalWrite(5, LOW);         // 500ms motora kilidi kapaması için için verilen gücü kesiyoruz.
    delay(500);
    digitalWrite(5, HIGH);        // 500ms motora kilidi açması için güç veriyoruz.
    delay(500);
    digitalWrite(5, LOW);         // 500ms motora kilidi kapaması için için verilen gücü kesiyoruz.
    }
  
    else                          // Bu kısmada eğer şifre yanlışsa sinyalin verilmesini istediğimizi söylüyoruz.
    {
    digitalWrite(8, HIGH);
    delay(250);
    digitalWrite(8, LOW);
    }
    
  }
  
  if(digitalRead(11) == HIGH)     // KİLİT KAPA düğmesine basılınca yapılması gerekenleri söylüyoruz, daha öncede dediğim gibi motor kilide tam oturmadığı için kodlar biraz fazla.
  {
  digitalWrite(4, HIGH);          // Motora kilidi kapaması için elektrik veriyoruz.
  digitalWrite(2, HIGH);          // Kilidin kapalı olduğunu bildiren KIRMIZI LED'e elektrik veriyoruz.
  digitalWrite(1, LOW);           // Kilidin açık olduğunu gösteren YEŞİL LED'deki gücü kesiyoruz.
  delay(50);
  digitalWrite(4, LOW);           // Motora verilen gücü 50ms kesiyoruz.
  delay(50); 
  digitalWrite(4, HIGH);          // Motora 50ms daha güç veriyoruz.
  delay(50);
  digitalWrite(4, LOW);           // Motora verilen gücü kesiyoruz.
  delay(2000);                    // Bu kısma beklememizin sebebi eğer sistemdeki butonda elimizi fazla tutarsak motora sürekli kapamak için komut verilmemesi.
  }
}


3 yorum: