Go Down

Topic: L3G4200D gyroscope (Read 990 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy