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.