Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Где верх?

Что мы сделаем в первую очередь?

Проверим здравый смысл!

Вы уже должны уметь написать программу, которая непрерывно выводит данные акселерометра в консоль RTT, — см. главу про I2C. Моя программа находится в examples/show-accel.rs в той главе. Замечаете ли вы что-нибудь интересное, даже если держать плату параллельно полу обратной стороной вверх? (Помните, что акселерометр установлен на обратной стороне платы, так что при таком положении «вверх ногами» ось Z смотрит вверх.)

Держа плату так, вы должны увидеть, что значения X и Y довольно близки к 0, а значение Z — около 1000. Это странно: плата не движется, но её ускорение ненулевое. В чём дело? Наверное, дело в гравитации, верно? Ведь ускорение свободного падения равно 1 g (ага, 1 g = -1000 у акселерометра). Но гравитация тянет предметы вниз, поэтому ускорение по оси Z должно было бы быть положительным, а не отрицательным.

Может, программа перепутала направление оси Z? Нет: можно проверить, поворачивая плату так, чтобы гравитация оказалась вдоль оси X или Y, — но ускорение, которое измеряет акселерометр, всегда направлено вверх.

Происходит вот что: акселерометр измеряет собственное ускорение платы, а не то ускорение, которое наблюдаете вы. Собственное ускорение — это ускорение платы с точки зрения наблюдателя в свободном падении. Наблюдатель в свободном падении движется к центру Земли с ускорением 1g; с его точки зрения плата на самом деле движется вверх (от центра Земли) с ускорением 1g. Вот почему собственное ускорение направлено вверх. Это также означает, что если бы плата находилась в свободном падении, акселерометр показывал бы собственное ускорение, равное нулю. Пожалуйста, не пробуйте это дома. Или пробуйте, если готовы рискнуть своим MB2, уронив его.

Да, физика — штука непростая. Пойдём дальше.