Файл: Ledpixel Связанные знания Светодиодный модуль Freenove 8 rgb.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 30.11.2023
Просмотров: 117
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Знание компонентов
связь I2C
I2C (Inter-Integrated Circuit) — это режим двухпроводной последовательной связи, который можно использовать для подключения микроконтроллера и его периферийного оборудования. Устройства, использующие связь I2C, должны быть подключены к линии последовательных данных (SDA) и линии последовательных часов (SCL) (называемой шиной I2C). Каждое устройство имеет уникальный адрес и может использоваться как передатчик или приемник для связи с устройствами, подключенными к шине.
МПУ6050
Сенсорный модуль MPU6050 представляет собой полноценное 6-осевое устройство отслеживания движения. Он сочетает в себе 3-осевой гироскоп, 3-осевой акселерометр и DMP (цифровой процессор движения) в небольшом корпусе.
Настройки акселерометра и гироскопа MPU6050 можно изменить. Также встроен прецизионный цифровой датчик температуры с широким диапазоном для компенсации показаний данных в зависимости от изменений температуры, а также могут быть считаны значения температуры. Модуль MPU6050 следует протоколу связи I2C, а адрес по умолчанию — 0x68.
Описание порта модуля MPU6050 выглядит следующим образом:
-
Имя контакта
Пин код
Описание
ВКК
1
Положительный полюс источника питания с напряжением 5В
ЗАЗЕМЛЕНИЕ
2
Отрицательный полюс источника питания
СКЛ
3
Контакт синхронизации I2C
ПДД
4
Контакт данных связи I2C
XDA
5
Контакт данных хоста I2C, который можно подключить к другим устройствам.
XCL
6
Штырь синхронизации хоста I2C, который можно подключить к другим устройствам.
AD0
7
Контакт управления битами адреса I2C.
Низкий уровень: адрес устройства 0x68 Высокий уровень: адрес устройства 0x69
INT
8
Выходной контакт прерывания
Для более подробной информации, пожалуйста, обратитесь к техническому описанию.
MPU6050 широко используется для балансировки транспортных средств, роботов и самолетов, мобильных телефонов и других продуктов, которые требуют стабильности для контроля стабильности и ориентации или которые должны ощущать то же самое.
Схема
Используйте контакт A4/SDA, порт A5/SCL на плате управления для связи с модулем MPU6050.
Эскиз
Acceleration_Detection
Библиотека — это набор кода. Мы можем использовать код, предоставляемый библиотеками, чтобы упростить программирование. Нажмите
«Добавить библиотеку .ZIP...», а затем найдитеI2Cdev.zipа такжеMPU6050.zipв папке с библиотеками (эта папка находится в папке, разархивированной из предоставленного нами ZIP-файла). Эти библиотеки упрощают использование модуля MPU6050.
Когда эти библиотеки добавлены, вы можете найти их в библиотеках в папке Sketchbook в окне File-Preferences. Вы можете просмотреть исходный код этих библиотечных файлов, чтобы понять особенности их использования.
Теперь напишите скетч для связи с модулем MPU6050 и отправьте захваченные данные в окно последовательного монитора.
10 логическиймиганиезнак равноЛОЖЬ; // Определяем переменную
для сохранения состояния светодиода
11
-
пустотанастраивать() {
-
Серийный.начинать(9600);
// инициализируем последовательный порт, а скорость передачи устанавливается на 9600
-
Серийный.печать("Инициализация устройств I2C..."); Проволока. -
начинать(); ускоритель.инициализиро//виатньи(ц);иализируем I2C -
// инициализируем MPU6050 -
Серийный.печать("Проверка подключений устройств..."); // -
проверяем соединение -
если(ускоритель.testConnection()) { -
Серийный.печать("Успешное подключение к MPU6050");
21 }
-
еще{ -
Серийный.печать("Ошибка соединения с MPU6050"
24 ); пока(1);
25 }
-
// когда вам нужно откалибровать гравитационное ускорение, вы можете установить здесь смещение и убрать примечание -
// accelgyro.setXAccelOffset(-1200); // -
accelgyro.setYAccelOffset(-2500); // -
accelgyro.setZAccelOffset(1988); Серийный. -
Распечатать("Смещение XYZ :\t"); -
Серийный.Распечатать(ускоритель.получитьXAccelOffset());Серийный.Распечатать("\т"); -
Серийный.Распечатать(ускоритель.getYAccelOffset());Серийный.Распечатать("\т"); -
Серийный.Распечатать(ускоритель.getZAccelOffset());Серийный.Распечатать("\п"); // -
инициализируем порт светодиода -
контактный режим(LED_PIN,ВЫХОД);
36 }
37
-
пустотапетля() { -
// считываем необработанные измерения ускорения/гироскопа с устройства -
ускоритель.получить движение6(&топор, &да, &аз, &gx, &гы, &гз); // -
отображение значений ускорения/гироскопа x/y/z, разделенных табуляцией -
Серийный.Распечатать("а/г:\т"); -
Серийный.Распечатать(топор);Серийный.Распечатать("\т"); -
Серийный.Распечатать(да);Серийный.Распечатать("\т"); -
Серийный.Распечатать(аз);Серийный.Распечатать("\т"); -
Серийный.Распечатать(gx);Серийный.Распечатать("\т\т"); -
Серийный.Распечатать(гы);Серийный.Распечатать("\т\т"); -
Серийный.печать(гз); -
// преобразование единицы ускорения в g и единицу измерения гироскопа в dps (градусы в секунду) в соответствии с чувствительностью -
Серийный.Распечатать("а/г:\т"); -
Серийный.Распечатать((плавать)топор/16384);Серийный.Распечатать("г\т");
Мы ссылаемся на библиотеки, разработанные для шины I2C и MPU6050, для управления MPU6050.
Библиотека MPU6050 предоставляет класс MPU6050 для управления MPU6050, и перед его использованием необходимо создать экземпляр объекта класса.
Сначала инициализируйте шину I2C, а затем инициализируйте MPU6050.
Затем выполните тест, чтобы убедиться, что MPU6050 подключен к шине I2C, и распечатайте соответствующую информацию в последовательном порту.
Если вы хотите сделать результаты более близкими к реальной ситуации, вы можете настроить смещение MPU6050 перед его использованием. Вы можете обратиться к файлам библиотеки MPU6050 для получения более подробной информации о настройке смещения. Если нет жестких требований, этот шаг также можно пропустить.
Мы также можем прочитать значение смещения, которое уже установлено, с помощью следующего кода:
Считайте значения 3-х ускорений и 3-х угловых ускорений в функции loop(),
Затем преобразуйте данные и отправьте их на последовательный порт. Для преобразования единицы необработанных данных MPU6050 в стандартную единицу см. техническое описание.
& Оператор | |
Функция оператора «&» — получить адрес. Мы знаем, что параметр функции используется для передачи значения в тело функции. При вызове функции значение переменных, которые работают как параметры, не меняется. Если параметры функции определены как тип указателя, то при вызове функции переменная как параметр функции будет передана в тело функции и будет участвовать в ее работе, а значение будет изменено. Это эквивалентно тому, что функция косвенно возвращает большее значение. Переменная типа указателя указывает на адрес. Когда мы определяем его, нам нужно добавить «*» перед ним, например: интервал *а; Когда параметр функции имеет тип указателя, а общая переменная работает как параметр функции, перед параметром необходимо добавить оператор &. |
Проверьте и загрузите код, откройте последовательный монитор, и вы увидите значение MPU6050 как в исходном, так и в преобразованном состоянии, которое отправляется с платы управления. Поверните и переместите модуль MPU6050, после чего вы увидите изменение значений.
Данные, отправляемые этим кодом, могут быть слишком большими для пользователей, не знакомых с ускорением. Вы можете загрузить Acceleration_Detection, которые отправляют