Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade

Construindo uma Bússola Digital com Arduino

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:

  • 1x Arduino Uno
  • 1x Sensor Magnético HMC5883L
  • 1x Display LCD 16x2 com interface I2C
  • 1x Protoboard
  • Fios de conexão

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.

To share Download PDF

Gostou do artigo? Deixe sua avaliação!
Sua opinião é muito importante para nós. Clique em um dos botões abaixo para nos dizer o que achou deste conteúdo.