Go Down

Topic: L3G4200D gyroscope (Read 925 times) previous topic - next topic

asmehta

Jan 18, 2013, 09:29 pm Last Edit: Jan 18, 2013, 09:31 pm by asmehta Reason: 1
Hi guys,

I am trying to hook up a L3G4200D gyroscope with an Arduino UNO system. I found some code online that is specific for this gyroscope but am having some difficulties. I can't seem to get an output other than "000". I think there is a problem with the I2C communication between the the gyro and Arduino but I am not sure. Does anyone know what might be the problem with our code or something we could try to fix our problem.


The code we are using is below:
Code: [Select]

#define GYROSCOPE 0x69
#include <L3G.h>
#include <Wire.h>

L3G gyro;
int x, y, z;
int L3G4200D_Address = 107;
byte buff[6];

void setup() {
 
   Serial.begin(9600);
   Wire.begin();
 
if (!gyro.init(L3G4200D_DEVICE, L3G_SA0_LOW))
 {
   Serial.println("Failed to autodetect gyro type!");
   while (1);
 }

 gyro.enableDefault();
}

void loop() {
   // Delay the flow
   delay(500);
   Wire.beginTransmission(107);
   Wire.print(0x1D);
   Wire.endTransmission();
   
   Wire.requestFrom(107,6);
   int i = 0;
   while(Wire.available()) {
      buff[i] = Wire.read();
      i++;
   }
   
   // Convert to ints
   x = (((int)buff[1]) << 8) | buff[0];  
   y = (((int)buff[3]) << 8) | buff[2];
   z = (((int)buff[5]) << 8) | buff[4];
   
   Serial.print(x);
   Serial.print(" ");
   Serial.print(y);
   Serial.print(" ");
   Serial.print(z);
   Serial.print("\n");
}


Thx!

michinyon

There are several example programs for accessing this device.
Just be aware that some of them don't actually work. 
I suggest you download several of them and compare them carefully
with your code.   
I find the whole scheme of when to use beginTransmission() and
endTransmission(),  and when not to use them,   to be highly
counter-intuitive  and needs a bit of tinkering to get it to work.

Krodal

#2
Jan 20, 2013, 10:14 am Last Edit: Jan 20, 2013, 10:18 am by Krodal Reason: 1
Are you communicating with the sensor at all ?
First things first, use the i2c_scanner : http://playground.arduino.cc/Main/I2cScanner

At the sparkfun page https://www.sparkfun.com/products/10612
is a link to a bildr tutorial.
You could try that, but I think the code is wrong.
There is a small error in that code, since it waits for Wire.available() and that is not how it should be used.

Go Up