Collar interactivo de pulso utilizando Arduino. El dispositivo está diseñado para medir el ritmo cardíaco del usuario a través de un sensor integrado en el collar y mostrar visualmente el pulso en una pantalla OLED.
El proyecto consta de dos funcionalidades principales:
// Definicion del pin conectado al sensor de pulso
const int pinSensorPulso = A5;
int frecCardiacaMin = 60;
int frecCardiacaMax = 100;
void setup() {
// Iniciar comunicacion serial para mostrar datos
Serial.begin(9600);
// Configurar el pin del sensor como entrada
pinMode(pinSensorPulso, INPUT);
}
void loop() {
// Leer valor del sensor de pulso
int valorSensor = analogRead(pinSensorPulso);
if (valorSensor >= frecCardiacaMin && valorSensor <= frecCardiacaMax) {
Serial.print("Frecuencia cardiaca: ");
Serial.println(valorSensor);
} else {
// Si está fuera del rango, imprimir mensaje "fuera de rango"
Serial.println("Frecuencia cardiaca fuera de rango");
}
// Esperar un segundo antes de la siguiente lectura
delay(1000);
}
int pulso = 0;
void setup() {
Serial.begin(9600);
pinMode(A2, INPUT);
}
void loop() {
pulso = analogRead(A2);
delay(1000);
Serial.println(pulso);
}
A pesar de que es un código muy simple funciona bien para lo que necesito, decidí quedarme con este.
// variable para almacenar el tiempo transcurrido
float tiempo;
// color base 1 (rojo)
color colorPrincipal1 = color(255, 0, 0);
// color base 2 (azul)
color colorPrincipal2 = color(100, 0, 255);
// numero de elipses a dibujar
int numeroElipses = 70;
void setup() {
// establecer el tamano de la ventana segun la resolucion de la pantalla oled
size(1080, 700);
// eliminar el trazo
noStroke();
}
void draw() {
// borrar el fondo
background(0);
// actualizar el tiempo para la animacion
tiempo += 0.05;
// obtener el ancho y el alto de la ventana
float anchoVentana = width;
float altoVentana = height;
// calcular el valor del pulso base en funcion del tiempo y la funcion seno
float pulso = sin(tiempo) * min(anchoVentana, altoVentana) / 1.5;
// bucle para dibujar multiples elipses
for (int i = 0; i < numeroElipses; i++) {
// calcular el desplazamiento individual del pulso y el cambio de color
float desplazamiento = sin(tiempo + i * 0.1) * pulso;
// ajustar el cambio de color segun el indice del bucle
float cambioColor = abs(sin(tiempo + i * 0.2));
// calcular la posicion de la elipse en funcion del tamano de la ventana y el pulso
float centroX = map(i, 0, numeroElipses - 1, anchoVentana / 2, 4 * anchoVentana / 2);
// posicionar las elipses verticalmente con un espaciado uniforme
float centroY = altoVentana / 2 - i * 30;
// crear una elipse con tamano y cambio de color pulsantes
fill(lerpColor(colorPrincipal1, colorPrincipal2, cambioColor), pulso + desplazamiento);
ellipse(centroX, centroY, pulso + desplazamiento, pulso + desplazamiento);
}
}
Collar interactivo de pulso utilizando Arduino. El proyecto consiste en un sistema de comunicación basado en WiFi entre dos microcontroladores Arduino, un servidor y un cliente, y Processing. Arduino actúa como un dispositivo de adquisición de datos del sensor, mientras que la aplicación Processing sirve como una herramienta de visualización de datos.