Prog Shield Kompas HMC5883

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
- ↑ Datablad til Magnetisk kompas HMC5883L
- ↑ Bibliotek til HMC5883L skrevet af Korneliusz Jarzebski