ESP8266
- Войдите на сайт для отправки комментариев
Пт, 24/05/2019 - 09:34
Добрый день, у меня ESP8266 и акселирометр LSM 6DS3 необходимо устроить опрос датчика 2000 раз в секунду
Использовал библиотеку #include "SparkFunLSM6DS3.h" Очень медленная. Начал читать регистры. Вот код.
В итоге ничего не пишет. А через библиотеку все работает. Адрес тоже правильный.Весь гугл перерыл, что делат ь не знаю.Помогите пожалейста.Заранее спасибо.
#include <Wire.h> // Подключаем библиотеку Wire
int temp_address = 107; // Адрес(1001000) I2C-датчика температуры TC74A0-5.0VAT в десятичной нотации
uint8_t AcX, AcY, AcZ, Tmp, GyX, GyY, GyZ;
void setup()
{
Serial.begin(115200); // Инициализация последовательной передачи данных на скорости в 9600 бод
Wire.begin(); // Создаем Wire объект
}
void loop()
{
// Отправка запроса
Wire.beginTransmission(temp_address); // Выбор ведомого устройства отправкой его адреса
Wire.write(0); // Отправка 0, тем самым указывая что мы хотим прочитать данные из регистра температуры нашего датчика
Wire.endTransmission(); // Отправка стоп-бита, тем самым сообщаем об окончании записи на устройство
Wire.beginTransmission(temp_address);
Wire.write(0x3B); // начинаем с этого регистра
Wire.endTransmission(false);
while(Wire.available() == 0);{
Wire.requestFrom( temp_address , 14, true); // читаем все регистры
AcX = Wire.read() << 8 | Wire.read(); // 0x3B
AcY = Wire.read() << 8 | Wire.read(); // 0x3D
AcZ = Wire.read() << 8 | Wire.read(); // 0x3F
Tmp = Wire.read() << 8 | Wire.read(); // 0x41
GyX = Wire.read() << 8 | Wire.read(); // 0x43
GyY = Wire.read() << 8 | Wire.read(); // 0x45
GyZ = Wire.read() << 8 | Wire.read(); // 0x47
Serial.print(AcX);
}
}
значить, надо заглянуть во внутренности библиотеки, поработать проктологом и понять, где у неё запор.