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); } }
значить, надо заглянуть во внутренности библиотеки, поработать проктологом и понять, где у неё запор.