#include<Wire.h>
#include <Servo.h>
/*22
I2C fonksiyonlarını kullanabilmek için
Wire.h kütüphanesini projemize ekledik
*/
const int MPU = 0x68;
//MPU-6050'nin I2C haberleşme adresi
int i;
int val;
// IMU'dan alınacak değerlerin kaydedileceği değişkenler
int16_t GyX, GyY, GyZ;
int16_t OncekiGyX, OncekiGyY, OncekiGyZ;
Servo myservo;
int buton = 8;
void setup() {
myservo.attach(3);
Wire.begin();
Wire.beginTransmission(MPU);
Wire.write(0x6B);
Wire.write(0); // MPU-6050 çalıştırıldı
Wire.endTransmission(true);
// I2C haberleşmesi başlatıldı ve MPU-6050'nin ilk ayarları yapıldı
Serial.begin(9600);
pinMode(buton , INPUT);
Serial.print("Başlamak için 1 saniye bekleyin");
delay(1000);
}
void loop() {
// IMU'dan değerler okundu
val = digitalRead(buton);
// Okunan değerler serial monitör'e yazdırılıyor
Serial.print(" | GyroX = "); Serial.print(GyX);
Serial.print(" | GyroY = "); Serial.print(GyY);
Serial.print(" | GyroZ = "); Serial.println(GyZ);
delay(200);
OncekiGyX = GyX ;
OncekiGyY = GyY;
OncekiGyZ = GyZ;
verileriOku();
if (abs(GyX - OncekiGyX) > 500 || abs(GyY - OncekiGyY) > 500 || abs(GyZ - OncekiGyZ) > 500) {
for (i = 0; i < 81; i++) {
myservo.write(i);
}
}
if (val == 1) {
delay(100);
myservo.write(10);
}
}
void verileriOku() {
Wire.beginTransmission(MPU);
// I2C haberleşmesi yapılacak kart seçildi
Wire.write(0x3B);
// 0x3B adresindeki register'a ulaşıldı
Wire.endTransmission(false);
Wire.requestFrom(MPU, 14, true);
// 14 BYTE'lık veri istendi
GyX = Wire.read() << 8 | Wire.read();
GyY = Wire.read() << 8 | Wire.read();
GyZ = Wire.read() << 8 | Wire.read();
}