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ü.