Prog Shield Kompas HMC5883

Fra HTX Arduino
Spring til navigation Spring til 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.

Placeringen af kompasset på Shieldet - som vi har loddet stikket på !!

Referencer

Programmerings-Shield
Programmerings-Shield Analogt Keyboard - Display - LED'er - Trykknapper - Analog - LM35 - Fugt Sensor - Servo Motor - RF-Transmitter - RF-Receiver - LED-Matrix - RFID-læser - IR-Modtager - GPS1 - GPS2 - Step Motor - Matrix Tastatur - Ultralyd Afstandsmåler - XY Joystick - LED Strip
I2C Enheder I2C Display - Barometer BMP085 - Barometer BMP180 - Accelerometer MMA7660 - Gyroskop MPU6050 - Kompas HMC5883 - Real Time Clock DS1307 - Real Time Clock DS3231 - I2C
Grundlæggende Oversigt - Monteringsvejledning - Testprogram - Programmering Shield Gammel version