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
Проектирование линзовой афокальной насадки для маломощного лазера
Основой любого оптического прибора, в том числе и лазера,
является оптическая система, которая представляет собой совокупность оптических
деталей (линз, зер ...
Проектирование канала сбора аналоговых данных микропроцессорной системы
Применяя микропроцессоры и микро-ЭВМ для контроля за сложными
производственными процессами, можно обрабатывать в реальном масштабе времени
сигналы, поступаю ...
Приборы общего и специального назначения со встроенными микропроцессорами для измерения физических величин
Микропроцессорная
техника получает все большее применение в приборостроении. Применение
микропроцессоров (МП) преобразует измерительные приборы в «интеллект ...
Меню сайта
2024 © www.informaticspoint.ru