Arduino, Internet das Coisas e Computação vestível

[Voltar]

[Avançar]

6.1. Acelerometro e Giroscópio


Projeto acelerômetro e giroscópio

O projeto utiliza um Arduino Uno R3, Display Oled 0,96 128x64 e Módulo Acelerômetro e Giroscópio MPU-6050 para informar valores referentes a posição espacial do sensor. Este é um bom exemplo de como usar conjuntamente a tela OLED 128x64 "I2C" no endereço "0x3C" e o Giroscópio MPU-6050 "I2C" no endereço "0x68". O I2C é um protocolo de comunicação que visa conectar diversos dispositivos (periféricos) utilizando as linhas de dados Serial Data (SDA) e Serial Clock (SCL) . A ideia é definir um endereço hexadecimal para cada dispositivo conectado e no momento de comunicação somente o dispositivo solicitado responderá.

// Projeto: acelerômetro e giroscópio 
// Autor: André Silveira
// Data: 14/06/2019

#include "Adafruit_GFX.h"                      			// Biblioteca para processamento gráfico
#include "Adafruit_SSD1306.h"                 			// Biblioteca do controlador SSD1306
#include "GY6050.h"                           			// Biblioteca do Acelerometro e Giroscópio

/* ---  Variaveis globais --- */
float acelX, acelY, acelZ;
float giroX, giroY, giroZ;
float tempCelsius, tempFarenheit; 
char string[10];
 
GY6050 gyro(0x68);                        				// Cria um objeto gyro com endereço I2C "0x68"
Adafruit_SSD1306 display(128, 64);                		// Cria objeto display

void setup() {                

      delay(100);                                 
      display.begin(SSD1306_SWITCHCAPVCC, 0x3C);    // Inicializa a tela com endereço I2C "0x3C"
      display.clearDisplay();                           		// Limpa a tela 
      display.setTextColor(WHITE);                      		// Define cor do texto
      display.setRotation(0);                           		// Configura orientação 0, 1, 2 ou 3
      display.setTextWrap(false);   
      display.setTextSize(1);                           		// Define tamanho da fonte do texto
      display.dim(0);                                   			// Define brilho (0 é máximo)
      gyro.initialisation();						// Inicializa giroscópio

}  

void loop()  {

/* --- Obtem dados do sensor --- */
    
      acelX = gyro.refresh('A', 'X');           			// Obtém o eixo "X" do Acelerometro
      acelY = gyro.refresh('A', 'Y');           			// Obtém o eixo "Y" do Acelerometro
      acelZ = gyro.refresh('A', 'Z');           			// Obtém o eixo "Z" do Acelerometro
      
      tempCelsius = gyro.refresh('T', 'C');     			// Obtém a temperatura em Graus Celsius
      tempFarenheit = gyro.refresh('T', 'F');   		// Obtém a temperatura em Farenheit 
    
      giroX = gyro.refresh('G', 'X');           			// Obtém o eixo "X" do Giroscópio
      giroY = gyro.refresh('G', 'Y');           			// Obtém o eixo "Y" do Giroscópio
      giroZ = gyro.refresh('G', 'Z');           			// Obtém o eixo "Z" do Giroscópio                       
    
/* --- Desenha dados na tela do acelerometro --- */
    
      display.clearDisplay();                            
      display.drawRoundRect(20,0,40,54,4, WHITE);       
      display.drawLine(20,16,60,16, WHITE);              
        
      display.setCursor(28,6);                         
      display.println("Acel");  
    
      display.setCursor(32,22);          
      dtostrf(acelX, 3, 0, string);               
      display.println(string);    
    
      display.setCursor(32,32);          
      dtostrf(acelY, 3, 0, string);               
      display.println(string);       
      
      display.setCursor(32,42);          
      dtostrf(acelZ, 3, 0, string);               
      display.println(string);  
     
/* --- Desenha dados na tela do giroscópio --- */
    
      display.drawRoundRect(64,0,40,54,4, WHITE);       
      display.drawLine(64,16,104,16, WHITE);             
      
      display.setCursor(72,6);                         
      display.println("Gyro");  
    
      display.setCursor(76,22);          
      dtostrf(giroX, 3, 0, string);               
      display.println(string);
    
      display.setCursor(76,32);          
      dtostrf(giroY, 3, 0, string);               
      display.println(string);
    
      display.setCursor(76,42);          
      dtostrf(giroZ, 3, 0, string);               
      display.println(string);        
       
      display.display();                                    
      delay(1500);                                          

} 






 

[Voltar]

[Avançar]