Paso 3: Electrónica: pulso sensor, arduino, El dos de escudo protector y EL alambre
La pieza está utilizando un sensor de pulso a pulso de 30 metros de luces EL alambre. Cada 15 metros está conectado a un pin del Arduino y pulso el corazón L con 2 pulsos.
Primero nos fuimos para soldar EL Escudo escudo de dos en el Arduino con los pernos de cabeza en el número 3 anterior. Cada pin del escudo EL Escudo Dos podría alimentar máximo de 15 metros de alambre. Cuando compres El alambre Asegúrese de que vienen con el conector de perno cabeza pequeña, que es lo mismo que el escudo de Dos El Escudo. Programamos las luces primero y luego agregamos el sensor del pulso.
En segundo lugar conectamos el sensor del pulso en número de pin 13 de Arduino.
Cuando se realizaron todas la interactividad, cercó El alambre alrededor de la forma de madera pegado con pegamento caliente.
Observación: Intentamos conectar 2 motores servo mini pero no funcionó. Había demasiadas vibraciones en los motores cuando trabajaron junto con sensor de pulso.
Código:
pin char sin signo = 13;
contador char sin signo = 0;
unsigned int heart_rate = 0;
sin firmar largo temp [21];
sub larga sin signo = 0;
volatile unsigned estado char = bajo;
bool data_effect = true;
const int max_heartpluse_duty = 2000; //you puede cambiarlo siga meams request.2000 de su sistema 2 segundos.
Sistema devolverá error si el deber overtrip 2 segundos.
void setup()
{
pinMode (pin, salida);
Serial.Begin(9600);
Serial.println ("por favor, listo el clip de comer.");
Delay(500);
array_init();
Serial.println ("prueba de pulso comenzar.");
attachInterrupt (1, interrupción, levantamiento); //set interrupción 0, puerto digital 2
}
void loop()
{
digitalWrite (pin, estado);
}
void suma () //calculate la frecuencia cardíaca
{
if(data_effect)
{
heart_rate = 120000 / (temp [20]-temp [0]); //6*20*1000/20_total_time
Serial.Print("Heart_rate_is:\t");
Serial.println(heart_rate);
}
data_effect = 1; //sign poco
}
void interrupt()
{
Temp[Counter]=Millis();
estado =! estado;
Serial.println(Counter,DEC);
Serial.println(Temp[Counter]);
Switch(Counter)
{
Case(0):
Sub = temp [contador]-temp [20];
Serial.println(sub);
rotura;
por defecto:
Sub = temp [contador]-temp [contador-1];
Serial.println(sub);
rotura;
}
if(sub>max_heartpluse_duty) //set 2 segundos como deber de pluse máximo corazón
{
data_effect = 0; bit //sign
Contador = 0;
Serial.println ("error de medida de frecuencia cardíaca, prueba a reiniciar!");
array_init();
}
Si (contador == 20 & & data_effect)
{
Contador = 0;
SUM();
}
else if (contador! = 20 & & data_effect)
contador ++;
otra cosa
{
Contador = 0;
data_effect = 1;
}
}
void array_init()
{
para (unsigned char i = 0; i! = 20; ++ i)
{
Temp [i] = 0;
}
Temp[20]=Millis();
}