Stap 5: Hoe om de gegevens te lezen blad en Code
Wij moeten vervolgens bekijken van het gegevensblad voor de gyro-sensor. Dit geeft ons informatie over hoe de sensor werken en registreert wat we nodig hebben om te lezen/schrijven. De sensor die maakt gebruik van de PmodGYRO is de L3G4200D en hier is het informatieblad voor het. Op bladzijde 10 is er informatie over de verschillende resoluties voor elk van de reeksen beschikbaar. Dit is belangrijk voor het omzetten van de ondertekende integer-waarde in een waarde die betekenis in graden per seconde.
Op pagina 22 wordt de slave-adres gegeven als 110100xb. Aangezien de SDO-pin wordt aangesloten op de voedingsspanning, is het adres 1101001b wat overeenkomt met 0x69 in hex of 105 in decimale notatie. Deze pagina ook gegevens die als u wilt lezen van meer dan één byte tegelijk, kunt u auto-increment de gegevens door het plaatsen van een 1 op de positie van MSb. Dit zal belangrijk zijn bij het lezen van de gegevens-registers (meer hierover later).
Op bladzijde 29, CTRL_REG1 0x20 is gedetailleerd. Hier kunnen we zien wat elk beetje middelen in dat register. Wij willen om het apparaat in de normale modus en de x-, y- en z-assen zodat we moeten schrijven van 00001111 om te registreren 0x20. 00001111 is 0xF in hex dus in labview we een I2C schrijven gebruiken om te registreren 0x20 en we 0xF (het volgende item in de array schrijven).
Op bladzijde 32, CTRL_REG4 0x23 is gedetailleerd. We zien dat dit is waar we de detectie van de volledige schaal kunt instellen. Voor 250 dps, we moeten 00000000 (0x0), voor 500 moeten we 00010000 (0x10), voor 2000 dps kunnen we 00100000 of 00110000 (ik gebruikte 0x30). Een zaak structuur wordt gebruikt om te schrijven van de juiste hexadecimale waarde tot dit register afhankelijk van welk bereik is geselecteerd.
Er zijn andere instellingen die je knoeien kunt met, als u geïnteresseerd in de registers van de controle bent.
Nu moeten we om erachter te komen waar de gegevens worden opgeslagen en hoe deze is opgeslagen. Op pagina 35 we zien kunnen dat de waarden zijn opgeslagen, Registreer 0x28 om te 0x2D (6 bytes aan gegevens, 2 voor elk zwaartepunt) registreren in 2's vullen formulier. We moeten om te lezen dit, wijs het eerste register 0x28 met een 1 op de MSb plaats zodat de gegevens kunnen allemaal worden gelezen in een keer (auto-increment). 0x28 met een 1 op de MSb plaats is 0xA8. Gebruik I2C schrijven om te schrijven dit register en vervolgens gebruiken I2C lezen te lezen 6 bytes aan gegevens en sla dit in een matrix.
Vervolgens worden de bytes verwerkt het geven van de waarden die we willen. Index array gebruiken om te lezen van de afzonderlijke posten en splice de x, y, z-as gegevens samen. Vermenigvuldig al deze ondertekende 16-bits waarden met de resolutie zodra ze worden omgezet in een 2 de aanvulling waarde, want dat is hoe de data sheet zei dat dit zal worden gemeld van de sensor.
Nu doen een I2C sluit en het harde deel is gedaan!