26 Ekim 2026 Pazartesi


Programlama Kodları

#include <Wire.h>

const int modul_adres = 0x68;
float GyroX, GyroY, GyroZ;
float AccX, AccY, AccZ;
float Temp;

void setup()
{
  Serial.begin(9600);
  Wire.begin(); //I2C seri iletişimini başlat

  //Modül resetleniyor
  Wire.beginTransmission(modul_adres);  //0x68 adresli modül ile iletişime geç
  Wire.write(0x6B); //0x6B adresli register'a git.
  Wire.write(0x00); //Register içeriğini sıfırla
  Wire.endTransmission();

  //Jiroskop ölçek ayarı yapılıyor
  Wire.beginTransmission(modul_adres); //0x68 slave adresli modül ile iletişime başla.
  Wire.write(0x1B);    //0x1B adresli register’a git.
  Wire.write(0x10);    //Register içeriğini 00010000 yap. Ölçek ayarı ±1000deg/s olsun.
  Wire.endTransmission();

  //İvmeölçer ölçek ayarı yapılıyor
  Wire.beginTransmission(modul_adres); //0x68 slave adresli modül ile iletişime başla.
  Wire.write(0x1C);    //0x1C adresli register’a git.
  Wire.write(0x10);    //Register içeriğini 00010000 yap. Ölçek ayarı ±8g olsun.
  Wire.endTransmission();

  //Dijital Alçak Geçiş Filtresinin (DLPF) Band Genişiliği belirleniyor
  Wire.beginTransmission(modul_adres); //0x68 slave adresli modül ile iletişime başla.
  Wire.write(0x1A);   //0x1A adresli register’a git.
  Wire.write(0x02);   //Register içeriğini 00000010 yap. İvmeölçer band genişliği 94 Hz ve jiroskop bant genişliği 98 Hz olsun.
  Wire.endTransmission();

  delay(20);
}

void loop()
{
  //Modülün 0x3B adresinden itibaren 0x48 e kadar sıralı olarak:  6 bayt ivmeölçer, 2 bayt sıcaklık, 6 bayt jiroskop ham değerleri vardır.
  Wire.beginTransmission(modul_adres); //0x68 slave adresli modül ile iletişime başla.
  Wire.write(0x3B); //0x3B adresli register’a git.
  Wire.endTransmission(false);  //Modül ile olan iletişimi durdurma, iletişime devam et ve Wire.write() ile 0x3B adresli register’a gidilmesini onayla.
  Wire.requestFrom(modul_adres, 14, true);  //0x68 slave adresli modülün 0x3B adresinden itibaren sıralı olarak 14 baytlık veri iste. (true)İstekten sonra veri yolunu serbest bırak.

  //İvmeölçer ham değerleri modülden okunuyor
  AccX = Wire.read() << 8 | Wire.read();  //1 bayt veri oku. 8 bit sola kaydır. Sonra 1 bayt veri daha oku. İlk okunan 1 bayt veri ile “veya” işlemine tabi tut ve sonucu AccX değişkenine ata.
  AccY = Wire.read() << 8 | Wire.read();  //1 bayt veri oku. 8 bit sola kaydır. Sonra 1 bayt veri daha oku. İlk okunan 1 bayt veri ile “veya” işlemine tabi tut ve sonucu AccY değişkenine ata.
  AccZ = Wire.read() << 8 | Wire.read();  //1 bayt veri oku. 8 bit sola kaydır. Sonra 1 bayt veri daha oku. İlk okunan 1 bayt veri ile “veya” işlemine tabi tut ve sonucu AccZ değişkenine ata.

  //Çipin ham sıcaklık değerleri modülden okunuyor
  Temp = Wire.read() << 8 | Wire.read();  //1 bayt veri oku. 8 bit sola kaydır. Sonra 1 bayt veri daha oku. İlk okunan 1 bayt veri ile “veya” işlemine tabi tut ve sonucu Temp değişkenine ata.

  //Jiroskop ham değerleri modülden okunuyor
  GyroX = Wire.read() << 8 | Wire.read(); //1 bayt veri oku. 8 bit sola kaydır. Sonra 1 bayt veri daha oku. İlk okunan 1 bayt veri ile “veya” işlemine tabi tut ve sonucu GyroX değişkenine ata.
  GyroY = Wire.read() << 8 | Wire.read(); //1 bayt veri oku. 8 bit sola kaydır. Sonra 1 bayt veri daha oku. İlk okunan 1 bayt veri ile “veya” işlemine tabi tut ve sonucu GyroY değişkenine ata.
  GyroZ = Wire.read() << 8 | Wire.read(); //1 bayt veri oku. 8 bit sola kaydır. Sonra 1 bayt veri daha oku. İlk okunan 1 bayt veri ile “veya” işlemine tabi tut ve sonucu GyroZ değişkenine ata

  //İvmeölçerden okunan ham değerler ekrana yazdırılıyor
  Serial.print("AccX = ");   Serial.print(AccX);  Serial.print(" | ");
  Serial.print("AccY = ");   Serial.print(AccY);  Serial.print(" | ");
  Serial.print("AccZ = ");   Serial.print(AccZ);  Serial.print(" ___ ");

  //Çipin ham sıcaklık değerleri ekrana yazdırılıyor
  Serial.print("Temp = ");   Serial.print(Temp);  Serial.print(" ___ ");

  //Jiroskoptan okunan ham değerler ekrana yazdırılıyor
  Serial.print("GyroX = ");   Serial.print(GyroX);  Serial.print(" | ");
  Serial.print("GyroY = ");   Serial.print(GyroY);  Serial.print(" | ");
  Serial.print("GyroZ = ");   Serial.println(GyroZ);  

  delay(100);
}



Devre Şeması




Seri Port Ekran Görüntüsü




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