Arduino Uno + HMC5883L电子罗盘 实验
2016-12-31 00:42
288 查看
先实现 HMC5883L 电子罗盘 简单的数据读取实验
HMC5883L(gy-273) * 1
跳线若干
5v <----> VCC
GND <----> GND
A5(SCL) <----> SCL
A4(SDA) <----> SDA
把文件夹保存在libraries 文件夹里
打开Arduino IDE --> 文件 --> 示例 --> Arduino-HMC5883L-master --> HMC5883L_simple
就会见到如下代码:
实验效果
本实验,简单显示从HMC5883L 读取到的数据BOM表
Arduino Uno * 1HMC5883L(gy-273) * 1
跳线若干
接线图
Arduino Uno <----> HMC5883L5v <----> VCC
GND <----> GND
A5(SCL) <----> SCL
A4(SDA) <----> SDA
开源程序
下载库文件 https://github.com/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.html GIT: https://github.com/jarzebski/Arduino-HMC5883L Web: http://www.jarzebski.pl (c) 2014 by Korneliusz Jarzebski */ #include <Wire.h> #include <HMC5883L.h> HMC5883L compass; void setup() { Serial.begin(9600); // Initialize HMC5883L Serial.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_1GA compass.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_75HZ compass.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_8 compass.setSamples(HMC5883L_SAMPLES_1); // Check settings checkSettings(); } 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 2.4G通信实验 nRF24L01模块的简单例子
- arduino can总线实验,开源调试软件的串口数据包协议。
- Arduino 编程相关 中断实验
- Arduino第五次实验---NOKIA手机蓝牙控制小车前进
- Arduino实例2-LED 闪烁实验
- 基于 Arduino 的 RFID 识别实验
- [笔记]Arduino平台使用US-100超声波测距模块的电平模式测距实验
- Arduino第四次实验—自动垃圾清除车-中断代码调式
- 板载LED实验----记录学习Arduino
- Arduino 和 MQ-135 空气污染气体传感器 实验
- [笔记]Arduino平台使用US-100超声波测距模块的串口模式测距实验
- mpu6050 arduino串口 通讯在ros下的可视化实验
- [笔记]Arduino平台使用US-100超声波测距模块的串口模式测温实验
- Arduino 和LCD1602液晶屏 I2C接口实验
- Arduino入门之数码管实验
- Arduino学习(五) 蜂鸣器实验
- Arduino系列教程-016 74HC595实验
- Arduino 实验2 - 控制LED闪烁
- arduino实验日记
- Arduino系列教程-04 广告灯效果实验