// Programa: Air Speed from a Pressure Differential Sensor in a Wind Tunnel with a I2C communication in Arduino
// Author: Ítalo Gomes - Membro de DET
// Date: 19/04/2023
// #include <Wire.h>
#include <LiquidCrystal_I2C.h> // Adiciona a biblioteca do módulo I2C ao código
// Inicializa o display no endereco 0x27
LiquidCrystal_I2C lcd(0x27,16,2);
// Declaração de constantes //
float K = 7.808; // Constante de calibração K = 1/C;
// Declaração de variáveis do loop //
float V = 0, soma = 0, med = 0; // Velocidade do ar em m/s, 'soma' e 'med' são variáveis auxiliares
void setup()
{
lcd.init(); // Inicializa o módulo I2C
lcd.setCursor(2, 0); // Indica onde o LCD deve começar a mostrar o seguinte comando "print"
lcd.print("Iniciando..."); // Mostra a seguinte informação na tela do lcd
delay(2000); // Espera 3000ms para ler a seguinte linha de código
lcd.clear(); // Limpa a tela
lcd.setCursor(4, 0);
lcd.print("Pronto!");
delay(1000);
lcd.clear();
Serial.begin(9600); // Taxa de transmissão dos dados (9600 baud rate)
}
void loop()
{
V = 0; soma = 0; med = 0; // Força as variáveis gloabis a resetarem! //
for (int i = 0; i < 101; i++) {
float dTP = analogRead(A1)*5.0/1023; // Diferença de pressão (dTP) lida pelo sensor em Volts
soma = soma + dTP;
delay(10);
}
med = (soma / 100.0); // Realiza uma média do somatório dos valores lidos
V = sqrt((2*K*med)/2); // Velocidade do ar na secção de teste (Vt)
lcd.setCursor(2, 0); // Indica onde o LCD deve começar a mostrar o seguinte comando "print"
lcd.print("Velocidade:");
lcd.setCursor(2, 1); // Indica onde o LCD deve começar a mostrar o seguinte comando "print"
lcd.print(V);
lcd.setCursor(9, 1); // Indica onde o LCD deve começar a mostrar o seguinte comando "print"
lcd.print("m/s");
Serial.println(V); // Indica o valor da Velocidade no Monitor Serial para acompanhar os dados pelo computador
delay(1000);
}