2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
MMA8452Q - это умный, маломощный, трехосевой, емкостной, микромашинный акселерометр с разрешением 12 бит. Гибкие возможности программирования пользователем предоставляются с помощью встроенных функций в акселерометр, конфигурируемых на два контакта прерывания. Он имеет выбираемую пользователем полную шкалу ± 2 г / ± 4 г / ± 8 г с данными, отфильтрованными фильтром высоких частот, а также нефильтрованными данными, доступными в реальном времени. Вот его демонстрация с Arduino nano.
Шаг 1: Что вам нужно..
1. Arduino Nano
2. MMA8452Q
3. Кабель I²C
4. I²C Shield для Arduino Nano.
Шаг 2: Подключение:
Возьмите щит I2C для Arduino Nano и аккуратно наденьте его на контакты Nano.
Затем подключите один конец кабеля I2C к датчику MMA8452Q, а другой конец - к экрану I2C.
Подключения показаны на картинке выше.
Шаг 3: Код:
Код arduino для MMMA8452Q можно загрузить из нашего репозитория github - DCUBE Store.
Вот ссылка.
Мы включаем библиотеку Wire.h для облегчения связи датчика I2c с платой Arduino.
Вы также можете скопировать код отсюда, он выглядит следующим образом:
// Распространяется по свободной лицензии.
// Используйте его как хотите, для получения прибыли или бесплатно, при условии, что он соответствует лицензиям на связанные с ним работы.
// MMA8452Q
// Этот код предназначен для работы с мини-модулем MMA8452Q_I2CS I2C.
#включают
// Адрес I2C MMA8452Q - 0x1C (28)
#define Addr 0x1C
установка void ()
{
// Инициализируем связь I2C как МАСТЕР
Wire.begin ();
// Инициализируем последовательную связь, устанавливаем скорость передачи = 9600
Serial.begin (9600);
// Запуск передачи I2C
Wire.beginTransmission (адрес);
// Выбираем контрольный регистр
Wire.write (0x2A);
// Режим ожидания
Wire.write (0x00);
// Остановка передачи I2C
Wire.endTransmission ();
// Запуск передачи I2C
Wire.beginTransmission (адрес);
// Выбираем контрольный регистр
Wire.write (0x2A);
// Активный режим
Wire.write (0x01);
// Остановка передачи I2C
Wire.endTransmission ();
// Запуск передачи I2C
Wire.beginTransmission (адрес);
// Выбираем контрольный регистр
Wire.write (0x0E);
// Устанавливаем диапазон +/- 2g
Wire.write (0x00);
// Остановка передачи I2C
Wire.endTransmission ();
задержка (300);
}
пустой цикл ()
{
данные типа int без знака [7];
// Запрос 7 байтов данных
Wire.requestFrom (Адрес, 7);
// Читаем 7 байтов данных
// staus, xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
если (Wire.available () == 7)
{
данные [0] = Wire.read ();
данные [1] = Wire.read ();
данные [2] = Wire.read ();
данные [3] = Wire.read ();
данные [4] = Wire.read ();
данные [5] = Wire.read ();
данные [6] = Wire.read ();
}
// Преобразуем данные в 12-битные
int xAccl = ((данные [1] * 256) + данные [2]) / 16;
если (xAccl> 2047)
{
xAccl - = 4096;
}
int yAccl = ((данные [3] * 256) + данные [4]) / 16;
если (yAccl> 2047)
{
yAccl - = 4096;
}
int zAccl = ((данные [5] * 256) + данные [6]) / 16;
если (zAccl> 2047)
{
zAccl - = 4096;
}
// Выводим данные на последовательный монитор
Serial.print («Ускорение по оси X:»);
Serial.println (xAccl);
Serial.print («Ускорение по оси Y:»);
Serial.println (yAccl);
Serial.print («Ускорение по оси Z:»);
Serial.println (zAccl);
задержка (500);
}
Шаг 4: Приложения:
MMA8452Q имеет различные приложения, в том числе приложения E-Compass, обнаружение статической ориентации, которое включает в себя портрет / пейзаж, вверх / вниз, влево / вправо, определение положения сзади / спереди, ноутбук, электронную книгу и обнаружение падения и падения ноутбука в режиме реального времени. определение ориентации, включая виртуальную реальность и игровую трехмерную обратную связь о положении пользователя, анализ активности в реальном времени, такой как подсчет шагов шагомером, обнаружение свободного падения для жесткого диска, резервное копирование по GPS и многое другое.