我无法使点击中断适用于LSM303D。使用Pololu为arduino提供的库我可以将此代码用于DLHC
[码]
#include< Wire.h>
#include< LSM303.h>
long thisLong = 0;
LSM303指南针;
const byte interruptPin = 2;
void setup()
{
Serial.begin(9600);
Wire.begin();
compass.init();
compass.enableDefault();
compass.writeAccReg(LSM303 :: CTRL3,0b11000000);
compass.writeAccReg(LSM303 :: CTRL0,0b00000000);
compass.writeAccReg(LSM303 :: CLICK_CFG,0b00010000);
compass.writeAccReg(LSM303 :: CLICK_THS,0b00011111);
compass.writeAccReg(LSM303 ::
tiME_LIMIT,0b00011111);
延迟(100);
attachInterrupt(digitalPinToInterrupt(interruptPin),reset,CHANGE);
}
void loop()
{
Serial.print(thisLong);
Serial.println( '' '');
thisLong ++;
延迟(100);
}
void reset(){
thisLong = 0;
}
[/码]
但是当我在LSM303D上尝试时,它似乎不会产生中断。我可以读取CLICK_SRC寄存器并且中断显示有效,但INT1引脚永远不会从低电平变为高电平。有人一起工作吗?
以上来自于谷歌翻译
以下为原文
I am having trouble getting the click interrupts to work for the LSM303D. using the library provided by Pololu for arduino I can get this code working for the DLHC
-
- #include
- #include
- long thisLong = 0;
- LSM303 compass;
- const byte interruptPin = 2;
-
-
- void setup()
- {
- Serial.begin(9600);
- Wire.begin();
- compass.init();
- compass.enableDefault();
- compass.writeAccReg(LSM303::CTRL3, 0b11000000);
- compass.writeAccReg(LSM303::CTRL0, 0b00000000);
- compass.writeAccReg(LSM303::CLICK_CFG, 0b00010000);
- compass.writeAccReg(LSM303::CLICK_THS, 0b00011111);
- compass.writeAccReg(LSM303::TIME_LIMIT, 0b00011111);
-
-
- delay(100);
- attachInterrupt(digitalPinToInterrupt(interruptPin), reset, CHANGE);
- }
-
-
- void loop()
- {
- Serial.print(thisLong);
- Serial.println('''');
- thisLong++;
- delay(100);
- }
-
-
- void reset() {
- thisLong = 0;
- }
But when I try it on the LSM303D it doesn't seem to generate the interrupt. I can read the CLICK_SRC register and the interrupt shows active, but the INT1 pin never goes from low to high. Anyone work with these at all?