Проблемные данные I2C к датчику GY955/BNO055 (Китай)
Я хочу спросить, у меня возникла проблема при запуске датчика Arduino, я не могу вывести данные, но обнаруживает, что адрес датчика был сопряжен.
Как будто I2C имеет проблемы или блокирует его.
Прошлой ночью это сработало только потому, что мои двойные датчики попробовали другой с той же программой после того, как я скомпилировал и загрузил, я вижу, что последовательный монитор - это только датчик обнаружения, но он не отображает данные, поэтому шаг испаряется, а рулон данные 0.0,0.
Похоже, проблема с i2c: данные не выходят, определяет только адрес датчика, а содержимое все нулевое. Вы когда-нибудь сталкивались с этим?
Первоначально это работало, потому что датчик был тот же, и я попробовал его с той же программой после чтения GY 955 / BNO055 на Euler_streaming, он показал только ноль на ось.
Это код на макетной плате
/*************************************************** ************************************
Euler_Streaming.pde — часть примера ПО для использования BNO055 с Arduino
(C) Все права принадлежат ROBERT BOSCH GMBH.
Авторское право (C) Bosch Sensortec GmbH, 2014 г.
Эта программа является бесплатным программным обеспечением: вы можете распространять ее и/или модифицировать
на условиях Стандартной общественной лицензии GNU, опубликованной
Free Software Foundation, либо версию 3 Лицензии, либо
(на ваш выбор) любую более позднюю версию.
Эта программа распространяется в надежде, что она будет полезна,
но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемой гарантии
КОММЕРЧЕСКАЯ ПРИГОДНОСТЬ или ПРИГОДНОСТЬ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ. См.
Стандартная общественная лицензия GNU для более подробной информации.
Вы должны были получить копию Стандартной общественной лицензии GNU.
вместе с этой программой. Если нет, см. <http://www.gnu.org/licenses/>.
******************************************************* ************************/
/* Дата: 07.01.2014
Редакция: 1.2
*/
#include "BNO055_support.h" //Содержит код моста между API и Arduino
#include <Wire.h>
// В этом примере адрес устройства установлен на BNO055_I2C_ADDR2. Вы можете изменить это в файле BNO055.h в сегменте кода, показанном ниже.
// /* bno055 I2C-адрес */
// # определить BNO055_I2C_ADDR1 0x28
// # определить BNO055_I2C_ADDR2 0x29
// # определить BNO055_I2C_ADDR BNO055_I2C_ADDR2
//Назначение контактов, проверенное на Arduino Due.
//Vdd,Vddio : 3,3 В
//Земля : Земля
//SDA/SCL : SDA/SCL
//PSO/PS1 : GND/GND (режим I2C)
//Эта структура содержит сведения о подключенном устройстве BNO055. (Обновлено после инициализации)
struct bno055_t myBNO;
struct bno055_euler myEulerData; //Структура для хранения данных Эйлера
unsigned long lastTime = 0;
void setup() // Этот код выполняется один раз
{
// Инициализация связи I2C
Wire.begin();
//Инициализация BNO055
BNO_Init(&myBNO); //Назначение структуры для хранения информации об устройстве
//Конфигурация в режим NDoF
bno055_set_operation_mode(OPERATION_MODE_NDOF);
delay(1);
// Инициализируем последовательный порт для просмотра информации на последовательном мониторе
Serial.begin(115200);
}
void loop() // Этот код зациклен навсегда
{
if ((millis() - lastTime) >= 100) //Для потоковой передачи с частотой 10 Гц без использования дополнительных таймеров
{
lastTime = millis();
bno055_read_euler_hrp(&myEulerData); // Обновляем данные Эйлера в структуру
Serial.print("Time Stamp: "); //Чтобы прочитать метку времени
Serial.println(lastTime);
Serial.print("Heading(Yaw): "); //Прочитать Заголовок (Yaw)
Serial.println(float(myEulerData.h) / 16.00); // Преобразовать в градусы
Serial.print("Roll: "); //Чтобы прочитать список
Serial.println(float(myEulerData.r) / 16.00); // Преобразовать в градусы
Serial.print("Pitch: "); //Чтобы прочитать шаг
Serial.println(float(myEulerData.p) / 16.00); // Преобразовать в градусы
Serial.println(); //Дополнительная строка для различения пакетов
}
}
@Hari_Murti, 👍0
Обсуждение1 ответ
У меня была такая же проблема с библиотекой Adafruit. Когда используется китайский модуль, в конструкторе необходимо указать id следующим образом:
Adafruit_BNO055 bno = Adafruit_BNO055(55,0x29);
- у меня возникают странные проблемы при попытке прочитать форму последовательного соединения gps
- Путаница между SPI и I2C для SSD1306 OLED
- Получение шестнадцатеричных данных с терминала
- Кнопка двойного состояния Nextion
- Arduino Uno: avrdude: stk500_recv(): программатор не отвечает
- Запуск двух шаговых двигателей с двумя поворотными энкодерами
- Отправка строки из RPi в Arduino - Рабочий код
- Варианты протокола для обмена данными между Arduino и ESP8266
Может кто-нибудь найти схему gy955?, @Jot
Как узнать, что датчик найден по адресу? Какую библиотеку вы используете (ссылка)? Определен ли адрес в
BNO055_support.h
?, @chrislHari_Murti, вы подключили vcc модуля к контакту 3.3v или 5v arduino mega 2560?, @Jot