91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何制作數(shù)字指南針

454398 ? 來(lái)源:wv ? 2019-10-12 14:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

第1步:所需零件

對(duì)于此項(xiàng)目,您將只需要一個(gè)Arduino開發(fā)板和一個(gè)MEMS磁力計(jì)即可測(cè)量地磁場(chǎng)。我將使用包含MC5883L 3軸磁力計(jì)的GY – 80分支板。

在繼續(xù)執(zhí)行該項(xiàng)目的源代碼之前,如果您需要更多詳細(xì)信息,請(qǐng)參見(jiàn)MEMS磁力計(jì)如何工作以及如何通過(guò)I2C通信連接和使用GY-80接線板,

第2步:Arduino源代碼

我們首先需要做的是將草圖上傳到Arduino板,該板將讀取來(lái)自磁力計(jì)的數(shù)據(jù),并將其發(fā)送到Processing IDE。這是Arduino源代碼:

/* Arduino Compass

*

* by Dejan Nedelkovski,

* www.HowToMechatronics.com

*

*/

#include //I2C Arduino Library

#define Magnetometer_mX0 0x03

#define Magnetometer_mX1 0x04

#define Magnetometer_mZ0 0x05

#define Magnetometer_mZ1 0x06

#define Magnetometer_mY0 0x07

#define Magnetometer_mY1 0x08

int mX0, mX1, mX_out;

int mY0, mY1, mY_out;

int mZ0, mZ1, mZ_out;

float heading, headingDegrees, headingFiltered, declination;

float Xm,Ym,Zm;

#define Magnetometer 0x1E //I2C 7bit address of HMC5883

void setup(){

//Initialize Serial and I2C communications

Serial.begin(115200);

Wire.begin();

delay(100);

Wire.beginTransmission(Magnetometer);

Wire.write(0x02); // Select mode register

Wire.write(0x00); // Continuous measurement mode

Wire.endTransmission();

}

void loop(){

//---- X-Axis

Wire.beginTransmission(Magnetometer); // transmit to device

Wire.write(Magnetometer_mX1);

Wire.endTransmission();

Wire.requestFrom(Magnetometer,1);

if(Wire.available()《=1)

{

mX0 = Wire.read();

}

Wire.beginTransmission(Magnetometer); // transmit to device

Wire.write(Magnetometer_mX0);

Wire.endTransmission();

Wire.requestFrom(Magnetometer,1);

if(Wire.available()《=1)

{

mX1 = Wire.read();

}

//---- Y-Axis

Wire.beginTransmission(Magnetometer); // transmit to device

Wire.write(Magnetometer_mY1);

Wire.endTransmission();

Wire.requestFrom(Magnetometer,1);

if(Wire.available()《=1)

{

mY0 = Wire.read();

}

Wire.beginTransmission(Magnetometer); // transmit to device

Wire.write(Magnetometer_mY0);

Wire.endTransmission();

Wire.requestFrom(Magnetometer,1);

if(Wire.available()《=1)

{

mY1 = Wire.read();

}

//---- Z-Axis

Wire.beginTransmission(Magnetometer); // transmit to device

Wire.write(Magnetometer_mZ1);

Wire.endTransmission();

Wire.requestFrom(Magnetometer,1);

if(Wire.available()《=1)

{

mZ0 = Wire.read();

}

Wire.beginTransmission(Magnetometer); // transmit to device

Wire.write(Magnetometer_mZ0);

Wire.endTransmission();

Wire.requestFrom(Magnetometer,1);

if(Wire.available()《=1)

{

mZ1 = Wire.read();

}

//---- X-Axis

mX1=mX1《《8;

mX_out =mX0+mX1; // Raw data

// From the datasheet: 0.92 mG/digit

Xm = mX_out*0.00092; // Gauss unit

//* Earth magnetic field ranges from 0.25 to 0.65 Gauss, so these are the values that we need to get approximately.

//---- Y-Axis

mY1=mY1《《8;

mY_out =mY0+mY1;

Ym = mY_out*0.00092;

//---- Z-Axis

mZ1=mZ1《《8;

mZ_out =mZ0+mZ1;

Zm = mZ_out*0.00092;

// ==============================

//Calculating Heading

heading = atan2(Ym, Xm);

// Correcting the heading with the declination angle depending on your location

// You can find your declination angle at: http://www.ngdc.noaa.gov/geomag-web/

// At my location it‘s 4.2 degrees =》 0.073 rad

declination = 0.073;

heading += declination;

// Correcting when signs are reveresed

if(heading 《0) heading += 2*PI;

// Correcting due to the addition of the declination angle

if(heading 》 2*PI)heading -= 2*PI;

headingDegrees = heading * 180/PI; // The heading in Degrees unit

// Smoothing the output angle / Low pass filter

headingFiltered = headingFiltered*0.85 + headingDegrees*0.15;

//Sending the heading value through the Serial Port to Processing IDE

Serial.println(headingFiltered);

delay(50);

}

步驟3:處理IDE源代碼

在我們上傳了之前的Arduino草圖之后,我們需要將數(shù)據(jù)接收到Processing IDE中并繪制Digital Compass。指南針由背景圖像,箭頭的固定圖像和指南針主體的旋轉(zhuǎn)圖像組成。因此,使用Arduino計(jì)算出的耳磁場(chǎng)的值將用來(lái)旋轉(zhuǎn)羅盤。

以下是Processing IDE的源代碼:

/* Arduino Compass

*

* by Dejan Nedelkovski,

* www.HowToMechatronics.com

*

*/

import processing.serial.*;

import java.awt.event.KeyEvent;

import java.io.IOException;

Serial myPort;

PImage imgCompass;

PImage imgCompassArrow;

PImage background;

String data=“”;

float heading;

void setup() {

size (1920, 1080, P3D);

smooth();

imgCompass = loadImage(“Compass.png”);

imgCompassArrow = loadImage(“CompassArrow.png”);

background = loadImage(“Background.png”);

myPort = new Serial(this, “COM4”, 115200); // starts the serial communication

myPort.bufferUntil(’ ‘);

}

void draw() {

image(background,0, 0); // Loads the Background image

pushMatrix();

translate(width/2, height/2, 0); // Translates the coordinate system into the center of the screen, so that the rotation happen right in the center

rotateZ(radians(-heading)); // Rotates the Compass around Z - Axis

image(imgCompass, -960, -540); // Loads the Compass image and as the coordinate system is relocated we need need to set the image at -960x, -540y (half the screen size)

popMatrix(); // Brings coordinate system is back to the original position 0,0,0

image(imgCompassArrow,0, 0); // Loads the CompassArrow image which is not affected by the rotateZ() function because of the popMatrix() function

textSize(30);

text(“Heading: ” + heading,40,40); // Prints the value of the heading on the screen

delay(40);

}

// starts reading data from the Serial Port

void serialEvent (Serial myPort) {

data = myPort.readStringUntil(’ ‘);// reads the data from the Serial Port and puts it into the String variable “data”。

heading = float(data); // Convering the the String value into Float value

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 指南針
    +關(guān)注

    關(guān)注

    2

    文章

    17

    瀏覽量

    11174
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    數(shù)字孿生選型指南:為什么我建議你先看這五個(gè)維度

    一份面向制造企業(yè)的數(shù)字孿生平臺(tái)選型指南。圍繞數(shù)據(jù)、性能、擴(kuò)展、案例、成本五大要點(diǎn),提供可直接落地的判斷標(biāo)準(zhǔn),幫助 CTO、生產(chǎn)與信息化負(fù)責(zé)人高效選型、少走彎路。
    的頭像 發(fā)表于 02-27 13:57 ?183次閱讀
    <b class='flag-5'>數(shù)字</b>孿生選型<b class='flag-5'>指南</b>:為什么我建議你先看這五個(gè)維度

    LDC1001電感數(shù)字轉(zhuǎn)換器:特性、應(yīng)用與設(shè)計(jì)指南

    LDC1001電感數(shù)字轉(zhuǎn)換器:特性、應(yīng)用與設(shè)計(jì)指南 引言 在電子設(shè)計(jì)領(lǐng)域,對(duì)于金屬目標(biāo)的線性或角位置進(jìn)行精確測(cè)量是許多應(yīng)用中的關(guān)鍵需求。LDC1001電感數(shù)字轉(zhuǎn)換器憑借其獨(dú)特的特性和廣泛的應(yīng)用場(chǎng)
    的頭像 發(fā)表于 02-11 17:00 ?564次閱讀

    電容隔離技術(shù)優(yōu)勢(shì)解析與乾鴻微全系列數(shù)字隔離器產(chǎn)品指南

    電容隔離技術(shù)優(yōu)勢(shì)解析與乾鴻微全系列數(shù)字隔離器產(chǎn)品指南
    的頭像 發(fā)表于 01-23 16:43 ?249次閱讀
    電容隔離技術(shù)優(yōu)勢(shì)解析與乾鴻微全系列<b class='flag-5'>數(shù)字</b>隔離器產(chǎn)品<b class='flag-5'>指南</b>

    井下定向不再難!小型化快速尋北系統(tǒng),賦能智慧礦山精準(zhǔn)掘進(jìn)

    、精準(zhǔn)、可靠的自主定向,成為礦山智能化升級(jí)中一道亟待攻克的技術(shù)難關(guān)。 二、顛覆性突破:全固態(tài)MEMS尋北,無(wú)需外界信號(hào)的“地下指南針” ER-MNS-04A/B 快速對(duì)準(zhǔn)尋北系統(tǒng)應(yīng)運(yùn)而生,憑借自主尋北、全固態(tài)抗振、小巧易集成三大特性
    的頭像 發(fā)表于 01-15 16:05 ?188次閱讀

    手持智能掃碼器選型指南:功能參數(shù) + 行業(yè)應(yīng)用

    門店、制造車間等 8 大應(yīng)用場(chǎng)景,附選型指南與實(shí)用案例,幫企業(yè)快速選型,解決盤點(diǎn)慢、數(shù)據(jù)錯(cuò)、效率低等問(wèn)題,實(shí)現(xiàn)線下動(dòng)作數(shù)字化追蹤。
    的頭像 發(fā)表于 01-09 15:50 ?737次閱讀
    手持智能掃碼器選型<b class='flag-5'>指南</b>:功能參數(shù) + 行業(yè)應(yīng)用

    GNSS 衛(wèi)星導(dǎo)航信號(hào)模擬器:無(wú)人機(jī)精準(zhǔn)飛行的 “隱形考官”?

    在無(wú)人機(jī)技術(shù)飛速發(fā)展的今天,從農(nóng)業(yè)植保、電力巡檢到物流配送,無(wú)人機(jī)的應(yīng)用場(chǎng)景日益廣泛。而精準(zhǔn)的定位與導(dǎo)航,是無(wú)人機(jī)完成各項(xiàng)任務(wù)的核心保障。GNSS(全球?qū)Ш叫l(wèi)星系統(tǒng))作為無(wú)人機(jī)定位的 “指南針”,其
    的頭像 發(fā)表于 01-07 16:32 ?264次閱讀

    Infineon ISOFACE? 雙通道數(shù)字隔離器評(píng)估板使用指南

    Infineon ISOFACE? 雙通道數(shù)字隔離器評(píng)估板使用指南 在高壓應(yīng)用中,隔離技術(shù)至關(guān)重要,它不僅能保障安全,還能提升電氣抗噪能力。英飛凌科技推出的 ISOFACE? 雙通道數(shù)字隔離器
    的頭像 發(fā)表于 12-20 10:05 ?784次閱讀

    Amphenol數(shù)字紅外探測(cè)器評(píng)估套件使用指南

    Amphenol數(shù)字紅外探測(cè)器評(píng)估套件使用指南 在電子設(shè)計(jì)領(lǐng)域,紅外探測(cè)器的應(yīng)用越來(lái)越廣泛。Amphenol的數(shù)字紅外探測(cè)器評(píng)估套件(Digital IR EVM KIT,Part No.
    的頭像 發(fā)表于 12-11 09:20 ?567次閱讀

    ?STMicroelectronics LPS28DFW 數(shù)字氣壓計(jì)技術(shù)深度解析與應(yīng)用指南

    STMicroelectronics LPS28DFW絕對(duì)數(shù)字輸出壓力計(jì)是一款超緊湊型壓阻式絕對(duì)壓力傳感器,可用作數(shù)字輸出氣壓計(jì)。LPS28DFW將傳感元件與通過(guò)I^2^C或MIPI I3CSM接口(從傳感元件到應(yīng)用程序)進(jìn)行通信的IC接口結(jié)合在一起。
    的頭像 發(fā)表于 10-31 11:24 ?630次閱讀
    ?STMicroelectronics LPS28DFW <b class='flag-5'>數(shù)字</b>氣壓計(jì)技術(shù)深度解析與應(yīng)用<b class='flag-5'>指南</b>

    ?ILPS22QS數(shù)字氣壓計(jì)技術(shù)深度解析與應(yīng)用指南

    STMicroelectronics ILPS22QS絕對(duì)數(shù)字輸出壓力計(jì)是一款超緊湊型壓阻式絕對(duì)壓力傳感器,可用作數(shù)字輸出氣壓計(jì)。ILPS22QS支持高達(dá)4060hPa用戶可選雙滿量程。ILPS22QS具有超低壓力噪聲和極低功耗。
    的頭像 發(fā)表于 10-31 11:17 ?644次閱讀
    ?ILPS22QS<b class='flag-5'>數(shù)字</b>氣壓計(jì)技術(shù)深度解析與應(yīng)用<b class='flag-5'>指南</b>

    如何制作字母數(shù)字鍵盤?

    制作字母數(shù)字鍵盤
    發(fā)表于 09-05 07:24

    MEMS陀螺儀有哪些分類?

    你是否好奇,手機(jī)里的指南針、無(wú)人機(jī)穩(wěn)定的飛行姿態(tài),甚至火箭精準(zhǔn)的導(dǎo)航,背后都離不開一個(gè)微型“旋轉(zhuǎn)感知器”?這就是MEMS陀螺儀!它憑借小巧身材、低廉成本和優(yōu)異性能,正在取代笨重的傳統(tǒng)陀螺儀,深入我們
    的頭像 發(fā)表于 07-21 15:58 ?1064次閱讀

    《工業(yè)企業(yè)和園區(qū)數(shù)字化能碳管理中心建設(shè)指南》發(fā)布 安科瑞能碳管理系統(tǒng)助力綠色智造新時(shí)代 ——政策落

    一、政策引領(lǐng):數(shù)字化能碳管理成工業(yè)轉(zhuǎn)型核心任務(wù) 近日,工信部正式印發(fā)《工業(yè)企業(yè)和園區(qū)數(shù)字化能碳管理中心建設(shè)指南》(下稱《指南》),明確提出構(gòu)建“數(shù)據(jù)驅(qū)動(dòng)、智能管控、全景可視”的能碳管理
    的頭像 發(fā)表于 07-18 15:25 ?640次閱讀
    《工業(yè)企業(yè)和園區(qū)<b class='flag-5'>數(shù)字</b>化能碳管理中心建設(shè)<b class='flag-5'>指南</b>》發(fā)布 安科瑞能碳管理系統(tǒng)助力綠色智造新時(shí)代 ——政策落

    東映攜手奧拓刷新日本影視制作數(shù)字化標(biāo)桿

    近日,由奧拓電子全程深度參與打造的“東映虛擬影棚”已正式發(fā)布啟用。這座凝聚前沿科技的虛擬影棚,不僅以640㎡的規(guī)模成為日本之最,更憑借頂尖技術(shù)配置,刷新了日本影視制作數(shù)字化標(biāo)桿。作為日本首個(gè)由電影
    的頭像 發(fā)表于 06-04 15:21 ?1131次閱讀

    01V96V2數(shù)字調(diào)音臺(tái)中文快速指南

    電子發(fā)燒友網(wǎng)站提供《01V96V2數(shù)字調(diào)音臺(tái)中文快速指南.pdf》資料免費(fèi)下載
    發(fā)表于 03-26 14:19 ?0次下載