Hola amigos:
La verdad soy nuevo con la programación y necesito ayuda con mi código.
Me ha surgido un problema al realizar un electrocardiograma con mi arduino UNO, para frecuencias entre 0 y 250 hertz.
Para que funcione correctamente, me he propuesto probarlo con un una señal de entrada en el pin analógico A3 (o con cualquiera la verdad). Al conectarle un generador de funciones lo que tengo en Serial Plotter y en mi programa en arduino, es una gráfica que no es la deseada. Entiendo que entro en un problema, respecto a la frecuencia de muestreo del ADC del arduino.
Leyendo y tratando de aprender, encontré que era necesario aplicar en el código un buffer circular, pero la verdad es que no se como juntar el buffer circular con la lectura del puerto analógico.
Les adjunto mi código:
#include <CircularBuffer.h>
CircularBuffer<int, 400> buffer;
unsigned long time = 0;
#define SAMPLE_PIN A3
void setup() {
Serial.begin(9600);
pinMode(SAMPLE_PIN, INPUT);
time = millis();
}
void loop() {
int reading = analogRead(A3);
buffer.push(reading);
if (millis() - time >= 500) {
time = millis();
float avg = 0.0;
// the following ensures using the right type for the index variable
using index_t = decltype(buffer)::index_t;
for (index_t i = 0; i < buffer.size(); i++) {
avg += buffer[i] / buffer.size();
}
Serial.println(avg);
}
}
Si alguien me pudiera ayudar amigos, se lo agradecería bastante.