Файл: 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

Положительный полюс источника питания с напряжением


ЗАЗЕМЛЕНИЕ

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

  1. пустотанастраивать() {

  1. Серийный.начинать(9600);

// инициализируем последовательный порт, а скорость передачи устанавливается на 9600

  1. Серийный.печать("Инициализация устройств I2C..."); Проволока.

  2. начинать(); ускоритель.инициализиро//виатньи(ц);иализируем I2C

  3. // инициализируем MPU6050

  4. Серийный.печать("Проверка подключений устройств..."); //

  5. проверяем соединение

  6. если(ускоритель.testConnection()) {

  7. Серийный.печать("Успешное подключение к MPU6050");

21 }

  1. еще{

  2. Серийный.печать("Ошибка соединения с MPU6050"

24 ); пока(1);

25 }

  1. // когда вам нужно откалибровать гравитационное ускорение, вы можете установить здесь смещение и убрать примечание

  2. // accelgyro.setXAccelOffset(-1200); //

  3. accelgyro.setYAccelOffset(-2500); //

  4. accelgyro.setZAccelOffset(1988); Серийный.

  5. Распечатать("Смещение XYZ :\t");

  6. Серийный.Распечатать(ускоритель.получитьXAccelOffset());Серийный.Распечатать("\т");

  7. Серийный.Распечатать(ускоритель.getYAccelOffset());Серийный.Распечатать("\т");

  8. Серийный.Распечатать(ускоритель.getZAccelOffset());Серийный.Распечатать("\п"); //

  9. инициализируем порт светодиода

  10. контактный режим(LED_PIN,ВЫХОД);

36 }

37

  1. пустотапетля() {

  2. // считываем необработанные измерения ускорения/гироскопа с устройства

  3. ускоритель.получить движение6(&топор, &да, &аз, &gx, &гы, &гз); //

  4. отображение значений ускорения/гироскопа x/y/z, разделенных табуляцией

  5. Серийный.Распечатать("а/г:\т");

  6. Серийный.Распечатать(топор);Серийный.Распечатать("\т");

  7. Серийный.Распечатать(да);Серийный.Распечатать("\т");

  8. Серийный.Распечатать(аз);Серийный.Распечатать("\т");

  9. Серийный.Распечатать(gx);Серийный.Распечатать("\т\т");

  10. Серийный.Распечатать(гы);Серийный.Распечатать("\т\т");

  11. Серийный.печать(гз);

  12. // преобразование единицы ускорения в g и единицу измерения гироскопа в dps (градусы в секунду) в соответствии с чувствительностью

  13. Серийный.Распечатать("а/г:\т");

  14. Серийный.Распечатать((плавать)топор/16384);Серийный.Распечатать("г\т");





Мы ссылаемся на библиотеки, разработанные для шины I2C и MPU6050, для управления MPU6050.


Библиотека MPU6050 предоставляет класс MPU6050 для управления MPU6050, и перед его использованием необходимо создать экземпляр объекта класса.



Сначала инициализируйте шину I2C, а затем инициализируйте MPU6050.


Затем выполните тест, чтобы убедиться, что MPU6050 подключен к шине I2C, и распечатайте соответствующую информацию в последовательном порту.



Если вы хотите сделать результаты более близкими к реальной ситуации, вы можете настроить смещение MPU6050 перед его использованием. Вы можете обратиться к файлам библиотеки MPU6050 для получения более подробной информации о настройке смещения. Если нет жестких требований, этот шаг также можно пропустить.



Мы также можем прочитать значение смещения, которое уже установлено, с помощью следующего кода:


Считайте значения 3-х ускорений и 3-х угловых ускорений в функции loop(),

Затем преобразуйте данные и отправьте их на последовательный порт. Для преобразования единицы необработанных данных MPU6050 в стандартную единицу см. техническое описание.


& Оператор




Функция оператора «&» получить адрес. Мы знаем, что параметр функции используется для передачи

значения в тело функции. При вызове функции значение переменных, которые работают как параметры, не меняется.

Если параметры функции определены как тип указателя, то при вызове функции переменная как параметр функции будет передана в тело функции и будет участвовать в ее работе, а значение будет изменено. Это эквивалентно тому, что функция косвенно возвращает большее значение.

Переменная типа указателя указывает на адрес. Когда мы определяем его, нам нужно добавить «*» перед ним, например:

интервал *а;

Когда параметр функции имеет тип указателя, а общая переменная работает как параметр функции, перед параметром необходимо добавить оператор &.

Проверьте и загрузите код, откройте последовательный монитор, и вы увидите значение MPU6050 как в исходном, так и в преобразованном состоянии, которое отправляется с платы управления. Поверните и переместите модуль MPU6050, после чего вы увидите изменение значений.


Данные, отправляемые этим кодом, могут быть слишком большими для пользователей, не знакомых с ускорением. Вы можете загрузить Acceleration_Detection, которые отправляют