我正在使用 Earlphilhower 的 Arduino-Pico 和 这个 AS5601 库来测试我的 AS5601 分线板。 以下是我正在运行的示例代码:
#include "Arduino.h"
#include "AS5601.h"
AS5601 Sensor;
void setup()
{
Wire.begin();
delay( 1000 );
Serial.begin( 115200 );
Serial.println( F("Angle Measurement with AS5601") );
}
void loop()
{
Serial.print( F("Magnitude: ") );
Serial.print( Sensor.getMagnitude() );
Serial.print( F(" | Raw angle: ") );
Serial.print( Sensor.getRawAngle() );
Serial.print( F(" | Clean angle: ") );
Serial.print( Sensor.getAngle() );
if ( Serial.read() == '0' )
{
Sensor.setZeroPosition();
Serial.print( F(" | Zero position set!") );
}
Serial.println();
delay( 50 );
}
但我无法从传感器读取任何内容,但这整个设置适用于我的 teesny 3.5 我知道初始化 Pico 的 I2C 引脚时存在一些问题,但在互联网上搜索后我无法弄清楚,请帮助我。
我在网上彻底搜索,但无法弄清楚。
我尝试在 AS%601.h lib 文件中设置 sda 和 scl 引脚:
wireChannel = &Wire;
wireChannel->setSCL(5);
wireChannel->setSDA(4);
wireChannel->begin();
像这样,但它不起作用,而且当我这样做时,我的电脑中没有检测到主板,每当我运行此代码时,就会发生这种情况,就像每当我设置这些引脚声明时一样。
请帮助我在我的 Pico RP2040 中正确初始化 i2c,以便我可以使用 AS5601。
void loop() {
Wire.beginTransmission(AS5600_AS5601_DEV_ADDRESS);
Wire.write(AS5600_AS5601_REG_RAW_ANGLE);
Wire.endTransmission(false);
Wire.requestFrom(AS5600_AS5601_DEV_ADDRESS, 2);
uint16_t RawAngle = 0;
RawAngle = ((uint16_t)Wire.read() << 8) & 0x0F00;
RawAngle |= (uint16_t)Wire.read();
Wire.beginTransmission(AS5600_AS5601_DEV_ADDRESS);
Wire.write(AS5600_AS5601_REG_ANGLE);
Wire.endTransmission(false);
Wire.requestFrom(AS5600_AS5601_DEV_ADDRESS, 2);
uint16_t Angle = 0;
Angle = ((uint16_t)Wire.read() << 8) & 0x0F00;
Angle |= (uint16_t)Wire.read();
Serial.print(RawAngle);
Serial.print(",");
Serial.println(Angle);
尝试运行这个,我只是直接使用了regs