У меня есть следующий код для использования в Microbit, подключающемся к MPU 6050 (на плате gy521)
basic.showIcon(IconNames.Heart)
SSD1306oled.useBuffer();
const MPU = 0x68;
pins.i2cWriteNumber(MPU, 0x6B, NumberFormat.UInt8LE, true)
pins.i2cWriteNumber(MPU, 0x00, NumberFormat.UInt8LE, false)
basic.pause(10)
pins.i2cWriteNumber(MPU, 0x1B, NumberFormat.UInt8LE, true)
pins.i2cWriteNumber(MPU, 0x00, NumberFormat.UInt8LE, false)
basic.pause(10)
pins.i2cWriteNumber(MPU, 0x1C, NumberFormat.UInt8LE, true)
pins.i2cWriteNumber(MPU, 0x00, NumberFormat.UInt8LE, false)
basic.pause(10)
pins.i2cWriteNumber(MPU, 0x75, NumberFormat.UInt8LE, true)
let who = pins.i2cReadNumber(MPU, NumberFormat.UInt8LE, false)
SSD1306oled.drawTextAt("who: " + who, 8, 0)
SSD1306oled.drawBuffer()
basic.pause(2000)
basic.forever(function () {
pins.i2cWriteNumber(MPU, 0x41, NumberFormat.UInt8LE, true)
basic.pause(100)
let num1 = pins.i2cReadNumber(MPU, NumberFormat.UInt8LE, true)
let num2 = pins.i2cReadNumber(MPU, NumberFormat.UInt8LE, false)
SSD1306oled.drawTextAt(1 + "= " + num1, 0, 1)
SSD1306oled.drawTextAt(2 + "= " + num2, 0, 2)
SSD1306oled.drawBuffer();
basic.pause(500);
})
Он может читать регистр «кто я» (0x75) просто отлично, нопоказывает нули для акселерометра, гироскопа и даже температуры.Я дошел до этого, пытаясь адаптировать код Arduino для машинописного текста.Я думал, что проблема может заключаться в том, что в машинописном микробите нет «Wire.requestFrom», но тогда я могу читать «кто я», и я думаю, что это должно быть что-то еще.Я подумал, что у меня может быть неисправная плата, поэтому я купил другую - те же результаты.
Я просмотрел карту регистров (https://www.invensense.com/wp-content/uploads/2015/02/MPU-6000-Register-Map1.pdf), но у меня ничего не выскакивает.
Я попробовал чужую библиотеку, но она кажется необслуживаемой / может быть сломанной (его функция "initialize", на которую ссылаются в его примерах, больше не существует ... копирование и включение "initialize" не помогают).
Я в большой растерянности. Есть идеи?
(Кстати, функции SSD1306 с поддержкой только записи на светодиодный экран - с тем же успехом могут записывать на последовательный выход или что-то еще для отладки)