#include // Подключаем библиотеку Wire.h #include // Подключаем библиотеку для управления серво Servo myservo; // Создаем 1 сервопривод Servo myservo1; // Создаем 2 сервопривод int val; //переменные значения для первого серво int prevVal; int val1; // и для второго int prevVal1; const int MPU_addr=0x68; // I2C адресс датчика MPU-6050 int16_t AcX,AcY; void setup(){ Wire.begin(); Wire.beginTransmission(MPU_addr); Wire.write(0x6B); // PWR_MGMT_1 регистр Wire.write(0); // объявляем 0 - датчик "просыпается" Wire.endTransmission(true); Serial.begin(9600); myservo.attach(9); myservo1.attach(10); } void loop(){ Wire.beginTransmission(MPU_addr); Wire.write(0x3B); // начинаем с регистра 0x3B (ACCEL_XOUT_H) Wire.endTransmission(false); Wire.requestFrom(MPU_addr,14,true); // опрашиваем 14 регистров AcX=Wire.read()<<8|Wire.read(); // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L) AcY=Wire.read()<<8|Wire.read(); // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L) val = map(AcY, -17000, 17000, 0, 180); // Переводим значения Оси Y в угол наклона серво 1 val1 = map(AcX, -17000, 17000, 0, 180); // Переводим значения Оси Х в угол наклона серво 2 if (val != prevVal) { myservo.write(val); prevVal = val; } if (val1 != prevVal1) { myservo1.write(val1); prevVal1 = val1; } delay(50); ждем 50 милисекунд }