Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade
A bússola digital é um dispositivo essencial em muitas aplicações de navegação e orientação, tanto em projetos de hobby quanto em soluções profissionais. Utilizando um sensor magnético, como o HMC5883L, podemos criar uma bússola digital precisa e confiável com a plataforma Arduino. Este artigo irá guiá-lo na construção de uma bússola digital, explicando a importância do projeto, os componentes necessários e fornecendo exemplos de código para facilitar a implementação.
Project: O objetivo deste projeto é construir uma bússola digital utilizando um sensor magnético HMC5883L e um display LCD para mostrar a direção em que a bússola está apontando. A bússola digital será capaz de detectar e exibir a direção norte, sul, leste e oeste, bem como as direções intermediárias. Este projeto é ideal para quem deseja aprender mais sobre sensores magnéticos e sua integração com o Arduino.
Components List:
Examples:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <HMC5883L.h>
// Inicializa o display LCD com o endereço I2C 0x27
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Inicializa o sensor HMC5883L
HMC5883L compass;
void setup() {
// Inicializa a comunicação I2C
Wire.begin();
// Inicializa o LCD
lcd.begin();
lcd.backlight();
// Inicializa o sensor HMC5883L
compass = HMC5883L();
compass.SetScale(HMC5883L_SCALE_1GA);
compass.SetMeasurementMode(HMC5883L_CONTINOUS);
lcd.setCursor(0, 0);
lcd.print("Bussola Digital");
delay(2000);
lcd.clear();
}
void loop() {
// Lê os valores do sensor
MagnetometerRaw raw = compass.ReadRawAxis();
MagnetometerScaled scaled = compass.ReadScaledAxis();
// Calcula o heading (direção)
float heading = atan2(scaled.YAxis, scaled.XAxis);
// Ajusta o heading para estar entre 0 e 360 graus
if (heading < 0) {
heading += 2 * PI;
}
if (heading > 2 * PI) {
heading -= 2 * PI;
}
// Converte de radianos para graus
float headingDegrees = heading * 180/M_PI;
// Exibe a direção no LCD
lcd.setCursor(0, 0);
lcd.print("Heading: ");
lcd.print(headingDegrees);
lcd.print(" deg");
delay(500);
}
Comentários do Código:
#include <Wire.h>
: Inclui a biblioteca Wire para comunicação I2C.#include <LiquidCrystal_I2C.h>
: Inclui a biblioteca para controle do display LCD via I2C.#include <HMC5883L.h>
: Inclui a biblioteca para o sensor HMC5883L.LiquidCrystal_I2C lcd(0x27, 16, 2);
: Inicializa o display LCD com o endereço I2C 0x27.HMC5883L compass;
: Declara um objeto para o sensor HMC5883L.void setup()
: Configurações iniciais, incluindo inicialização do display LCD e do sensor HMC5883L.void loop()
: Loop principal onde os valores do sensor são lidos, processados e exibidos no LCD.