Получить данные от одного ИДУ и Arduino одновременно используя связь I2c

Я хочу получить данные от другого Arduino и IMU используя связь I2c и написал код приведенный ниже но он не работает для меня ,

#include<Wire.h>
// Определить ведомый адрес I2C
#define SLAVE_ADDR 9

// Переменная для полученных данных
int x;

const int MPU=0x68; 
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;

void setup(){
  Wire.begin();
  Wire.beginTransmission(MPU);
  Wire.write(0x6B); 
  Wire.write(0);    
  Wire.endTransmission(true);
  Serial.begin(115200);

}



void loop(){


  Wire.beginTransmission(MPU); //Отправить запрос на начало связи с устройством по указанному адресу
  Wire.write(0); //Посылает бит, запрашивающий регистр 0, регистр данных датчика TC74

  Wire.endTransmission(); //это завершает передачу данных с arduino на датчик температуры

//это теперь считывает температуру с датчика TC74
  Wire.requestFrom(MPU, 12);//запрашивает 1 байт с указанного адреса

while(Wire.available() == 0);
  AcX=Wire.read()<<8|Wire.read();    
  AcY=Wire.read()<<8|Wire.read();  
  AcZ=Wire.read()<<8|Wire.read();  
  GyX=Wire.read()<<8|Wire.read();  
  GyY=Wire.read()<<8|Wire.read();  
  GyZ=Wire.read()<<8|Wire.read(); 
  
  Serial.print("Accelerometer: ");
  Serial.print("X = "); Serial.print(AcX);
  Serial.print(" | Y = "); Serial.print(AcY);
  Serial.print(" | Z = "); Serial.println(AcZ); 
  
  Serial.print("Gyroscope: ");
  Serial.print("X = "); Serial.print(GyX);
  Serial.print(" | Y = "); Serial.print(GyY);
  Serial.print(" | Z = "); Serial.println(GyZ);
  Serial.println(" ");

/*Wire.begin(SLAVE_ADDR); //Отправить запрос на начало связи с устройством по указанному адресу
x= Wire.read();
Wire.end();
Serial.print("  angle  = "); Serial.println(x);*/
 delay(333);

  
}

нужны некоторые предложения, чтобы решить эту проблему . код arduino, который отправляет данные, выглядит следующим образом

/*     Arduino Rotary Encoder Tutorial
 *      
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 *  
 */
 
   // Включить библиотеку проводов Arduino для I2C
  #include <Wire.h>
  
  // Определить ведомый адрес I2C
  #define SLAVE_ADDR 9
 
 #define outputA 2
 #define outputB 3

 int counter = 0; 
 int aState;
 int aLastState;  
 int precounter;

 void setup() { 
   pinMode (outputA,INPUT);
   pinMode (outputB,INPUT);
   
   Wire.begin();
   Serial.begin (115200);
   // Reads the initial state of the outputA
   aLastState = digitalRead(outputA);   
 } 

 void loop() { 
   aState = digitalRead(outputA); // Считывает "текущее" состояние outputA
   // Если предыдущее и текущее состояние outputA отличаются, это означает, что произошел импульс
   if (aState != aLastState){     
     // Если состояние outputB отличается от состояния outputA, это означает, что кодер вращается по часовой стрелке
     if (digitalRead(outputB) != aState) 
     { 
       counter ++;
     } 
     else 
     {
       counter --;
     }

   }
   if(counter < 0)
   {
    counter=0;
   }


     Serial.print("Position: ");
     Serial.println(counter);
     aLastState = aState; // Обновляет предыдущее состояние outputA с текущим состоянием
    
    
    Wire.beginTransmission(SLAVE_ADDR);
    Wire.write(counter);
    Wire.endTransmission();
 }

, 👍0

Обсуждение

Пожалуйста, будьте более конкретны. "Это не работает" - очень неопределенная ошибка., @PMF