|
楼主 |
发表于 2022-7-6 13:23
|
显示全部楼层
#include <Wire.h>
#include <HMC5883L.h>
#include "TM1637.h" // Подключаем библиотеку для работы с модулем
#define CLK 3
#define DIO 2
TM1637 tm1637(CLK, DIO);
HMC5883L compass;
int vol[18]; //создаём массив на 19.
void setup()
{
tm1637.init(); //Инициализация модуля
tm1637.set(0); //Установка яркости горения сегментов от 0 до 7
// Установка диапазона измерения
// +/- 0.88 Ga: HMC5883L_RANGE_0_88GA
// +/- 1.30 Ga: HMC5883L_RANGE_1_3GA (по умолчанию)
// +/- 1.90 Ga: HMC5883L_RANGE_1_9GA
// +/- 2.50 Ga: HMC5883L_RANGE_2_5GA
// +/- 4.00 Ga: HMC5883L_RANGE_4GA
// +/- 4.70 Ga: HMC5883L_RANGE_4_7GA
// +/- 5.60 Ga: HMC5883L_RANGE_5_6GA
// +/- 8.10 Ga: HMC5883L_RANGE_8_1GA
compass.setRange(HMC5883L_RANGE_0_88GA);
// Установка режима работы
// Спящий режим: HMC5883L_IDLE
// Единое измерение: HMC5883L_SINGLE
// Непрерывное измерение: HMC5883L_CONTINOUS (по умолчанию)
compass.setMeasurementMode(HMC5883L_CONTINOUS);
// Установка частоты измерения
// 0.75Hz: HMC5883L_DATARATE_0_75HZ
// 1.50Hz: HMC5883L_DATARATE_1_5HZ
// 3.00Hz: HMC5883L_DATARATE_3HZ
// 7.50Hz: HMC5883L_DATARATE_7_50HZ
// 15.00Hz: HMC5883L_DATARATE_15HZ (по умолчанию)
// 30.00Hz: HMC5883L_DATARATE_30HZ
// 75.00Hz: HMC5883L_DATARATE_75HZ
compass.setDataRate(HMC5883L_DATARATE_30HZ);
// Число усредненных выборок
// 1 probka: HMC5883L_SAMPLES_1 (по умолчанию)
// 2 probki: HMC5883L_SAMPLES_2
// 4 probki: HMC5883L_SAMPLES_4
// 8 probki: HMC5883L_SAMPLES_8
compass.setSamples(HMC5883L_SAMPLES_1);
tm1637.display(0, "P"); // выводим raf
tm1637.display(1, 10);
tm1637.display(2, 15);
delay(3000);
}
void loop()
{
label1: //метка начала программы
for (int i = 0; i <= 14; i++) {
Vector raw = compass.readRaw(); // Поучение необработанных значений
vol[i] = (raw.XAxis);
vol[15] = (raw.XAxis);
delay(66);
if ( vol[15] > 1900 || vol[15] < -950 ) // если значение больше 1900 или меньше 950
{
tm1637.display(0, 15); //выводим FUUL - полный
tm1637.display(1, ">");
tm1637.display(2, ">");
tm1637.display(3, "8");
delay(3000);
goto label1;
}
}
vol[16] = (vol[0]+vol[1]+vol[2]+vol[3]+vol[4]+vol[5]+vol[6]+vol[7])/8;
vol[17] = (vol[8]+vol[9]+vol[10]+vol[11]+vol[12]+vol[13]+vol[14])/7;
vol[18] = max(vol[16],vol[17]);
tm1637.display(vol[18]);
}
|
|