Youtube videosundaki deprem sensörü sorunlu çalışıyor

merhabalar elimde şu anda esp8266 var scl d1 sda d2 olarak verilmiş bağlantılarımı bu şekilde düzgün olarak yaptım sonrasında led ve buzzer pinoutlarını değiştirdim elimdeki karta uyumlu olsun diye yeterli pin olmadığını gördüm aşşağıdaki kodda görebilirsiniz fakat şöyle bir sorunun var proje çalışırken 10 sn aralıklarla buzzer led ve kart üzerindeki led bi anlığına çalışıyor bip sesi yani bu bu şekilde devam ediyor ne bir şekilde titreşim üzerine hareket etmiyor .

#include <Arduino.h>
#include <TinyMPU6050.h>

float pos_offset = 10;
float neg_offset = -10;
long angle_x, angle_y, angle_z, offset_x, offset_y, offset_z;
MPU6050 mpu (Wire);


void setup() {

  // Initialization
  mpu.Initialize();

  // Calibration
  Serial.begin(9600);
  Serial.println("=====================================");
  Serial.println("Starting calibration...");
  Serial.println("Calibration complete!");
  Serial.println("Offsets:");
  Serial.print("AccX Offset = ");
  Serial.println(mpu.GetAccXOffset());
  Serial.print("AccY Offset = ");
  Serial.println(mpu.GetAccYOffset());
  Serial.print("AccZ Offset = ");
  Serial.println(mpu.GetAccZOffset());
  Serial.print("GyroX Offset = ");
  Serial.println(mpu.GetGyroXOffset());
  Serial.print("GyroY Offset = ");
  Serial.println(mpu.GetGyroYOffset());
  Serial.print("GyroZ Offset = ");
  Serial.println(mpu.GetGyroZOffset());
  pinMode(7,OUTPUT);
  pinMode(8, OUTPUT);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);

  delay(1000);
  for(int i=0; i<200;i++){
   mpu.Execute();
  offset_x = mpu.GetAngX();
  offset_y = mpu.GetAngY();
  offset_z = mpu.GetAngZ();
  }
  Serial.print("offset_x = ");
  Serial.print(offset_x);
  Serial.print("  /  offsetY = ");
  Serial.print(offset_y);
  Serial.print("  /  offsetZ = ");
  Serial.println(offset_z);
  
}

void loop() {

 for(int i=0; i<5;i++){
  mpu.Execute();
  angle_x = mpu.GetAngX();
  angle_y = mpu.GetAngY();
  angle_z = mpu.GetAngZ();
 }

  Serial.print("AngX = ");
  Serial.print(angle_x - offset_x);
  Serial.print("  /  AngY = ");
  Serial.print(angle_y - offset_y);
  Serial.print("  /  AngZ = ");
  Serial.println(angle_z - offset_z);
  

 if ( pos_offset < angle_x - offset_x || neg_offset > angle_x - offset_x || pos_offset < angle_y - offset_y || neg_offset > angle_y - offset_y || pos_offset < angle_z - offset_z || neg_offset > angle_z - offset_z){

  for(int i=0; i<50; i++){
  digitalWrite(7,HIGH);
  digitalWrite(8,LOW);
  delay(50);
  digitalWrite(7,LOW);
  digitalWrite(8,LOW);
  delay(50);
  }   
  delay(5000);  
  mpu.Execute();
  offset_x = mpu.GetAngX();
  offset_y = mpu.GetAngY();
  offset_z = mpu.GetAngZ();

 }  
}

image
çıktı iste sallamama rağmen hep bu şekilde ,yardımcı olursanız sevinirim.

Ben ESP32S için kodu aşağıdaki gibi düzenledim. Comment’li alanlar orjinal kodda olanlar.
Yüklü olan TinyMPU6050 versiyonu 0.4.3 Sorunsuz çalışıyor bende.


#include <Arduino.h>
#include <TinyMPU6050.h>

float pos_offset = 10;
float neg_offset = -10;
long angle_x, angle_y, angle_z, offset_x, offset_y, offset_z;
MPU6050 mpu (Wire);
const byte led_gpio = 32;
const byte buzzer_gpio = 33;

void setup() {

  // Initialization
  mpu.Initialize();

  // Calibration
  Serial.begin(9600);
  Serial.println("=====================================");
  Serial.println("Starting calibration...");
  Serial.println("Calibration complete!");
  Serial.println("Offsets:");
  Serial.print("AccX Offset = ");
  Serial.println(mpu.GetAccXOffset());
  Serial.print("AccY Offset = ");
  Serial.println(mpu.GetAccYOffset());
  Serial.print("AccZ Offset = ");
  Serial.println(mpu.GetAccZOffset());
  Serial.print("GyroX Offset = ");
  Serial.println(mpu.GetGyroXOffset());
  Serial.print("GyroY Offset = ");
  Serial.println(mpu.GetGyroYOffset());
  Serial.print("GyroZ Offset = ");
  Serial.println(mpu.GetGyroZOffset());
  //pinMode(26,OUTPUT);
  //pinMode(25, OUTPUT);
  pinMode(led_gpio, OUTPUT);
  pinMode(buzzer_gpio, OUTPUT);
  //digitalWrite(26, LOW);
  //digitalWrite(25, LOW);
  digitalWrite(led_gpio, LOW);
  digitalWrite(buzzer_gpio, LOW);

  delay(2000);
  for(int i=0; i<200;i++){
   mpu.Execute();
  offset_x = mpu.GetAngX();
  offset_y = mpu.GetAngY();
  offset_z = mpu.GetAngZ();
  }
  Serial.print("offset_x = ");
  Serial.print(offset_x);
  Serial.print("  /  offsetY = ");
  Serial.print(offset_y);
  Serial.print("  /  offsetZ = ");
  Serial.println(offset_z);
  
}

void loop() {

 for(int i=0; i<5;i++){
  mpu.Execute();
  angle_x = mpu.GetAngX();
  angle_y = mpu.GetAngY();
  angle_z = mpu.GetAngZ();
 }

  Serial.print("AngX = ");
  Serial.print(angle_x - offset_x);
  Serial.print("  /  AngY = ");
  Serial.print(angle_y - offset_y);
  Serial.print("  /  AngZ = ");
  Serial.println(angle_z - offset_z);
  

 if ( pos_offset < angle_x - offset_x || neg_offset > angle_x - offset_x || pos_offset < angle_y - offset_y || neg_offset > angle_y - offset_y || pos_offset < angle_z - offset_z || neg_offset > angle_z - offset_z){

  for(int i=0; i<50; i++){
  //digitalWrite(26,HIGH);
  //digitalWrite(25,LOW);
  digitalWrite(led_gpio, HIGH);
  digitalWrite(buzzer_gpio, HIGH);
  delay(50);
  //digitalWrite(26,LOW);
  //digitalWrite(25,LOW);
  digitalWrite(led_gpio, LOW);
  digitalWrite(buzzer_gpio, LOW);
  delay(50);
  }   
  delay(5000);  
  mpu.Execute();
  offset_x = mpu.GetAngX();
  offset_y = mpu.GetAngY();
  offset_z = mpu.GetAngZ();

 }  
}