Informatics Point
Информатика и проектирование
Рис.11. Подключенная плата с датчиком напрямую к микроконтроллеру
Давайте взглянем на первую часть кода:
#include <Wire.h> //I2C Arduino Library
#define address 0x1E //0011110b, I2C 7bit address of HMC5883setup(){
//Initialize Serial and I2C communications.begin(9600);.begin();
//Put the HMC5883 IC into the correct operating mode.beginTransmission(address); //open communication with HMC5883.send(0x02); //select mode register.send(0x00); //continuous measurement mode
Wire.endTransmission();
}
Код, который находится внутри Setup () функция запускается один раз в начале. Она инициализирует последовательное соединение со скоростью 9600 бод. Мы используем последовательное соединение для передачи данных, для каждой оси передавая обратно на компьютер. I2C также инициализируется. Затем мы делаем операцию «write» в HMC5883L. Цель этой операции 'записи' является для регулировки значения в регистре конфигурации от HMC5883L, задаем непрерывный режим работы. Это позволяет нам сделать непрерывное чтение данных оси. По умолчанию чип находится в одном режиме чтения, после первого прочтения, он будет идти в режиме ожидания для экономии энергии. После того, как в режиме ожидания, мы записываем в него, чтобы включить его, прежде чем мы сможем читать из него снова.
Двигаемся дальше, вот где мы фактически запрашиваем и получаем данные:
void loop(){x,y,z; //triple axis data
//Tell the HMC5883L where to begin reading data.beginTransmission(address);.send(0x03); //select register 3, X MSB register.endTransmission();
//Read data from each axis, 2 registers per axis.requestFrom(address, 6);(6<=Wire.available()){= Wire.receive()<<8; //X msb|= Wire.receive(); //X lsb= Wire.receive()<<8; //Z msb|= Wire.receive(); //Z lsb= Wire.receive()<<8; //Y msb|= Wire.receive(); //Y lsb
}
//Print out values of each axis.print("x: ");.print(x);.print(" y: ");.print(y);.print(" z: ");.println(z);
delay(250);
}
Функция loop() будет работать снова и снова до тех пор, пока есть мощность. Через промежуток времени, мы делаем быструю запись, чтобы передать функции, где мы хотим начать читать данные для осей. Регистр 3 выбран и, получается, что наиболее значимый байт оси Х.
Мы задаем чтение 6 байт один за другим. Чип авто-инкрементов это номер регистра, который мы считываем, поэтому мы не должны выбирать каждый регистр вручную, прежде чем мы будем считывать из него. Ось данных х, у, z отправлены обратно последовательно к компьютеру.
Мы можем увидеть эти значения с помощью 'Serial Monitor' среды разработки Arduino, как показано ниже (Рис.12).
Рис.12.Значения осей х, у, z
Таймер на микроконтроллере MSP430F2013
Практически
в любой современной электронной технике можно найти микроконтроллеры. Столь
широкое применение этих микросхем обусловлено чрезвычайно удачным со ...
Устройство преобразования аналоговых сигналов
Преобразование информации к виду, удобному для использования в
различных устройствах, является важной задачей в системах управления. Долгое
время предпочтен ...
Разработка устройства для измерения радиационного излучения
Ионизирующее
излучение, часто называемое радиоактивным излучением, ―
это естественное явление, всегда присутствующее в окружающей нас природной
...
Меню сайта
2025 © www.informaticspoint.ru