糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > Arduino Uno + HMC5883L电子罗盘 实验

Arduino Uno + HMC5883L电子罗盘 实验

时间:2022-04-05 17:04:00

相关推荐

Arduino Uno + HMC5883L电子罗盘 实验

实现 HMC5883L 电子罗盘 简单的数据读取实验

实验效果

本实验,简单显示从HMC5883L 读取到的数据

BOM表

Arduino Uno * 1

HMC5883L(gy-273) * 1

跳线若干

接线图

Arduino Uno<----> HMC5883L

5v<---->VCC

GND <---->GND

A5(SCL)<----> SCL

A4(SDA)<---->SDA

开源程序

下载库文件 /jarzebski/Arduino-HMC5883L

把文件夹保存在libraries 文件夹里

打开Arduino IDE --> 文件 --> 示例 -->Arduino-HMC5883L-master-->HMC5883L_simple

就会见到如下代码:

/*HMC5883L Triple Axis Digital Compass. Simple Example.Read more: http://www.jarzebski.pl/arduino/czujniki-i-sensory/3-osiowy-magnetometr-hmc5883l.htmlGIT: /jarzebski/Arduino-HMC5883LWeb: http://www.jarzebski.pl(c) by Korneliusz Jarzebski*/#include <Wire.h>#include <HMC5883L.h>HMC5883L compass;void setup(){Serial.begin(9600);// Initialize HMC5883LSerial.println("Initialize HMC5883L");while (!compass.begin()){Serial.println("Could not find a valid HMC5883L sensor, check wiring!");delay(500);}// Set measurement range// +/- 0.88 Ga: HMC5883L_RANGE_0_88GA// +/- 1.30 Ga: HMC5883L_RANGE_1_3GA (default)// +/- 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_1GAcompass.setRange(HMC5883L_RANGE_1_3GA);// Set measurement mode// Idle mode: HMC5883L_IDLE// Single-Measurement:HMC5883L_SINGLE// Continuous-Measurement: HMC5883L_CONTINOUS (default)compass.setMeasurementMode(HMC5883L_CONTINOUS);// Set data rate// 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 (default)// 30.00Hz: HMC5883L_DATARATE_30HZ// 75.00Hz: HMC5883L_DATARATE_75HZcompass.setDataRate(HMC5883L_DATARATE_15HZ);// Set number of samples averaged// 1 sample: HMC5883L_SAMPLES_1 (default)// 2 samples: HMC5883L_SAMPLES_2// 4 samples: HMC5883L_SAMPLES_4// 8 samples: HMC5883L_SAMPLES_8compass.setSamples(HMC5883L_SAMPLES_1);// Check settingscheckSettings();}void checkSettings(){Serial.print("Selected range: ");switch (compass.getRange()){case HMC5883L_RANGE_0_88GA: Serial.println("0.88 Ga"); break;case HMC5883L_RANGE_1_3GA: Serial.println("1.3 Ga"); break;case HMC5883L_RANGE_1_9GA: Serial.println("1.9 Ga"); break;case HMC5883L_RANGE_2_5GA: Serial.println("2.5 Ga"); break;case HMC5883L_RANGE_4GA: Serial.println("4 Ga"); break;case HMC5883L_RANGE_4_7GA: Serial.println("4.7 Ga"); break;case HMC5883L_RANGE_5_6GA: Serial.println("5.6 Ga"); break;case HMC5883L_RANGE_8_1GA: Serial.println("8.1 Ga"); break;default: Serial.println("Bad range!");}Serial.print("Selected Measurement Mode: ");switch (compass.getMeasurementMode()){ case HMC5883L_IDLE: Serial.println("Idle mode"); break;case HMC5883L_SINGLE: Serial.println("Single-Measurement"); break;case HMC5883L_CONTINOUS: Serial.println("Continuous-Measurement"); break;default: Serial.println("Bad mode!");}Serial.print("Selected Data Rate: ");switch (compass.getDataRate()){ case HMC5883L_DATARATE_0_75_HZ: Serial.println("0.75 Hz"); break;case HMC5883L_DATARATE_1_5HZ: Serial.println("1.5 Hz"); break;case HMC5883L_DATARATE_3HZ: Serial.println("3 Hz"); break;case HMC5883L_DATARATE_7_5HZ: Serial.println("7.5 Hz"); break;case HMC5883L_DATARATE_15HZ: Serial.println("15 Hz"); break;case HMC5883L_DATARATE_30HZ: Serial.println("30 Hz"); break;case HMC5883L_DATARATE_75HZ: Serial.println("75 Hz"); break;default: Serial.println("Bad data rate!");}Serial.print("Selected number of samples: ");switch (compass.getSamples()){ case HMC5883L_SAMPLES_1: Serial.println("1"); break;case HMC5883L_SAMPLES_2: Serial.println("2"); break;case HMC5883L_SAMPLES_4: Serial.println("4"); break;case HMC5883L_SAMPLES_8: Serial.println("8"); break;default: Serial.println("Bad number of samples!");}}void loop(){Vector raw = compass.readRaw();Vector norm = compass.readNormalize();Serial.print(" Xraw = ");Serial.print(raw.XAxis);Serial.print(" Yraw = ");Serial.print(raw.YAxis);Serial.print(" Zraw = ");Serial.print(raw.ZAxis);Serial.print(" Xnorm = ");Serial.print(norm.XAxis);Serial.print(" Ynorm = ");Serial.print(norm.YAxis);Serial.print(" ZNorm = ");Serial.print(norm.ZAxis);Serial.println(); delay(100);}

如果觉得《Arduino Uno + HMC5883L电子罗盘 实验》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。