Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fixes #4 by parameterising interrupt and reset pins #5

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,9 @@ determine offsets. Follow the instructions below to calibrate your sensor.

- Magnetometer: Move the magnetometer in a large 8 like pattern a few times
gently.

Setting up pins
-----------

See the declaration for initSensor in NineAxesMotion.h
Ensure you have correctly configured the Interrupt and Reset pins. Modern boards default to Interrupt Pin = 2 and Reset Pin = 7, although your board may be jumpered differently. The most probable alternative pins are Interrupt Pin = 4 and Reset Pin = 3. Consult your shield and observe how these tracks are jumpered on your particular setup.
2 changes: 1 addition & 1 deletion library.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name=9 Axes Motion
version=1.1.0
version=1.2.0
author=Bosch Sensortec GmbH
maintainer=Arduino <[email protected]>
sentence=Arduino 9 Axes Motion Shield Library
Expand Down
10 changes: 8 additions & 2 deletions src/NineAxesMotion.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,17 @@ NineAxesMotion::NineAxesMotion()

/*******************************************************************************************
*Description: Function with the bare minimum initialization
*Input Parameters: None
*Input Parameters:
unsigned int address: I2C address of the BNO055. Default 0x28
int int_pin: GPIO to receive the Interrupt from the BNO055 for the Arduino Uno (Interrupt is visible on the INT LED on the Shield)
int reset_pin: GPIO to reset the BNO055 (RESET pin has to be HIGH for the BNO055 to operate)
*Return Parameter: None
*******************************************************************************************/
void NineAxesMotion::initSensor(unsigned int address)
void NineAxesMotion::initSensor(unsigned int address, int int_pin, int reset_pin)
{
INT_PIN = int_pin;
RESET_PIN = reset_pin;

//Initialize the GPIO peripheral
pinMode(INT_PIN, INPUT_PULLUP); //Configure Interrupt pin
pinMode(RESET_PIN, OUTPUT); //Configure Reset pin
Expand Down
26 changes: 14 additions & 12 deletions src/NineAxesMotion.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,17 +92,16 @@ struct bno055_accel_stat_t {
uint8_t powerMode; //Power mode: Normal - Deep suspend
};

//GPIO pins used for controlling the Sensor
#define RESET_PIN 4 //GPIO to reset the BNO055 (RESET pin has to be HIGH for the BNO055 to operate)

#if defined(__AVR_ATmega32U4__) //Arduino Yun and Leonardo
#define INT_PIN 4 //GPIO to receive the Interrupt from the BNO055 for the Arduino Uno(Interrupt is visible on the INT LED on the Shield)
#elif defined(ARDUINO_ARCH_SAM) //INT_PIN is the interrupt number not the interrupt pin
#define INT_PIN 2
#elif defined(ARDUINO_ARCH_SAMD)
#define INT_PIN 7
//GPIO to reset the BNO055 (RESET pin has to be HIGH for the BNO055 to operate)
int RESET_PIN = 7; // 7 or 4 are most likely candidate pins

//GPIO to receive the Interrupt from the BNO055 (Interrupt is visible on the INT LED on the Shield)
#if defined(__AVR_ATmega32U4__) //Arduino Yun and Leonardo have I2C shared with pins 2 and 3
int INT_PIN = 7;
#elif defined(ARDUINO_SAMD)
int INT_PIN = 7; // Older SAMD boards have NMI mapped on pin 2
#else
#define INT_PIN 0
int INT_PIN = 2;
#endif

#define ENABLE 1 //For use in function parameters
Expand Down Expand Up @@ -147,10 +146,13 @@ class NineAxesMotion {

/*******************************************************************************************
*Description: Function with the bare minimum initialization
*Input Parameters: None
*Input Parameters:
unsigned int address: I2C address of the BNO055. Default 0x28
int int_pin: GPIO to receive the Interrupt from the BNO055 for the Arduino Uno (Interrupt is visible on the INT LED on the Shield)
int reset_pin: GPIO to reset the BNO055 (RESET pin has to be HIGH for the BNO055 to operate)
*Return Parameter: None
*******************************************************************************************/
void initSensor(unsigned int address = 0x28);
void initSensor(unsigned int address = 0x28, int int_pin = 2, int reset_pin = 7);

/*******************************************************************************************
*Description: This function is used to reset the BNO055
Expand Down