Projeto de sensor de vibração com esp32 e adxl345 - exportar dados csv ao atingir um limiar

Boa noite,

Sou iniciante na programação e estou com uma tarefa complicada, que é montar um sistema que detecta vibração anormal em um motor. O código para leitura do sensor roda certinho, mas queria que quando atingisse determinado valor, por exemplo 15m/s^2, acionasse um led como aviso, e os dados "anormais", acima do limite estabelecido, fossem salvos em um arquivo .csv ou .txt para serem analisados.

o código que estou usando é esse:

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_ADXL345_U.h>
#include <RunningMedian.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 32 // OLED display height, in pixels

Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified(12345);
RunningMedian accel_median(20);
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

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

    if(!accel.begin())
    {
        Serial.println("O sensor ADXL345 não foi encontrado. Verifique as conexões!");
        while(1);
    }

    accel.setRange(ADXL345_RANGE_16_G);

    display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
    display.clearDisplay();
    display.setTextColor(WHITE);
    display.setTextSize(1);
    display.setCursor(0,0);
    //display.println("Aceleração");
    display.display();
}

void loop(void)
{
    sensors_event_t event;
    accel.getEvent(&event);

    float accel_xyz = event.acceleration.x + event.acceleration.y + event.acceleration.z;
    accel_median.add(accel_xyz);
    float median = accel_median.getMedian();

    //Serial.print("Aceleração X: "); Serial.print(event.acceleration.x); Serial.print(" m/s^2");
    //Serial.print("\tAceleração Y: "); Serial.print(event.acceleration.y); Serial.print(" m/s^2");
    //Serial.print("\tAceleração Z: "); Serial.print(event.acceleration.z); Serial.print(" m/s^2");
    Serial.print("\tAceleraçãoXYZ: ");
    //Serial.print("\tMediana: "); Serial.print(median); Serial.println(" m/s^2");

    display.clearDisplay();
    display.setCursor(0,0);
    //display.println("Aceleração");
    display.print("Mediana: "); display.print(median); display.println(" m/s^2");
    display.display();

    delay(500);
}

Agradeço qualquer ajuda.

Exibições: 165

Responder esta

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço