Prog Shield Kompas HMC5883

Fra Holstebro HTX Wiki
Skift til: navigering, søgning
Digitalt magnetisk kompas

Denne side beskriver et digitalt kompas HMC5883L[1], det kan måle magnetfeltet i 3 akser x, y og z.

Software

Denne testsoftware baseres på et bibliotek fra GitHub[2] Biblioteket kan hentes i denne ZIP-fil. Biblioteket downloades og installeres som beskrevet under Arduinos biblioteker.

Testsoftwaren er skrevet ud fra et af eksemplerne i biblioteket, og den kan hentes fra denne ZIP-fil.

Anvendelsen af softwaren

Som alle andre biblioteker skal der sættes de grundlæggende ting op for at kontakte biblioteket og definere et objekt med kompasset som vist her:

#include <Wire.h>
#include <HMC5883L.h>

HMC5883L compass;

Inde i setup() skal der sættes gang i objektet ved hjælp af begin-metoden som vist her:

void setup() {
  Serial.begin(9600);

  // Initialize Initialize HMC5883L
  while (!compass.begin())
  {
    delay(500);
  }

  // Set measurement range
  compass.setRange(HMC5883L_RANGE_1_3GA);

  // Set measurement mode
  compass.setMeasurementMode(HMC5883L_CONTINOUS);

  // Set data rate
  compass.setDataRate(HMC5883L_DATARATE_30HZ);

  // Set number of samples averaged
  compass.setSamples(HMC5883L_SAMPLES_8);
}

I loop() læses de rå data fra kompasset, og de udskrives til den serielle monitor.

void loop() {
  Vector mag = compass.readRaw();

  Serial.print(mag.XAxis);
  Serial.print(" : ");
  Serial.print(mag.YAxis);
  Serial.print(" : ");
  Serial.println(mag.ZAxis);
}

Yderligere muligheder i softwaren

Der ligger yderligere muligheder i klassen man kan anvende, hvis man ønsker andre måder at anvende kompasset på:

	bool begin(void);

	Vector readRaw(void);
	Vector readNormalize(void);

	void  setOffset(int xo, int yo);

	void  setRange(hmc5883l_range_t range);
	hmc5883l_range_t getRange(void);

	void  setMeasurementMode(hmc5883l_mode_t mode);
	hmc5883l_mode_t getMeasurementMode(void);

	void  setDataRate(hmc5883l_dataRate_t dataRate);
	hmc5883l_dataRate_t getDataRate(void);

	void  setSamples(hmc5883l_samples_t samples);
	hmc5883l_samples_t getSamples(void);

Hardware

Princippet i kompasset er at det arbejder på I2C, hvor det har adressen 0x1E. Via I2C kan det forskellige aflæses i kompasset.

Layout

Kompassets placering på programmerings-shieldet kan ses her:

OBS - OBS - Modulet skal vende omvendt af det der er angivet på layoutet på printet, da stikket er loddet omvendt på. Den rigtige måde er angivet på tegningen herunder.
Layout-HMC5883-kompas.png
Placeringen af kompasset på Shieldet - som vi har loddet stikket på !!

Referencer