Arduino ile Denemeler - 2 (Joystick ve LED ile Mini Proje)

 

Arduino ile Denemeler - 2 (Joystick ve LED ile Mini Proje)

Merhabalar arkadaşlar, bu yazımızda sizlerle Joystick ile bir deneme yapacağız. Bildiğiniz üzere bir önceki 'Arduino ile Denemeler' yazımızda sizlere LED'ler hakkında yapılabilecekleri göstermiştim. Şimdi oradan edindiğimiz bilgileri Joystick üzerinde deneyeceğiz. Bunun için ilk başta Joystick'ten verilerimizi alacağız ve çıktıyı ekrana yazdıracağız. Bundan sonra ise if-else döngüleri ile LED'lerde çıktılar oluşturacağız. Joystick'imizin döndüğü yöndeki lambalar yanacaktır ve diğerleri sönecektir. 

Bu sayede oyunlarda Joystick'lerin nasıl işe yaradığını görebileceğiz. Oyunlarda daha çok hassas olabilirler ama bizde sadece 4 yön bulunmaktadır. Bunlar ileri, geri, sağ ve soldur. Buralara yönlendirerek aslında sadece çıktı değerlerini değiştiriyoruz x ve y koordinatlarında ama biz bu değerleri kullanarak hangi yöne döndürüldüğünü tespit edebiliriz. Bu örnek proje sayesinde bunu görebileceğiz. Kaynak kod ve çıktı videosu'nu aşağıda görebilirsiniz.

Kaynak Kod

// Arduino pin numaraları
const int SW_pin = 2; // Switch çıktısına bağlı digital pin
const int X_pin = 0; // X çıktısına bağlı analog pin
const int Y_pin = 1; // Y çıktısına bağlı analog pin

//LEDLER için pin
int altPin = 3;
int ustPin = 4;
int sagPin = 5;
int solPin = 6;

void setup() {
//Joystick için
pinMode(SW_pin, INPUT);
digitalWrite(SW_pin, HIGH);
Serial.begin(115250);

//Ledler için
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
}

void loop() {
//Analog çıktıyı yazdırma kısmı
Serial.print("Switch: ");
Serial.print(digitalRead(SW_pin));
Serial.print("\n");
Serial.print("X-axis: ");
Serial.print(analogRead(X_pin));
Serial.print("\n");
Serial.print("Y-axis: ");
Serial.println(analogRead(Y_pin));
Serial.print("\n\n");

//LEDleri doğru düzende çalıştırmak için
//DUZ
if(analogRead(X_pin)>490 && analogRead(Y_pin)>490
        && analogRead(X_pin)<525 && analogRead(Y_pin)<525){
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
}
//ALT
else if(analogRead(X_pin)>1000 && analogRead(Y_pin)>490
            && analogRead(X_pin)<1100 && analogRead(Y_pin)<525){
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
}
//UST
else if(analogRead(X_pin)>-1 && analogRead(Y_pin)>490
            && analogRead(X_pin)<30 && analogRead(Y_pin)<525){
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
}
//SOL
else if(analogRead(X_pin)>490 && analogRead(Y_pin)>1000
            && analogRead(X_pin)<525 && analogRead(Y_pin)<1100){
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,HIGH);
}
//SAG
else if(analogRead(X_pin)>490 && analogRead(Y_pin)>-1
            && analogRead(X_pin)<525 && analogRead(Y_pin)<30){
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
}
else{
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
}
delay(490);
}

Çıktı Videosu






Yorumlar

Bu blogdaki popüler yayınlar

Python ile Turtle Kütüphanesiyle Çizim Denemesi 2

Girdimize en yakın palindrom değeri bulan program (Python3 ile)

Python ile Yazıyı Piramit Gibi Çizdirme