23 Ekim 2026 Cuma


Programlama Kodları

//AÇIKLAMA
//Bu uygulamada ivmeölçer sensörünün yatay eksenle yaptığı açı değerlerini 
//hesapladık. Sensör, Y ekseninde sabit tutulurken, X ve Z eksenleri 
//değerlerinden açıları hesapladık.

const int x_ekseni = A0;
const int y_ekseni = A1;
const int z_ekseni = A2;
int x_deger, z_deger;
int aci;
void setup()
{
  analogReference(EXTERNAL);
  Serial.begin(9600);
}

void loop()
{
  z_deger = analogRead(z_ekseni);
  x_deger = analogRead(x_ekseni);

  if (508 < x_deger && x_deger < 512)
  {
    if (612 < z_deger && z_deger < 616)
    {
      Serial.print("x = ");  Serial.print(x_deger);
      Serial.print(" ");
      Serial.print("z = ");  Serial.print(z_deger);
      Serial.print(" ");
      Serial.println("Sol Yatay Eksen Açı = 0");
    }
  }


  if (511 < x_deger && x_deger < 619)
  {
    if (515 < z_deger && z_deger < 613)
    {
      Serial.print("x = ");  Serial.print(x_deger);
      Serial.print(" ");
      Serial.print("z = ");  Serial.print(z_deger);
      Serial.print(" ");
      aci = map(x_deger, 511, 619, 0, 90);
      Serial.print("Sol Yatay Eksen Açı = ");
      Serial.println(aci);
    }
  }


  if (618 < x_deger && x_deger < 622)
  {
    if (512 < z_deger && z_deger < 516)
    {
      Serial.print("x = ");  Serial.print(x_deger);
      Serial.print(" ");
      Serial.print("z = ");  Serial.print(z_deger);
      Serial.print(" ");
      Serial.println("Açı = 90");
    }
  }


  if (518 < x_deger && x_deger < 619)
  {
    if (406 < z_deger && z_deger < 513)
    {
      Serial.print("x = ");  Serial.print(x_deger);
      Serial.print(" ");
      Serial.print("z = ");  Serial.print(z_deger);
      Serial.print(" ");
      aci = map(x_deger, 518, 619, 0, 90);
      Serial.print("Sağ Yatay Eksen Açı = ");
      Serial.println(aci);
    }
  }


  if (515 < x_deger && x_deger < 519)
  {
    if (403 < z_deger && z_deger < 407)
    {
      Serial.print("x = ");  Serial.print(x_deger);
      Serial.print(" ");
      Serial.print("z = ");  Serial.print(z_deger);
      Serial.print(" ");
      Serial.println("Sağ Yatay Eksen Açı = 0");
    }
  }
  delay(50);
}



Uygulama Açıklaması

Bu uygulamada ivmeölçer sensörünün yatay eksenle yaptığı açı değerlerini basit olarak hesapladık. Sensör, Y ekseninde sabit tutulurken, X ve Z eksenleri değerlerinden açıları hesapladık.



Bunun için öncelikle ivmeölçerin X ve Z eksenlerinin, aşağıdaki durumlarında verdiği analog değerleri tespit ettik.




Ardından program kodlarını yazmak için X ve Z eksenlerinin hangi değerlerde kaç derece açı oluşturacağını hesapladık. Açı hesabında X ekseninin verdiği değerleri kullandık.


Bu durumda X=510 ve Z=614 değerini vermişti. O zaman: 508 < X < 512 ve 612 < Z <616 olarak alırsak; 

Sol Yatay Eksen İle Olan Açı:  Açı = 0⁰





Bu aralıkta X değeri 510 ile 620 arasında, Z değeri de 514 ile 614 arasındadır. X’in ya da Z’nin diğer eksendeki değerleriyle çakışma ihtimali olabilir düşüncesiyle 1’er değer eksik-fazla aldık. O zaman 511 < X < 619 ve 515 < Z < 613 olarak alırsak;

Sol Yatay Eksen İle Olan Açı: Açı=map(X,511,619,0,90)





Bu durumda X=620 ve Z=514 değerini vermişti. O zaman: 618 < X < 622 ve 512 < Z <516 olarak alırsak;

Sol Yatay Eksen İle Olan Açı: Açı = 0⁰






Bu aralıkta X değeri 517 ile 620 arasında, Z değeri de 405 ile 514 arasındadır. X’in ya da Z’nin diğer eksendeki değerleriyle çakışma ihtimali olabilir düşüncesiyle 1’er değer eksik-fazla aldık. O zaman 518 < X < 619 ve 406 < Z < 513 olarak alırsak;

Sol Yatay Eksen İle Olan Açı: Açı=map(X,518,619,0,90)






Bu durumda X=517 ve Z=405 değerini vermişti. O zaman: 515 < X < 519 ve 403 < Z <407 olarak alırsak;

Sol Yatay Eksen İle Olan Açı: Açı = 0⁰





NOT: X ve Z bazı noktalarda linner artıp azalmadığı için bu noktalardan daha yavaş veri aldığı görüldü. 



0 comments:

Yorum Gönder

Arduino Eğitimi Konu - 7

Toplam Sayfa Görüntüleme Sayısı

Sensörler ve Aygıtların Arduino İle Kullanımı

Popular Posts

Yararlanılan Kaynaklar

İletişim

gokdag17@gmail.com

Blog Archive