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 🙂 

 

CEVAP VER