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

实验效果

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

BOM表

Arduino Uno  *  1

HMC5883L(gy-273) * 1

跳线若干

接线图

Arduino Uno            <---->   HMC5883L

5v                               <---->             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.htmlGIT: https://github.com/jarzebski/Arduino-HMC5883LWeb: http://www.jarzebski.pl(c) 2014 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电子罗盘 实验相关推荐

  1. Arduino Uno 火焰传感器实验

    火焰传感器 火焰燃烧的时候会产生一种紫外线,火焰传感器对这非常灵敏,所以能检测出火焰. 实验效果 当打火机点燃的时候,传感器输出的数值变小,越是靠近,数值越小. BOM表 Arduino Uno   ...

  2. ESP32cam蓝牙模块与arduino uno通信实验

    网上关于esp32cam与arduino通信的资料几乎没有,有的还得付费,于是自己动手琢磨,实验成功. 实验有多个版本,成功实现蓝牙收到数据后发送单个字符给arduino板,匹配到对应字符亮对应颜色的 ...

  3. Arduino Uno + 光耦继电器 弱电控制强电 实验

    这个弱电控制强电,隔离等作用等等 关于常闭,常开,不同模块位置不同,请用万用表蜂鸣档测试,确认正确的常开端和常闭端. 实验效果 用光耦继电器控制LED的亮和灭 BOM表 Arduino Uno     ...

  4. Arduino Uno 送你一首葫芦娃 无源蜂鸣器实验

    本次实验使用的是无源蜂鸣器,播放一首葫芦娃 无源指的是不包含振荡源, 相对于有源蜂鸣器,就是包含振荡源. 无源需要2k-5k的方波来驱动发声,所以音色多变. 有源则通电就能蜂鸣,发音频率固定,音色单一 ...

  5. Arduino uno + mpu6050 陀螺仪 运用卡尔曼滤波姿态解算实验

    MPU6050六轴陀螺仪 作用于四轴无人机,平衡车,机器人等等的电子实作当中,用于姿态判断,掌握了可以发挥自己的想象完成更多更有趣的作品. 本例程输出XYZ的角度,正负90度. 运用卡尔曼滤波算法解算 ...

  6. arduino UNO 与 超声波测距模块 实验详情

    US-015 超声波测距模块 超声波传感器 US-020升级版 送全套资料 资料下载地址:http://pan.baidu.com/s/1c0AfkIG US-015超声波测距模块 1. 概述 US- ...

  7. Arduino UNO + Proteus串口通讯仿真实验

    Arduino UNO + Proteus串口通讯仿真实验 准备工作 需要借助虚拟串口软件(Virtual Serial Port Driver),创建2个虚拟串口 具体软件下载和教程:http:// ...

  8. Arduino Uno 无声无息的开关 固态继电器(四引脚)的实验

    最近在做一个项目,需要在睡觉的时候用到继电器, 但普通继电器开关的时候会有啪啪啪的声音,估计会影响睡死过去的我 所以就找到了这种无声的--固态继电器(直流控制直流类型) 可能又是一个太简单太基础的电子 ...

  9. 利用AVR单片机 专用下载 USBtinyISP对Arduino UNO下载程序

    简 介: 测试了利用USBtinyISP对于Arduino UNO,也就是ATmega系列的单片机下载Bootloader的过程.通过测试可以看到,利用USBtinyISP可以更快的下载ATmega系 ...

  10. 从0 开始 DIY你的Arduino UNO

    简 介: 通过实验,验证了利用CH340C制作Arduino UNO最小系统的电路正确性.利用Arduino的IDE对于制作的电路板下载Bootloader的时候,选择开发板为Arduino UNO, ...

最新文章

  1. 从原理到落地,七大维度读懂协同过滤推荐算法
  2. MySQL存储过程---动态的表名
  3. 如何造出逼真图像?南洋理工Zheng博士论文《基于深度生成学习的逼真图像合成》197页pdf阐述视觉合成工作...
  4. 青龙面板多容器教程、一键多容器
  5. 现代操作系统: 第五章 输入/输出
  6. Python的重要模块:collections (namedtuple、defaultdict、deque、Counter、OrderedDict、ChainMap)
  7. mysql+phpmyadmin配置流程
  8. 这6个地方不去简直太可惜!
  9. Java注释是一个大错误
  10. 遭做空后又被律所调查 贾跃亭的FF上市不到3个月股价已近腰斩
  11. python装饰器之函数作用域
  12. 机器人SLAM建图地图类型讨论
  13. 简单实现x的n次方pta_Day12 :数值的整数次方
  14. 几种常用的抽奖方案综述(草稿)
  15. 全球数据共享网站集合
  16. 【cocos2d-x入门实战】微信飞机大战之一:搞个飞机来玩玩
  17. 基于区块链的分布式金融网络
  18. 前端面试题集锦——前端综合问题
  19. 闲来无事,做个了批量看图的页面
  20. 火星人敏捷开发1001问(第二季)-陈勇-专题视频课程

热门文章

  1. 华硕电脑光驱位换成固态硬盘
  2. 学校计算机网络管理员面试,网络管理员面试题及答案
  3. 推荐一款2.5v 基准 电压源 芯片
  4. 学计算机电脑硬盘容量多大好,电脑系统盘应该分多大空间最合适,赶紧学习一下...
  5. 警察抓小偷打字游戏JAVA_警察抓小偷打字游戏金山打字通游戏
  6. 识图php,PHP利用百度识图接口把百度当图床
  7. erp和php数据对接,ERP系统与PLC数据对接方法
  8. win10登陆界面如何截屏
  9. sqlite3驱动文件
  10. 计算机金山打字基础,金山打字通电脑版