Intellekten Edison: pulsmätare (3 / 4 steg)
Steg 3: kodning.
Detta är den mest knepiga delen av projektet. Du kommer att behöva mappa ner när ditt hjärta slår på sensorn.
Den grundläggande tanken är att när led är på och lyser till LDR behandlingen är ca 1020. När finger sätts på det LDR värdet ändras mellan 980-995. Det är där bearbetning 2 kommer händig. När blodet är stöta i fingret det ljus som går genom ändringarna finger något. Mappa ner rätt ögonblick när ljuset är i den ljusaste och när dämpad. Din behandling kan skilja sig från mig.
Okej. så här är koden.
Några sak behövs. En räknare som kommer att räkna pulsen och Timer för att räkna tid.
Timern är inställd på 0 på start och det kommer att stanna vid 10 sec. Counter räknar beats och multiplicera dem med sex.
CONST int analogInPin = A0;
int Led = 13.
int sensorValue = 0;
int count = 0;
osignerade långa time1 = 0;
osignerade långa time2;
#include
#include "rgb_lcd.h"
rgb_lcd lcd;
CONST int colorR = 255;
CONST int colorG = 0;
CONST int colorB = 0;
Setup är främst i grundinställningarna.
void setup() {
Serial.BEGIN(115200);
pinMode (Led, OUTPUT);
pinMode (Led, hög);
LCD.BEGIN (16, 2);
lcd.setRGB (colorR, colorG, colorB);
}
Sedan loop. Detta är den viktigaste program som visar den räknade grejer och håll tröskelvärdena för sensorn som när det är dags att räkna en, två, tre, osv...
void loop() {
IF(Count==0)
{time1=millis();
}
Time2=Millis();
sensorValue = analogRead(analogInPin);
om (time2 > = time1 + 10000)
{counter();
}
IF(sensorValue >1000) {
LCD.Clear();
Serial.println ("Infoga finger");
lcd.setCursor(0,0);
LCD.Print ("Infoga Finger");
hemkomst.
}
IF(sensorValue ==991) {
LCD.Clear();
digitalWrite (Led, hög);
Increment();
Serial.println(sensorValue);
Serial.println(Count);
Serial.println(Time2);
lcd.setCursor(0,0);
LCD.Print("Counting");
}
IF(sensorValue >990) {
digitalWrite (Led, låg);
}
Delay(200);
}
Sedan några subrutin.
Increment() gör att lägga till greven och counter räknar beats och visar dem med att hålla värdet för 5 sek innan du fortsätter programmet.
void increment()
{
greve ++;
}
void counter()
{
LCD.Clear();
antal = antal * 6.
Serial.Print ("hjärtslag:");
Serial.Print(Count);
lcd.setCursor(0,0);
LCD.Print ("hjärtslag:");
lcd.setCursor(0,1);
LCD.Print(Count);
time1 = 0;
Time2 = 0;
Count = 0;
Delay(5000);
}