Stap 3: Elektronica: pulse sensor, arduino, El escudo dos schild en EL WIRE
Het stuk is met behulp van een puls sensor naar pulse 30 meter van EL WIRE lichten. Elke 15 meter op een pin van de Arduino is aangesloten en zij pulse als het hart L met 2 pulsen.
Eerst waren we het solderen van de EL Escudo dos schild in de Arduino met behulp van de hoofd-pinnen in het afbeeldingsnummer 3 hierboven. Elke pin van het schild van EL Escudo Dos kan de macht van maximaal 15 meter van EL WIRE. Wanneer u koopt El draad Zorg ervoor dat ze komen met de kleine hoofd-pens-connector, die is hetzelfde als het El Escudo Dos schild. Wij geprogrammeerd de lichten eerst en dan we de hartslag sensor toegevoegd.
Ten tweede verbonden we de hartslag sensor op pin nummer 13 van Arduino.
Wanneer alle de interactiviteit werden gedaan, omringd ik de El draad rond de houten vorm het met hete lijm lijmen.
Opmerking: We hebben geprobeerd om verbinding te maken met 2 mini servomotoren maar het werkte niet. Er was te veel trillingen in de motoren, toen ze samen met pulse sensor werkte.
Code:
unsigned char pin = 13;
unsigned char counter = 0;
unsigned int heart_rate = 0;
niet-ondertekende lange temp [21];
niet-ondertekende lange sub = 0;
volatile unsigned char staat = laag;
BOOL data_effect = true;
Const int max_heartpluse_duty = 2000; //you kunt het volgen van uw systeem request.2000 meams 2 seconden.
Systeem fout geretourneerd als de plicht overtrip 2 seconden.
VOID Setup
{
pinMode (pin, uitvoer);
Serial.begin(9600);
Serial.println ("Gelieve klaar uw clip eet.");
delay(500);
array_init();
Serial.println ("hartslag test beginnen.");
attachInterrupt (1, interrupt, stijgt); //set interrupt 0, digitale poort 2
}
void loop
{
digitalWrite (pin, staat);
}
VOID som () //calculate de hartslag
{
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 bits
}
VOID interrupt()
{
Temp[Counter]=Millis();
staat =! staat;
Serial.println(Counter,DEC);
Serial.println(temp[Counter]);
switch(Counter)
{
Case(0):
sub = temp [teller]-temp [20];
Serial.println(sub);
breken;
standaard:
sub = temp [teller]-temp [teller-1];
Serial.println(sub);
breken;
}
if(sub>max_heartpluse_duty) //set 2 seconden als max hart pluse plicht
{
data_effect = 0; //sign bits
Counter = 0;
Serial.println ('hartslag maatregel fout, test zal opnieuw opstarten!');
array_init();
}
Als (teller == 20 & & data_effect)
{
Counter = 0;
som();
}
anders als (teller! = 20 & & data_effect)
teller ++;
anders
{
Counter = 0;
data_effect = 1;
}
}
VOID array_init()
{
voor (unsigned char ik = 0; ik! = 20; ++ ik)
{
Temp [i] = 0;
}
Temp[20]=Millis();
}