Sensores

Este exemplo apresenta a utilização com os sensores.

Vídeo explicativo

Exemplo

/*
Autor: João Vitor Alvares
Versão: 1.0
Objetivo: Sensores
*/

// To neopixel
#include <Adafruit_NeoPixel.h> // Biblioteca Adafruit_NeoPixel-master.zip na pasta ou versão: 1.9.0 por Adafruit

// To BMI270
#include "SparkFun_BMI270_Arduino_Library.h" // Biblioteca BMI270 versão: 1.0.1 por Sparkfun Electronics

// To AHT20
#include <AHTxx.h> // Biblioteca Adafruit_AHTX0 versão: 2.0.3 por Adafruit

// To I2C	
#include <Wire.h> // Biblioteca nativa do ESP32

// Hardware mapping
#define pinToLED						2					

// To RGB
#define NUMPIXELS   					1
#define RED    							pixels1.Color(255, 0, 0)     			// Red
#define GREEN  							pixels1.Color(0, 255, 0)     			// Green
#define BLUE   							pixels1.Color(0, 0, 255)     			// Blue
#define WHITE  							pixels1.Color(255, 255, 255) 			// White
#define OFF_COLORS						pixels1.Color(0, 0, 0) 					// OFF
#define MAXCOLORS 						5
   
// To RGB
Adafruit_NeoPixel pixels1(NUMPIXELS, pinToLED, NEO_GRB + NEO_KHZ800);  			

// To BMI270
BMI270 imu;	

// To AHT20
AHTxx aht20(AHTXX_ADDRESS_X38, AHT2x_SENSOR);                   				// Sensor address, sensor type   

// To push button
char flagToPushButton					= 0x00;

// To RGB
uint32_t cores[MAXCOLORS] 				= {RED, GREEN, BLUE, WHITE, OFF_COLORS};

// To BMI270
uint8_t i2cAddress 						= BMI2_I2C_PRIM_ADDR; 					// 0x68
volatile bool interruptOccurred 		= false;								// Flag to know when interrupts occur
int counter								= 0;

// To AHT20
float ahtValue;                                                         		// To store T/RH result
float ahtValueTemperature; 
float ahtValueHumididty; 
bool valueCritical						= false;

void setup()
{
	
	Serial.begin(115200);

	pixels1.begin();	
	
	// To general config.
    Wire.begin();
    if(imu.beginI2C(i2cAddress) != BMI2_OK)
    {
        
		for(int i = 0; i < 3; i++)
		{
			
			pixels1.clear();
			pixels1.setPixelColor(0,cores[0]);
			pixels1.show(); 
			delay(500);
			pixels1.clear();
			pixels1.setPixelColor(0,cores[4]);
			pixels1.show(); 
			delay(500);

		} // end for
       
    } // end if  
	
	// To aht20
	if (aht20.begin() != true)
	{
		
		for(int i = 0; i < 3; i++)
		{
			
			pixels1.clear();
			pixels1.setPixelColor(0,cores[0]);
			pixels1.show(); 
			delay(500);
			pixels1.clear();
			pixels1.setPixelColor(0,cores[4]);
			pixels1.show(); 
			delay(500);
			
		} // end for
		
	} // end while 
	
} // end setup

void loop()
{
	
	imu.getSensorData();
    // Print acceleration data
    Serial.print("Acceleration in g's");
    Serial.print("\t");
    Serial.print("X: ");
    Serial.print(imu.data.accelX, 3);
    Serial.print("\t");
    Serial.print("Y: ");
    Serial.print(imu.data.accelY, 3);
    Serial.print("\t");
    Serial.print("Z: ");
    Serial.print(imu.data.accelZ, 3);
    Serial.print("\t");
    // Print rotation data
    Serial.print("Rotation in deg/sec");
    Serial.print("\t");
    Serial.print("X: ");
    Serial.print(imu.data.gyroX, 3);
    Serial.print("\t");
    Serial.print("Y: ");
    Serial.print(imu.data.gyroY, 3);
    Serial.print("\t");
    Serial.print("Z: ");
    Serial.println(imu.data.gyroZ, 3);

	ahtValueHumididty   = aht20.readHumidity();   
	
	if (ahtValueHumididty != AHTXX_ERROR)                   					// AHTXX_ERROR = 255, library returns 255 if error occurs
	{
		
		Serial.print(ahtValueHumididty);
		Serial.println(F(" +-2%"));
	
	} // end if
	
	else
	{
		
		Serial.print(ahtValueHumididty);
		Serial.println(F(" +-2%"));
		
	} // end else	
	
	ahtValueTemperature = aht20.readTemperature();   
	
	if (ahtValueTemperature != AHTXX_ERROR)                   					// AHTXX_ERROR = 255, library returns 255 if error occurs
	{
		
		Serial.print(ahtValueTemperature);
		Serial.println(F(" +-0.3C"));
	
	} // end if
	
	else
	{
		
		Serial.print(ahtValueTemperature);
		Serial.println(F(" +-0.3C"));
		
	} // end else
  
	delay(1000);

} // end loop

Last updated