Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2017-07-14 17:13:20 Raspberry pi 3 et altimu 10 v5

imdidi
membre
Date d'inscription: 2012-10-05
Messages: 242

Raspberry pi 3 et altimu 10 v5



Bonjour a tous
Après avoir galéré pendant 2 jours à avoir les bonnes valeurs venant d'un sensor imu altimu 10 V5 (accéléromètre, gyroscope, magnétomètre et baromètre) je vous transmet le code pour le faire fonctionner sans les librairies du sensor sur raspi avec processing.

la ou javais le bug c'était que je combinais les valeur de (x low et x high) comme écrit dans la librairie pour arduino
mais j'ai résolu mon problème en utilisant seulement les valeur de (x high)

fait un "sudo i2cdetect -y 1" dans la console du raspi pour trouver l’adressage du i2c
vous devez avoir la librairie "hardware io" d'installer et le sensor brancher pour utiliser ce code

broche raspi
sensor -> raspi
pin VIN    pin 1 3.3v
pin SDA   pin 3 SDA
pin SCL   pin 5 SCL
pin GND   pin 6,9,14,20,25,30,34,39 GND à votre choix

//*********************************************************
import processing.io.*;
I2C i2c;

PVector acc, gyro;

int addressAcc = 0x6b; //Adresse de l’accéléromètre et du gyro
int addressMag = 0x1e; //Adresse du Magnétomètre
int addressBar = 0x5d;  //Adresse du Baromètre
int pitchDeg, rollDeg;
float pitchRaw, rollRaw;

void setup() {
size(400,400);
gpioSetup();
acc = new PVector(0,0,0);
gyro= new PVector(0,0,0);
}

void draw() {
accRead();
gyroRead();
}

void gpioSetup() {
  i2cWriteReg(addressAcc, 0x10, 0x80);  //config acc
  i2cWriteReg(addressAcc, 0x11, 0x80);  //config gyro
  i2cWriteReg(addressAcc, 0x12, 0x04);  //config acc/gyro
}

void i2cWriteReg(int address, int reg, int value) {
   i2c.beginTransmission(address);
   i2c.write(reg);
   i2c.write(value);
   i2c.endTransmission();
}

void accRead() {
   i2c.beginTransmission(addressAcc);  //commence la transmission sur le port i2c pour l'accéléromètre
   i2c.write(0x28);                            //on demande linfo registre a partir du registre 0x28
   byte[] accRaw = i2c.read(6);          //on lit 6 registre après le 0x28 et on le store dans un tableau "accRaw"
 
   byte xla = accRaw[0];     //valeur de X Low
   byte xha = accRaw[1];    //valeur de X High
   byte yla = accRaw[2];    //valeur de y Low
   byte yha = accRaw[3];   //valeur de y High
   byte zla = accRaw[4];    //valeur de z Low
   byte zha = accRaw[5];   //valeur de z High

   acc.x = xha;
   acc.y = yha;
   acc.z = zha;
   
   pitchRaw = atan2(acc.x, acc.z);   //besoin de cette valeur pour le magnétomètre
   rollRaw = atan2(acc.y, acc.z);      //besoin de cette valeur pour le magnétomètre

   pitchDeg = int(degrees(atan2(acc.x, acc.z)));   //donne l’angle en degré du sensor
   rollDeg = int(degrees(atan2(acc.y, acc.z)));      //donne l’angle en degré du sensor
   
   print("pitch Deg ");
   println(pitchDeg);
   print("roll Deg ");
   println(rollDeg);
}

void gyroRead() {
   i2c.beginTransmission(addressAcc);  //commence la transmission sur le port i2c pour le gyro
   i2c.write(0x22);                            //on demande linfo registre a partir du registre 0x22
   byte[] gyroRaw = i2c.read(6);         //on lit 6 registre après le 0x22 et on le store dans un tableau "gyroRaw"
 
   byte xlg = gyroRaw[0];     //valeur de X Low
   byte xhg = gyroRaw[1];    //valeur de X High
   byte ylg = gyroRaw[2];    //valeur de y Low
   byte yhg = gyroRaw[3];   //valeur de y High
   byte zlg = gyroRaw[4];    //valeur de z Low
   byte zhg = gyroRaw[5];   //valeur de z High

   gyro.x = xhg;
   gyro.y = yhg;
   gyro.z = zhg;
   
   print("gyro x ");
   println(gyro.x);
   print("gyro y ");
   println(gyro.y);
   print("gyro z ");
   println(gyro.z);
}
//*************************************************************

voila le code pour l’accéléromètre et le gyromètre je mettrais a jour ce post pour inclure le magnétomètre et le baromètre

en espérant en aider quelque un
Danny

Dernière modification par imdidi (2017-07-14 17:14:13)

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024