Kit Arduino Uno

Instalação

Objetivo:

Familiarização com placa Arduino compatível UNO (Fig.1) e exemlo de utilização usando o IDE Arduino.

Lista de material:

usb_cable.jpg arduino_board.jpg

(a)

(b)
Fig.1 - Conjunto de desenvolvimento composto por cabo USB (a) e placa Arduino compatível UNO (b).
Software
b7Xe2cV.png board-ide0.png
Fig.2 - Software IDE Arduino.

O software IDE (Integrated Development Environment) Arduino é uma aplicação multiplataforma que permite desenvolver programas e carregue-los para a placa de desenvolvimento, cuja instalação se recomenda [8], e se assume por diante (Fig.2).

Contextualização:

Placa Arduino compatível UNO 

A placa Arduino compatível UNO contém um microcontrolador e um chip USB para série CH340 (Fig.3).

Um microcontrolador é um componente que contém um ou mais processadores, uma memória e interface compatível com entrada e saída de periféricos que permite processar dados e executar tarefas de informática básica.

A placa Arduino compatível UNO dispõe de duas formas de ser alimentada. A primeira é por meio da conexão com cabo USB tipo A (Fig.1 (a)), que pode ser conectado a um computador, sendo por essa conexão, também possível enviar software para a placa.

board_subtitled2.png board_drawing.png
a botão de reset
b conector USB
c fonte de alimentação
d conectores de alimentação elétrica
e entradas analógicas
f conexões digitais
g indicador LED de energia
h indicadores LED de estado de comunicação série RX/TX 
i indicador LED programável
Fig.3 - Elementos principais selecionados de placa Arduino compatível UNO.
Gestor de placas

O pacote Arduino AVR Boards, deve estar instalado no IDE Arduino de forma a que se possa compilar e transferir programas para a placa Arduino compatível UNO. Tal como ilustrado na Fig.4, o IDE Arduino dispõe de um gestor de placas, que permite gerir e instalar pacotes para várias placas de desenvlvimento.

board_ide1.png board_ide2.png
Fig.4 - Exemplo de utilização de gestor de placas do IDE Arduino para instalação de pacote Arduino AVR Boards.
Configuração da placa

Tal como ilustrado na Fig.5, o IDE Arduino permite a seleção da placa e da porta lógica onde está conectada a placa.

mdLUtEA.png cOL8uZU.png
(a) (b)
gR2ft4p.png 9bJYHY2.png
(c) (d)
Fig.5 - Exemplo de utilização do IDE Arduino para configuração da placa de desenvolvimento Arduino compatível UNO.

Por vezes, dependendo das características particulares do sistema usado, a placa de desenvolvimento Arduino compatível UNO pode não ser automaticamente reconhecida. Na eventualidade da placa ligada ao computador através de cabo USB não aparecer na lista de portas lógicas listadas no IDE Arduino (Fig.5 (b)), sugere-se a instalação dos drivers do CH340, tal como em [7].

Exemplo de utilização (Pisca LED):

Um exemplo clássico para iniciar a programação de placa Arduino e placas compatíveis é o Pisca LED, que consiste em ligar e desligar um LED em intervalos de 1 segundo (Fig.7). 

Um programa é composto de uma sequência de comandos, normalmente escritos em um arquivo de texto. 

Considerando o IDE Arduino previamente configurado para a placa de desenvolvimento ligada ao computador e o seguinte programa de exemplo (Código.1), sugere-se a consulta da Fig.6 para reprodução do exemplo de programação do Arduino compatível UNO.

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   
  delay(1000);                       
  digitalWrite(LED_BUILTIN, LOW);    
  delay(1000);                       
}
Código.1 - Programa Pisca LED.
q3yo3F3.png Q8s2IVM.png
board_ide5.png board_ide6.png
Fig.6 - Ilustração da programação da placa Arduino compatível UNO com o IDE Arduino.
uno.gif
Fig.7 - Exemplo de Arduino compatível UNO a executar o programa que controla o LED da placa de desenvolvimento.

Outros exemplos

w4QdtAr.png h8eDfvF.png orKSYyb.png
[a] [b] [c]

[a] DEEC - FCTUC. Kit Arduino Uno > [exemplo] módulo GPS.  url: https://kb.deec.uc.pt/books/deec/page/exemplo-modulo-gps (acedido em 10/04/2024).

[b] DEEC - FCTUC. Kit Arduino Uno > [exemplo] I2C OLED.  url: https://kb.deec.uc.pt/books/deec/page/exemplo-i2c-oled (acedido em 10/04/2024).

[c] DEEC - FCTUC. Kit Arduino Uno > [exemplo] rumo ao DEEC.  url: https://kb.deec.uc.pt/books/deec/page/exemplo-rumo-ao-deec (acedido em 10/04/2024).

Referências

[1] Arduino. Documentação de Referência da Linguagem Arduino. url: https://docs.arduino.cc/learn/programming/reference/ (acedido em 03/04/2024).

[2] Arduino. Introdução ao IDE (Integrated Development Environment) Arduino. url: https://docs.arduino.cc/software/ide-v2/tutorials/getting-started-ide-v2/ (acedido em 03/04/2024).

[3] Arduino. Introdução a Programação para Arduino. url: https://docs.arduino.cc/learn/programming/sketches/ (acedido em 03/04/2024).

[4] Arduino. Instalação do IDE Arduino. url: https://docs.arduino.cc/software/ide-v2/tutorials/getting-started/ide-v2-downloading-and-installing (acedido em 03/04/2024).

[5] Arduino. Instalação de Suporte para Placa no IDE. url: https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-board-manager (acedido em 03/04/2024).

[6] Arduino. Transferência de Sketches (Programas) para Placa Arduino. url: https://docs.arduino.cc/software/ide-v2/tutorials/getting-started/ide-v2-uploading-a-sketch (acedido em 03/04/2024).

[7] SparkFun. How to Install CH340 Drivers. url: https://learn.sparkfun.com/tutorials/how-to-install-ch340-drivers/all (acedido em 03/04/2024).

[8] Arduino. Downloads. url: https://www.arduino.cc/en/software (acedido em 10/04/2024).


[exemplo] módulo GPS

Objetivo:

Demonstrar o uso de módulo GPS (Global Positioning System) com Arduino para obter dados GPS.

Lista de material:

board_overview.png board_drawing.png
Fig.1 - Placa Arduino compatível UNO.
gps_mod.jpg R53TQnH.png
Fig.2 - Módulo GPS com interface UART/TTL.

Contextualização:

Sistema de posicionamento global

O sistema de posicionamento global, mais conhecido pela sigla GPS (em inglês Global Positioning System), é um sistema de navegação por satélite que fornece a um aparelho receptor móvel a sua posição, assim como o horário.

GPS24goldenSMALL.gif Hyperbolic_Navigation.svg Comparison_satellite_navigation_orbits.svg
Fig.3 - Apontamentos sobre GPS retirados de [2].
Set-up
70uITOr.png
placa Arduino compatível UNO
módulo GPS com interface UART/TTL
3.3V ---------------------- V
GND ---------------------- G
2 ---------------------- R
3 ---------------------- T
Fig.3 - Montagem ilustrativa das ligações a estabelecer entre placa de desenvolvimento e módulo GPS com interface UART/TTL.
Bibliotecas

Bibliotecas são coleções de código que perimitem ampliar a capacidade da placa de desenvolvimento facilitando a sua utilização. O IDE Arduino integra um gestor de Bibliotecas cujo uso se exemplifica na Fig.4.

A placa Arduino compatível UNO possui suporte integrado para comunicação série nos pinos 0 e 1. A Biblioteca SoftwareSerial permite estabelecer comunicação série nos restantes pinos digitais da placa. Neste exemplo sugere-se a utilização desta abordagem para proporcionar que o módulo GPS e a placa possam comunicar.

No exemplo abaixo, os pinos digitais 2 e 3 da placa Arduino compatível UNO são usados como linhas série RX e TX virtuais. 

Desta forma estabelece-se a ligação que permite que a placa escute a porta série do GPS e, quando os dados são recebidos do módulo, eles são enviados para placa. Sendo os dados comunicados pelo módulo GPS tipicamente numa linguagem padrão do GPS é comum o uso de Bibliotecas como a TinyGPSPlus para facilitar o uso da informação disponibilizada pelo módulo GPS num formato legível e útil.

oHv2Eft.png X2LQZxM.png
(a) (b)
Fig.4 - Exemplo de utilização do gestor de bibliotecas do IDE Arduino para instalação da Biblioteca TinyGPSPlus.
Programa
#include <SoftwareSerial.h>
#include <TinyGPSPlus.h>

SoftwareSerial gpsSerial(2, 3);  // RX, TX
TinyGPSPlus gps;

void setup() {
  gpsSerial.begin(9600);
  Serial.begin(115200);
}

void loop() {

  while (gpsSerial.available() > 0){
    if (gps.encode(gpsSerial.read()))
      displayInfo();
  }

  if (millis() > 5000 && gps.charsProcessed() < 10)
  {
    Serial.println(F("No GPS detected: check wiring."));
    while(true);
  }
}

void displayInfo() {
  Serial.print(F("Location: "));

  if (gps.location.isValid()) {
    Serial.print(gps.location.lat(), 12);
    Serial.print(F(","));
    Serial.print(gps.location.lng(), 12);

  } else {
    Serial.print(F("INVALID"));
  }

  Serial.print(F("  Date/Time: "));
  
  if (gps.date.isValid()) {
    Serial.print(gps.date.month());
    Serial.print(F("/"));
    Serial.print(gps.date.day());
    Serial.print(F("/"));
    Serial.print(gps.date.year());
  } else {
    Serial.print(F("INVALID"));
  }

  Serial.print(F(" "));
  
  if (gps.time.isValid()) {
    if (gps.time.hour() < 10) Serial.print(F("0"));
    Serial.print(gps.time.hour());
    Serial.print(F(":"));
    if (gps.time.minute() < 10) Serial.print(F("0"));
    Serial.print(gps.time.minute());
    Serial.print(F(":"));
    if (gps.time.second() < 10) Serial.print(F("0"));
    Serial.print(gps.time.second());
    Serial.print(F("."));
    if (gps.time.centisecond() < 10) Serial.print(F("0"));
    Serial.print(gps.time.centisecond());
  } else {
    Serial.print(F("INVALID"));
  }

  Serial.println();
}


Código.1 - Programa exemplo de utilização de módulo GPS e biblioteca TinyGPSPlus com placa Arduino compatível UNO.

[exemplo] módulo GPS

9JSllQV.png 45GQYAe.png
Fig.5 - Exemplo de utilização de módulo GPS com placa Arduino compatível UNO programada para processar os dados disponibilizados pelo módulo GPS e exibi-los através de comunicação série.

Outros exemplos

MMnvvKD.png h8eDfvF.png orKSYyb.png
[a] [b] [c]

[a] DEEC - FCTUC. Kit Arduino Uno > Instalação.  url: https://kb.deec.uc.pt/books/deec/page/instalacao-irK (acedido em 10/04/2024).

[b] DEEC - FCTUC. Kit Arduino Uno > [exemplo] I2C OLED.  url: https://kb.deec.uc.pt/books/deec/page/exemplo-i2c-oled (acedido em 10/04/2024).

[c] DEEC - FCTUC. Kit Arduino Uno > [exemplo] rumo ao DEEC.  url: https://kb.deec.uc.pt/books/deec/page/exemplo-rumo-ao-deec (acedido em 10/04/2024).

Referências

[1] Arduino. Software Serial Example. url: https://wiki-content.arduino.cc/en/Tutorial/LibraryExamples/SoftwareSerialExample (acedido em 11/04/2024).

[2] Wikipedia. Sistema de posicionamento global. url: https://pt.wikipedia.org/wiki/Sistema_de_posicionamento_global (acedido em 11/04/2024).

[exemplo] I2C OLED

Objetivo:

Demonstrar o uso de ecrã OLED com placa Arduino compatível UNO para exibir texto.

Lista de material:

board_overview.png board_drawing.png
Fig.1 - Placa Arduino compatível UNO.
oled.jpg olde_i2c.png
Fig.2 - Ecrã OLED (organic light-emitting diode) SSD1306 de 0,96 polegadas com resolução de 128×64.
Set-up
olde_i2c_ex.png
placa Arduino compatível UNO
ecrã OLED
3.3V ---------------------- VCC
GND ---------------------- GND
A4 ---------------------- SCA
A5 ----------------------- SDL
Fig.3 - Montagem ilustrativa das ligações a estabelecer entre placa de desenvolvimento e o ecrã OLED.
Biblioteca 
CZevjQJ.png lYBzNfV.png
9cxx0A2.png MClmUQY.png
Fig.4 - Exemplo de utilização do gestor de bibliotecas do IDE Arduino para instalação da Biblioteca Adafruit SSD1306.
Programa
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

// OLED display TWI address
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

int dummyVal = 0;

void setup() {
  // inicializa ecrã
  if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;); // Don't proceed, loop forever
  }
  display.clearDisplay();
  display.display();

  // imprime linha de texto
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(55, 30);
  display.print(F("..."));

  // actualiza ecrã
  display.display();
}

void loop() {
  display.clearDisplay();
  display.display();

  display.setTextSize(3);
  display.setTextColor(WHITE);
  display.setCursor(60, 25);

  if (dummyVal == 0) {
    display.print(F("\\"));
  }
  else if (dummyVal == 1) {
    display.print(F("|"));
  }
  else if (dummyVal == 2) {
    display.print(F("/"));
  }
  else if (dummyVal == 3) {
    display.print(F("-"));
  }

  if (dummyVal >= 3) {
    dummyVal = 0;
  }
  else {
    dummyVal = dummyVal + 1;
  }

  display.display();
}
Código.1 - Programa exemplo de utilização de ecrã OLED com placa Arduino compatível UNO para exibir texto
[exemplo] I2C OLED
dElvfCc.png 2oEmtMR.png Ui1VooD.png LDCkZXB.png
Fig.5 - Ilustração da sequência de símbolos a surgir no ecrã.

Outros exemplos

MMnvvKD.png w4QdtAr.png orKSYyb.png
[a] [b] [c]

[a] DEEC - FCTUC. Kit Arduino Uno > Instalação.  url: https://kb.deec.uc.pt/books/deec/page/instalacao-irK (acedido em 10/04/2024).

[b] DEEC - FCTUC. Kit Arduino Uno > [exemplo] módulo GPS.  url: https://kb.deec.uc.pt/books/deec/page/exemplo-modulo-gps (acedido em 10/04/2024).

[c] DEEC - FCTUC. Kit Arduino Uno > [exemplo] rumo ao DEEC.  url: https://kb.deec.uc.pt/books/deec/page/exemplo-rumo-ao-deec (acedido em 10/04/2024).

[exemplo] rumo ao DEEC

Objetivo:

 

Chegar ao DEEC - FCTUC via sistema de posicionamento global com Arduino.

Requisitos
MMnvvKD.png w4QdtAr.png h8eDfvF.png
[a] [b] [c]
[exemplo] rumo ao DEEC
tracker1.jpg tracker2.jpg
Set-up
gxq9zCf.png ZcZapjK.png f9H7Yyg.png
luAWx2A.png
Arduino compatível UNO
módulo GPS ecrã OLED
3.3V
------------
VCC
------------ V
GND
------------
GND
------------ G
2 ------------ R
3 ------------ T
A4 ------------
SDA
A5 ------------
SDL
Programa
#include <SoftwareSerial.h>
#include <TinyGPSPlus.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

// OLED display TWI address

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

SoftwareSerial gpsSerial(2, 3);  // RX, TX
TinyGPSPlus gps;
bool selector = false;

void setup() {
  // inicializa ecrã
  if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;); // Don't proceed, loop forever
  }
  display.clearDisplay();
  display.display();

  // imprime linha de texto
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(27, 30);
  display.print(F("..."));

  // actualiza ecrã
  display.display();

  gpsSerial.begin(9600);
  Serial.begin(115200);
}

void loop() {

  while (gpsSerial.available() > 0){
    if (gps.encode(gpsSerial.read()))
      displayInfo();
  }

  if (millis() > 5000 && gps.charsProcessed() < 10)
  {
    Serial.println(F("No GPS detected: check wiring."));
    while(true);
  }
}

void displayInfo() {
  bool chalk_a = true;
  bool chalk_b = true;
  selector = false;
  Serial.print(F("Location: "));

  if (gps.location.isValid()) {
    Serial.print(gps.location.lat(), 12);
    Serial.print(F(","));
    Serial.print(gps.location.lng(), 12);

    if (chalk_a) {
      chalk_a = false;
    } 

  } else {
    Serial.print(F("INVALID"));
  }

  Serial.print(F("  Date/Time: "));
  if (gps.date.isValid()) {
    Serial.print(gps.date.month());
    Serial.print(F("/"));
    Serial.print(gps.date.day());
    Serial.print(F("/"));
    Serial.print(gps.date.year());
  } else {
    Serial.print(F("INVALID"));
  }

  Serial.print(F(" "));
  if (gps.time.isValid()) {
    if (gps.time.hour() < 10) Serial.print(F("0"));
    Serial.print(gps.time.hour());
    Serial.print(F(":"));
    if (gps.time.minute() < 10) Serial.print(F("0"));
    Serial.print(gps.time.minute());
    Serial.print(F(":"));
    if (gps.time.second() < 10) Serial.print(F("0"));
    Serial.print(gps.time.second());
    Serial.print(F("."));
    if (gps.time.centisecond() < 10) Serial.print(F("0"));
    Serial.print(gps.time.centisecond());

    if (chalk_b) {
      chalk_b = false;
    }
  } else {
    Serial.print(F("INVALID"));
  }

  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);

  if (!chalk_a) {
    static const double DEECFCTUC_LAT = 40.18639388156963, DEECFCTUC_LON = -8.416520235329802;
    unsigned long distanceKmToDEEC =
    (unsigned long)TinyGPSPlus::distanceBetween(
      gps.location.lat(),
      gps.location.lng(),
      DEECFCTUC_LAT, 
      DEECFCTUC_LON);

    if (distanceKmToDEEC > 1000) {
      distanceKmToDEEC = distanceKmToDEEC / 1000;
      selector = true;
    } 

    Serial.println(distanceKmToDEEC);

    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(30, 35);
    display.print(distanceKmToDEEC);
    display.setCursor(90, 35);
    if (selector) {
      display.print(F("km"));
    } else {
      display.print(F("m"));
    }

    display.setTextSize(1);
    display.setTextColor(WHITE);
  } else {
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(40, 35);
    display.print(F("..."));
    display.setCursor(90, 35);
    if (selector) {
      display.print(F("km"));
    } else {
      display.print(F("m"));
    }

    display.setTextSize(1);
    display.setTextColor(WHITE);
  }

  display.setCursor(5, 5);
  display.print(F("agora"));
  display.setCursor(5, 20);
  display.print(F("faltam"));
  display.setCursor(5, 55);
  display.print(F("para chegar ao DEEC"));

  if (!chalk_b) {

    display.setCursor(50, 5);
    display.print(gps.time.hour());
    display.setCursor(63, 5);
    display.print(":");
    display.setCursor(70, 5);
    display.print(gps.time.minute());
    display.setCursor(83, 5);

  }
  else {
    display.setCursor(50, 5);
    display.print(F("00"));
    display.setCursor(63, 5);
    display.print(":");
    display.setCursor(70, 5);
    display.print(F("00"));
    display.setCursor(83, 5);

  }
  display.display();
  Serial.println();
}

Outros exemplos

MMnvvKD.png w4QdtAr.png h8eDfvF.png
[a] [b] [c]

[a] DEEC - FCTUC. Kit Arduino Uno > Instalação.  url: https://kb.deec.uc.pt/books/deec/page/instalacao-irK (acedido em 10/04/2024).

[b] DEEC - FCTUC. Kit Arduino Uno > [exemplo] módulo GPS.  url: https://kb.deec.uc.pt/books/deec/page/exemplo-modulo-gps (acedido em 10/04/2024).

[c] DEEC - FCTUC. Kit Arduino Uno > [exemplo] I2C OLED.  url: https://kb.deec.uc.pt/books/deec/page/exemplo-i2c-oled (acedido em 10/04/2024).


[exemplo] acelerómetro e giroscópio MPU-6050

Objetivo:

Demonstrar o uso de sensor com acelerómetro e giroscópio para obter dados de sensores inerciais.

Lista de material:

board_overview.png board_drawing.png
Fig.1 - Placa Arduino compatível UNO.
mxrQ0wq.png oR8cmlO.png
Fig.2 - Sensor MPU-6050.

Contextualização:

Uma unidade de medição inercial (IMU do inglês inertial measurement unit) é um dispositivo eletrónico que permite quantificar a força específica de um corpo, a taxa angular e, por vezes, a orientação do corpo, usando uma combinação de acelerómetros, giroscópios e, às vezes, magnetómetros [1].

Apollo_Command_Module_primary_guidance_system_locations.png Apollo_Inertial_Measurement_Unit.png Apollo_IMU_at_Draper_Hack_the_Moon_exhibit.agr.jpg
Fig.3 - Ilustrações dos principais componentes do sistema de orientação do módulo de comando e serviço Apollo, um dos componentes usado para o programa Apollo, que pousou astronautas na Lua entre 1969 e 1972.
Set-up
AtHzynb.png
placa Arduino compatível UNO
sensor MPU-6050
3.3V ---------------------- VCC
GND ---------------------- GND
A5 ---------------------- SCL
A4 ---------------------- SDA
Fig.4 - Montagem ilustrativa das ligações a estabelecer entre placa de desenvolvimento e sensor MPU-6050.
Bibliotecas
LFBQpBy.png QrHgT1y.png qoDdwQl.png
Fig.5 - Exemplo de utilização do gestor de bibliotecas do IDE Arduino para instalação da biblioteca Adafruit MPU6050.
 
Programa
 
// Demonstração de utilização de sensor Adafruit MPU6050
 
#include "Adafruit_MPU6050.h"
#include "Adafruit_Sensor.h"
#include "Wire.h"
 
Adafruit_MPU6050 mpu;
 
void setup(void) {
  Serial.begin(115200);
  while (!Serial)
    delay(10); 
 
  Serial.println("a testar sensor MPU6050!");
 
  // Try to initialize!
  if (!mpu.begin()) {
    Serial.println("Falhou inicialização de MPU6050");
    while (1) {
      delay(10);
    }
  }
  Serial.println("MPU6050 inicializado!");
 
  mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
  Serial.print("Gamara de valores selecionada para acelerómetro: ");
  switch (mpu.getAccelerometerRange()) {
  case MPU6050_RANGE_2_G:
    Serial.println("+-2G");
    break;
  case MPU6050_RANGE_4_G:
    Serial.println("+-4G");
    break;
  case MPU6050_RANGE_8_G:
    Serial.println("+-8G");
    break;
  case MPU6050_RANGE_16_G:
    Serial.println("+-16G");
    break;
  }
  mpu.setGyroRange(MPU6050_RANGE_2000_DEG);
  Serial.print("Gamara de valores selecionada para giroscópio: ");
  switch (mpu.getGyroRange()) {
  case MPU6050_RANGE_250_DEG:
    Serial.println("+- 250 deg/s");
    break;
  case MPU6050_RANGE_500_DEG:
    Serial.println("+- 500 deg/s");
    break;
  case MPU6050_RANGE_1000_DEG:
    Serial.println("+- 1000 deg/s");
    break;
  case MPU6050_RANGE_2000_DEG:
    Serial.println("+- 2000 deg/s");
    break;
  }
 
  mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
  Serial.print("Filtro a considerar: ");
  switch (mpu.getFilterBandwidth()) {
  case MPU6050_BAND_260_HZ:
    Serial.println("260 Hz");
    break;
  case MPU6050_BAND_184_HZ:
    Serial.println("184 Hz");
    break;
  case MPU6050_BAND_94_HZ:
    Serial.println("94 Hz");
    break;
  case MPU6050_BAND_44_HZ:
    Serial.println("44 Hz");
    break;
  case MPU6050_BAND_21_HZ:
    Serial.println("21 Hz");
    break;
  case MPU6050_BAND_10_HZ:
    Serial.println("10 Hz");
    break;
  case MPU6050_BAND_5_HZ:
    Serial.println("5 Hz");
    break;
  }
 
  Serial.println("");
  delay(100);
}
 
void loop() {
 
  /* leitura dos valores reportados */
  sensors_event_t a, g, temp;
  mpu.getEvent(&a, &g, &temp);
 
  /* impressão das leituras */
  Serial.print("Aceleração X: ");
  Serial.print(a.acceleration.x);
  Serial.print(", Y: ");
  Serial.print(a.acceleration.y);
  Serial.print(", Z: ");
  Serial.print(a.acceleration.z);
  Serial.println(" m/s^2");
 
  Serial.print("Rotação X: ");
  Serial.print(g.gyro.x);
  Serial.print(", Y: ");
  Serial.print(g.gyro.y);
  Serial.print(", Z: ");
  Serial.print(g.gyro.z);
  Serial.println(" rad/s");
 
  Serial.print("Temperatura: ");
  Serial.print(temp.temperature);
  Serial.println(" ºC");
 
  Serial.println("");
  delay(500);
}
Código.1 - Programa exemplo de utilização de sensor MPU-6050 e biblioteca Adafruit MPU6050 com placa Arduino compatível UNO.

Referências

[1] Wikipedia. Unidade de medição inercial. url: https://en.wikipedia.org/wiki/Inertial_measurement_unit (acedido em 26/04/2024).