Interaktiv skulptur: hjärtat dialog (3 / 3 steg)
Steg 3: Elektronik: puls sensor, arduino, El escudo dos sköld och EL WIRE
Lappa använder en puls sensor för att puls 30 meter EL WIRE lampor. Varje 15 meter är ansluten till en PIN-kod för Arduino och de puls som hjärtat L med 2 pulser.
Först vi lödning EL Escudo dos sköld i Arduino med huvudet stiften i bildnummer 3 ovan. Varje stift på EL Escudo Dos Shield kunna driva upp till 15 meter EL tråd. När du köper El wire se till att de kommer med den lilla huvud stift, vilket är samma som El Escudo Dos sköld. Vi programmerade lamporna först och sedan vi lagt till puls sensorn.
Det andra anslutna vi puls sensorn på pin-kod 13 Arduino.
När alla interaktiviteten var gjort, inringd jag El kabeln runt trä formen limma den med varmt lim.
Observation: Vi försökte ansluta 2 mini servomotorer men det fungerade inte. Det fanns alltför många vibrationer i motorerna när de arbetade tillsammans med puls sensor.
Kod:
unsigned char pin = 13.
unsigned char counter = 0;
unsigned int heart_rate = 0;
osignerade långa temp [21].
osignerade långa sub = 0;
volatile unsigned char state = låg;
bool data_effect = sant;
CONST int max_heartpluse_duty = 2000; //you kan ändra det följa systemets request.2000 meams 2 sekunder.
Systemet returnerar felet om tullen overtrip 2 andra.
void setup()
{
pinMode (pin, utgång);
Serial.BEGIN(9600);
Serial.println ("Vänligen redo din eat klipp.");
Delay(500);
array_init();
Serial.println ("Heart rate test börja.");
attachInterrupt (1, avbrott, RISING); //set avbrott 0, digital port 2
}
void loop()
{
digitalWrite (pin, statligt);
}
Annullera summa () //calculate puls
{
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
}
void interrupt()
{
Temp[Counter]=Millis();
State =! statligt;
Serial.println(Counter,dec);
Serial.println(temp[Counter]);
Switch(Counter)
{
Case(0):
sub = temp [counter]-temp [20].
Serial.println(sub);
bryta;
standard:
sub = temp [counter]-temp [counter-1].
Serial.println(sub);
bryta;
}
IF(sub>max_heartpluse_duty) //set 2 sekunder som max hjärtat pluse plikt
{
data_effect = 0; //sign bit
räknare = 0;
Serial.println ("puls mäter fel, test kommer att starta!");
array_init();
}
om (counter == 20 & & data_effect)
{
räknare = 0;
Sum();
}
annars om (counter! = 20 & & data_effect)
räknaren ++;
annat
{
räknare = 0;
data_effect = 1;
}
}
void array_init()
{
för (unsigned char jag = 0; jag! = 20; ++ jag)
{
Temp [i] = 0;
}
Temp[20]=Millis();
}