Arkadaşlar merhaba, bir haftasonu projesi niteliğinde yazı yazmaya karar verdim. Bu proje ile etrafınızdaki tüm iletken nesneleri kullanarak bilgisayarınızı kontrol edebileceksiniz. Bir nevi gerçek bir bateri çalar gibi etrafınızdaki metal eşyalara vurarak bilgisayardan bateri çalacaksınız.

Projemizde kullanılacak malzemeler.

Projemizde Arduino UNO yerine Leonardo veya Micro kullanmamızın nedeni bilgisayarın klavyesini kullanacağımız içindir. Nedenin detaylarını şu yazımda daha uzun belirtmiştim.

LDR kullanmamızın sebebi ise karanlıkta 20Mohm gibi değerlere ulaşması. Kullanacağınız LDR’nin üstünü bir bant ile kapatarak 20Mohm değerinde kalmasını sağlayabilirsiniz.

Projemizin devresine aşağıdaki gibidir:

makey_devresi

Bu devrenin mantığından bahsetmek gerekirse aslında vücudumuz bir buton şeklinde davranıyor gibi düşünebiliriz. Bir elimiz sürekli olarak toprağa yani GND’ye bağlı olan kabloya dokunuyor diğer elimiz ile iletken nesnelere dokunuyoruz ve toprak ile iletken nesne arasındaki iletimi vücudumuz ile sağlıyoruz. Nesneye dokunduğumuz kısımdan da bir analog ölçüm yapıp bu ölçüm belirli bir seviyenin altında ise Arduino’muzu kullanarak klavyede belirli harflere basıyoruz. Bu harfler de daha önce buradaki sitede belirlenen harfler oluyor ve böylece baterimizi çalmış oluyoruz. 20M ohm gibi büyük bir direnç kullanmamızın nedeni herhangi bir yeri tutmuyorken oluşabilecek paraziti en aza indirmek.

Ben resimde bir davul kullandım fakat siz istediğiniz bir metale kablonuzu bağlayabilirsiniz. Birde ben temsili olsun diye sadece bir tane bağlı analog pin gösterdim fakat siz Arduino’nuzun yettiği kadar analog pin kullanabilirsiniz.

NOT: Devrede iletimin olup analog okumanın düzgün yapılabilmesi için bir elinizin sürekli olarak toprağa dokunması gerekmektedir. 

Arduino kodu ise şu şekilde;

void setup() {
 //klavyeyi kullanmak için bu fonksiyonu kullanıyoruz
  Keyboard.begin();
  //2. pine pull-up bağlanıyor. arduinonun icinde olan dışarıdan baglanmiyor
  pinMode(13,OUTPUT);
  delay(15000); //klavyede sürekli tuşların basması gibi olağandışı durumlar için bu 15 saniyede içerisine yeni kod atılarak sorun çözülebilir.
}

void loop() {
//İletkenlerin bağlı olduğu analog pinler ve hangi tuşa basacakları
  int E = analogRead(A0);
  int R = analogRead(A1);
  int D = analogRead(A2);
  int F = analogRead(A3);
  int Y = analogRead(A4);
  int H = analogRead(A5);
///////////////////////////////////////
// E tuşunu basacak olan analog pine bağlı iletkene dokunulduğunda analog okuma yapan ve klavyeden E ye basılmasını blok  
if(E < 700){                // analog0 pinine bağlı iletkene dokunulduysa
while(E < 700){             //dokunulduğu sürece
  digitalWrite(13,HIGH);    //
  Keyboard.press('e');      //E tuşuna bas
  if(E > 700); break;      // tuşa basılmayı bırakıldığında döngüden çık
}
}
else{
  digitalWrite(13,LOW);    
}
 ///////////////////
 
 if(R < 700){
while(R < 700){
  digitalWrite(13,HIGH);
  Keyboard.press('r');
    if(R > 700); break;

}
}
else{
  digitalWrite(13,LOW);
}
/////////////////////

 if(D < 700){
while(D < 700){
  digitalWrite(13,HIGH);
  Keyboard.press('d');
    if(D > 700); break;

}
}
else{
  digitalWrite(13,LOW);
}

/////////////////////

 if(F < 700){
while(F < 700){
  digitalWrite(13,HIGH);
  Keyboard.press('f');
    if(F > 700); break;

}
}
else{
  digitalWrite(13,LOW);
}

/////////////////////

 if(Y < 700){
while(Y < 700){
  digitalWrite(13,HIGH);
  Keyboard.press('y');
    if(Y > 700); break;

}
}
else{
  digitalWrite(13,LOW);
}

/////////////////////

 if(H < 700){
while(H < 700){
  digitalWrite(13,HIGH);
  Keyboard.press('h');
    if(H > 700); break;

}
}
else{
  digitalWrite(13,LOW);
}


  Keyboard.releaseAll();  // her döngü sonunda basılı olan tuşlara basılmayı bırak. Bunun nedeni tuşara bir kere basıldığında basılı kalması. 
  ////////////////// 
  delay(50);
}

Bu kodu Arduino’muza yükledikten sonra aşağıdaki videodaki gibi bir elektronik bateriniz olacaktır. İyi eğlenceler, iyi çalışmalar 🙂 

 

7 Yorumlar

    • Malesef hayır. Bu proje için Arduino Leonardo’nun USB host özelliğine ihtiyaç duyuyoruz. Bu özellik Uno’da mevcut değil.

  1. Merhaba, arduino ile çalışmaya yeni başladım, 6. sınıf öğrencisiyim. Sitenizde verilen kodları kopyala yapıştır yaptım. Leonardoya yükledim, ancak sonuç alamadım, bir yerde hata yapıyorum sanırım. digitalWrite(13,LOW) komutu kullanmışsınız şemada bağlantı gösterilmemiş. bu konuda daha detaylı bilgi verebilirseniz çok sevinirim. İyi çalışmalar

  2. önceilkle iyi akşamlar. güzel anlatımınız için teşekkür ederim. herşey iyi hoş fakat bu jumper kablolarla bi alete takmışsınız breadboardın üstünde onun adını sorabilirmiyim?. iyi akşamlar..

  3. Arduino:1.8.5 (Windows 7), Kart:”Arduino Leonardo”

    C:\Users\yalcin\Documents\Arduino\sketch_apr28a\sketch_apr28a.ino: In function ‘void setup()’:

    sketch_apr28a:3: error: ‘Klavye’ bulunamadı. Taslağınızda ‘#include ‘ satırı yer alıyor mu?
    Keyboard.begin();

    ^

    C:\Users\yalcin\Documents\Arduino\sketch_apr28a\sketch_apr28a.ino: In function ‘void loop()’:

    sketch_apr28a:22: error: ‘Klavye’ bulunamadı. Taslağınızda ‘#include ‘ satırı yer alıyor mu?
    Keyboard.press(‘e’); //E tuÅŸuna bas

    ^

    sketch_apr28a:34: error: ‘Klavye’ bulunamadı. Taslağınızda ‘#include ‘ satırı yer alıyor mu?
    Keyboard.press(‘r’);

    ^

    sketch_apr28a:47: error: ‘Klavye’ bulunamadı. Taslağınızda ‘#include ‘ satırı yer alıyor mu?
    Keyboard.press(‘d’);

    ^

    sketch_apr28a:61: error: ‘Klavye’ bulunamadı. Taslağınızda ‘#include ‘ satırı yer alıyor mu?
    Keyboard.press(‘f’);

    ^

    sketch_apr28a:75: error: ‘Klavye’ bulunamadı. Taslağınızda ‘#include ‘ satırı yer alıyor mu?
    Keyboard.press(‘y’);

    ^

    sketch_apr28a:89: error: ‘Klavye’ bulunamadı. Taslağınızda ‘#include ‘ satırı yer alıyor mu?
    Keyboard.press(‘h’);

    ^

    sketch_apr28a:99: error: ‘Klavye’ bulunamadı. Taslağınızda ‘#include ‘ satırı yer alıyor mu?
    Keyboard.releaseAll(); // her döngü sonunda basılı olan tuşlara basılmayı bırak. Bunun nedeni tuşara bir kere basıldığında basılı kalması.

    ^

    exit status 1
    ‘Klavye’ bulunamadı. Taslağınızda ‘#include ‘ satırı yer alıyor mu?

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.
    ŞEKLİNDE HATA VERİYOR YARDIMCI OLABİLİR MİSİNİZ?

CEVAP VER

Please enter your comment!
Please enter your name here