Subido por rafaelurbinaclara

código Arduino ECG+BPM en OLED

Anuncio
Este código debe incluir la configuración del módulo ad8232 y la lectura de los datos de la señal ECG
para calcular los latidos por minuto (BPM) y visualizarlos en una pantalla OLED de 0,96". Aquí te
presento un posible código:
```
//Librerías necesarias
#include <Wire.h> // para comunicación I2C
#include <Adafruit_GFX.h> // para gráficos en pantalla
#include <Adafruit_SSD1306.h> // para pantalla OLED
#include <AD8232.h> // para el sensor ECG
//Configuración de la pantalla OLED
#define SCREEN_WIDTH 128 // ancho de la pantalla
#define SCREEN_HEIGHT 64 // alto de la pantalla
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
//Configuración del sensor ECG
#define ECG_SAMPLING_RATE 1000 // tasa de muestreo de la señal ECG
#define ECG_PIN A0 // pin analógico del sensor ad8232
AD8232 ad8232(ECG_PIN);
//Variables
unsigned long lastMillis = 0; // última vez que se leyó el sensor ECG
float lastBeat = 0; // último momento en el que se detectó un latido
int bpm = 0; // latidos por minuto
float ecgData[500]; // arreglo para almacenar los datos de la señal ECG
void setup() {
//Inicialización de la pantalla OLED
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //0x3C es la dirección I2C de la pantalla
display.clearDisplay(); //limpiar pantalla
display.setTextColor(SSD1306_WHITE); //color del texto
display.setTextSize(1); //tamaño del texto
display.setCursor(0,0); //poner cursor en la posición (0,0)
display.println("ECG + BPM"); //título
display.display(); //mostrar en pantalla
//Inicialización del sensor ECG
ad8232.begin();
ad8232.setSamplingRate(ECG_SAMPLING_RATE);
}
void loop() {
//Lectura de la señal ECG
if(millis() - lastMillis > (1000 / ECG_SAMPLING_RATE)) {
lastMillis = millis();
ecgData[ad8232.getSampleCounter()-1] = ad8232.getLastEcgValue();
}
//Cálculo de los latidos por minuto (BPM)
if(ad8232.newBeatDetected()) {
lastBeat = millis();
bpm = 60000.0 / (millis() - lastBeat);
}
//Mostrar en pantalla
display.setCursor(0,16); //poner cursor en la posición (0,16)
display.print("BPM: ");
display.print(bpm);
//Graficar la señal ECG
display.fillRect(0,32,SCREEN_WIDTH,SCREEN_HEIGHT,SSD1306_BLACK); //borrar la parte gráfica de la
pantalla
for(int i=0; i<SCREEN_WIDTH; i++) {
int pos = map(i, 0, SCREEN_WIDTH, 0, ECG_SAMPLING_RATE);
int val = map(ecgData[pos], -3000, 3000, 0, SCREEN_HEIGHT);
display.drawPixel(i, SCREEN_HEIGHT-val, SSD1306_WHITE); //dibujar un punto de la señal ECG
}
display.display(); //mostrar en pantalla
}
```
Este código muestra en la pantalla OLED el título "ECG + BPM" seguido de los latidos por minuto (BPM) y
la gráfica de la señal ECG en tiempo real. El arreglo "ecgData[]" almacena los últimos 500 datos de la
señal ECG para poder graficarlos en la pantalla. Ajusta los valores de las constantes
`ECG_SAMPLING_RATE` y `SCREEN_WIDTH` según tus necesidades.
Descargar