Главная страница
Навигация по странице:

  • Acceleration _ Detection

  • сборник. Ledpixel Связанные знания Светодиодный модуль Freenove 8 rgb


    Скачать 5.77 Mb.
    НазваниеLedpixel Связанные знания Светодиодный модуль Freenove 8 rgb
    Анкорсборник
    Дата18.05.2023
    Размер5.77 Mb.
    Формат файлаdocx
    Имя файлаTutorial[071-140].en.ru.docx
    ТипГлава
    #1139761
    страница9 из 10
    1   2   3   4   5   6   7   8   9   10

    Знание компонентов



    связь 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, которые отправляют только значения ускорения в трех направлениях на последовательный порт, поэтому будет относительно легче наблюдать за изменением чисел при вращении и перемещении этого модуля.
    Глава 15 Светодиодная панель
    В предыдущей главе мы узнали, как использовать некоторые модули и датчики и отображать некоторую информацию на компьютере через последовательный порт. Теперь давайте изучим некоторые модули, которые могут выводить изображения и текст.

    В этой главе мы научимся управлять светодиодной панелью с микросхемой 74HC595.
    frame12
    Во-первых, давайте узнаем, как использовать микросхему 74HC595, которая нам очень помогает для управления светодиодной матрицей.

    Список компонентов


    Плата управления x1


    USB-кабель x1








    Совет по проектам Freenove



    Знание кода
    шестнадцатеричный

    Преобразование между двоичной и десятичной системой было упомянуто ранее. Когда вы пишете код, число по умолчанию десятичное. В код нужно добавить префикс 0x для шестнадцатеричных чисел, например 0x01.

    Один шестнадцатеричный бит может представлять одно число от 0 до 15. Для облегчения записи числа больше 9 записываются буквами AF (без учета регистра), например 0x2A. Соответствующее соотношение выглядит следующим образом:

    Число

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    Представлять

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    А

    Б

    С

    Д

    Е

    Ф

    Преобразование между шестнадцатеричной и десятичной системами аналогично преобразованию между шестнадцатеричной и двоичной, например, шестнадцать цифр 0x12:


    Последовательность

    1

    0

    Число

    1

    2

    При преобразовании шестнадцатеричного числа в десятичное сначала умножьте его n-е число на n степень 16, а затем просуммируйте все результаты умножения. Возьмем 0x12 в качестве примера:

    1 *16̂ 1+2*16̂ 0=18

    Когда десятичное число преобразуется в шестнадцатеричное, десятичное число делится на 16, поэтому мы получаем частное и остаток, а затем полученное частное будет непрерывно делиться на 16, пока частное не станет равным нулю. Расположите все остатки справа налево в ряд и завершите преобразование. Например:


    Результат преобразования 0x12.

    16 18

    16 1

    0

    Остаток

    ………… 2

    ………… 1

    Последовательность

    0

    1


    Когда вы пишете код, иногда удобно использовать шестнадцатеричный формат, особенно при работе с битами, потому

    что 1 шестнадцатеричное число может быть выражено 4 двоичными числами (2̂ 4 = 16). Соответствующая связь между 4- битными двоичными числами и 1 шестнадцатеричным числом показана следующим образом:



    4-битный двоичный файл

    0000

    0001

    0010

    0011

    0100

    0101

    0110

    0111

    1 цифра шестнадцатеричной

    0

    1

    2

    3

    4

    5

    6

    7





    4-битный двоичный файл

    1000

    1001

    1010

    1011

    1100

    1101

    1110

    1111

    1 цифра шестнадцатеричной

    8

    9

    А

    Б

    С

    Д

    Е

    Ф

    Например, двоичному коду 00010010 соответствует шестнадцатеричный код 0x12.



    1   2   3   4   5   6   7   8   9   10


    написать администратору сайта