MPU-6050 duda en el código de playgroud Arduino.cc

0

Estoy estudiando el MPU-6050 y vi este artículo. Me lo pregunto en dos líneas de código.

enlace

Esta línea, por lo que entiendo, el protector de pantalla lee el último valor de este registro y el código fuente está preguntando estos valores. Eso es correcto?

Wire.requestFrom(MPU,14,true);

Este código entendí que él lee los valores, pero ¿porque moviendo bits a la izquierda?

AcX=Wire.read()<<8|Wire.read();  // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)    
    
pregunta Tiedt Tech

1 respuesta

2

La línea

Wire.requestFrom(MPU,14,true);

inicia una transferencia de lectura usando I2C. La lectura consta de dos valores de 8 bits, que luego se unen en un solo valor de 16 bits:

AcX=Wire.read()<<8|Wire.read();  // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)    

Eso significa básicamente "Leer un byte, desplazarlo a la izquierda 8 bits, leer un segundo byte y O los dos valores juntos".

Entonces, si el primer byte es (en binario) 0b00100100 y el segundo es 0b10101010, el resultado sería 0b0010010010101010.

En el hexadecimal que tomaría 0x24, cambiándolo a la izquierda a 0x2400, y luego con 0xAA, formando 0x24AA.

En decimal, tomaría el número 36, desplazándolo a la izquierda 8 bits para que sea 9216, y luego a 170 para hacer 9386.

    
respondido por el Majenko

Lea otras preguntas en las etiquetas