Étape 3: Electronique : pulse sensor, arduino, dos de El escudo bouclier et EL fil
La pièce utilise un capteur d’impulsions à 30 mètres de lumières EL fil d’impulsion. Chaque 15 mètres est connecté à une goupille de Arduino et ils impulsions comme le cœur L avec 2 impulsions.
Tout d’abord nous avons souder l’Escudo EL dos bouclier dans l’Arduino à l’aide des goupilles de tête dans le numéro de la photo 3 ci-dessus. Chaque broche du bouclier EL Escudo Dos pourrait une puissance maximale de 15 mètres de fil d’EL. Lorsque vous achetez El fil s’assurer qu’ils viennent avec le connecteur tête petite, qui est le même que le bouclier de Dos El Escudo. Nous avons programmé les lumières tout d’abord, et puis nous avons ajouté le capteur d’impulsions.
Deuxièmement, nous avons connecté le capteur d’impulsions sur la numéro 13 de goupille de Arduino.
Lorsque toute l’interactivité ont été faites, j’ai entouré le fil El autour de la forme de bois coller avec la colle chaude.
Observation : Nous avons essayé de connecter 2 mini servo moteurs, mais il n’a pas fonctionné. Il y avait trop de vibrations dans les moteurs lorsqu’ils travaillaient avec capteur d’impulsions.
Code :
goupille d’unsigned char = 13 ;
compteur d’unsigned char = 0 ;
unsigned int heart_rate = 0 ;
unsigned long temp [21] ;
unsigned long sup = 0 ;
volatile non signé État char = faible ;
bool data_effect = true ;
const int max_heartpluse_duty = 2000 ; //you pouvez modifier il suivre meams request.2000 de votre système de 2 secondes.
Erreur retour du système si le devoir overtrip 2 secondes.
void setup()
{
pinMode (pin, sortie) ;
Serial.Begin(9600) ;
Serial.println ("s’il vous plaît prêts votre clip eat.") ;
Delay(500) ;
array_init() ;
Serial.println ("test de fréquence cardiaque commence.") ;
attachInterrupt (1, interruption, RISING); //set interruption 0, port numérique 2
}
void loop()
{
digitalWrite (broche, État) ;
}
void somme () //calculate la fréquence cardiaque
{
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 bit
}
Sub interrupt()
{
Temp[Counter]=Millis() ;
État =! d’État ;
Serial.println(Counter,DEC) ;
Serial.println(temp[Counter]) ;
Switch(Counter)
{
case(0) :
void = temp [compteur]-temp [20] ;
Serial.println(Sub) ;
rupture ;
par défaut :
void = temp [compteur]-temp [counter-1] ;
Serial.println(Sub) ;
rupture ;
}
if(Sub>max_heartpluse_duty) //set 2 secondes comme devoir de pluse de coeur de max
{
data_effect = 0; //sign bit
compteur = 0 ;
Serial.println ("erreur de mesure de fréquence cardiaque, test redémarre!") ;
array_init() ;
}
Si (compteur == 20 & & data_effect)
{
compteur = 0 ;
Sum() ;
}
ElseIf (compteur! = 20 & & data_effect)
compteur ++ ;
d’autre
{
compteur = 0 ;
data_effect = 1 ;
}
}
Sub array_init()
{
pour (unsigned char j’ai = 0; i! = 20; ++ i)
{
Temp [i] = 0 ;
}
Temp[20]=Millis() ;
}