#include <U8g2lib.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
const int pressureSensorPin = A0;
const int buzzerPin = 10;
const float pressureMin = 0;
const float pressureMax = 1023;
float warningThreshold = 1.7;
const float pressureMinBar = 0.0;
const float pressureMaxBar = 7.0;
unsigned long lastIncreaseTime = 0;
unsigned long lastDecreaseTime = 0;
const unsigned long debounceDelay = 20; // Atraso de debounce em milissegundos
void setup() {
Serial.begin(9600);
pinMode(pressureSensorPin, INPUT);
pinMode(buzzerPin, OUTPUT);
noTone(buzzerPin);
u8g2.begin();
u8g2.enableUTF8Print(); // Ativar impressão UTF-8
u8g2.setFont(u8g2_font_6x10_tf); // Definir fonte inicial (pode alterar)
delay(0000);
}
void loop() {
int pressureValue = analogRead(pressureSensorPin);
warningThreshold = constrain(warningThreshold, pressureMinBar, pressureMaxBar);
updateDisplay(pressureValue);
delay(100);
}
void updateDisplay(int pressureValue) {
float currentPressure = map(pressureValue, pressureMin, pressureMax, pressureMinBar * 100, pressureMaxBar * 100) / 100.0;
u8g2.clearBuffer();
u8g2.setCursor(14, 20);
u8g2.print("P. Turbo ");
u8g2.print(currentPressure, 2);
u8g2.println(" Bar");
// Exemplo de como mudar o tamanho da fonte
//u8g2.setFont(u8g2_font_7x14_tf);
//u8g2.setCursor(15, 50);
//u8g2.print("ALARM: ");
//u8g2.print(warningThreshold, 2);
//u8g2.print(" Bar");
if (currentPressure >= warningThreshold) {
tone(buzzerPin, 1000);
} else {
noTone(buzzerPin);
}
u8g2.sendBuffer();
}