#include <Wire.h>
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#define DHT_PIN 14
#define DHTTYPE DHT22
#define BUTTON_PIN 12
Adafruit_MPU6050 mpu;
DHT dht(DHT_PIN, DHTTYPE);
unsigned long lastLogTime = 0;
const unsigned long logInterval = 5000; // 5 segundos
int valorBotao = 0; // Valor inicial de 0 a 3
void setup() {
Serial.begin(115200);
delay(1000);
pinMode(BUTTON_PIN, INPUT_PULLUP); // Não usamos a leitura direta nesse caso
randomSeed(analogRead(0));
dht.begin();
if (!mpu.begin()) {
Serial.println("MPU6050 não detectado!");
while (1);
}
mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
mpu.setGyroRange(MPU6050_RANGE_500_DEG);
mpu.setFilterBandwidth(MPU6050_BAND_5_HZ);
// Cabeçalho CSV
Serial.println("Timestamp,Temperatura(°C),Umidade(%),Vibracao(Hz),Produtos");
}
void loop() {
unsigned long currentTime = millis();
if (currentTime - lastLogTime >= logInterval) {
// Simulação de temperatura e umidade
float temperatura = random(200, 901) / 10.0;
float umidade = random(90, 901) / 10.0;
float vibracaoHz = random(200, 801) / 10.0;
// Atualiza valor do botão (de 0 a 3, ciclo)
valorBotao = (valorBotao + 1) % 4;
String timestamp = String(currentTime / 1000);
Serial.print(timestamp); Serial.print(",");
Serial.print(temperatura, 1); Serial.print(",");
Serial.print(umidade, 1); Serial.print(",");
Serial.print(vibracaoHz, 1); Serial.print(",");
Serial.println(valorBotao);
lastLogTime = currentTime;
}
}