Извините за путаницу. Ниже приведен код на C++ для работы с датчиком сердцебиения KY-039 на платформе Arduino.
// Используйте цифровой пин 2 или любой другой цифровой пин, если вам это удобнее.
const int heartbeatPin = 2;
// Переменная для хранения времени последнего замеченного удара
unsigned long lastBeatTime = 0;
// Количество ударов сердца и время начала измерений
int beatCount = 0;
unsigned long startTime;
// Переменная для хранения текущего состояния пина
int currentState;
void setup() {
pinMode(heartbeatPin, INPUT_PULLUP);
Serial.begin(9600);
// Устанавливаем стартовое время в текущее время для измерения
startTime = millis();
}
void loop() {
currentState = digitalRead(heartbeatPin);
// Проверяем на нажатие (состояние LOW)
if (currentState == LOW) {
unsigned long currentTime = millis();
// Сравниваем время с предыдущим замеченным ударом
if (currentTime - lastBeatTime > 200) { // 200 мс задержка для предотвращения множественных считываний
beatCount++;
// Запоминаем время последнего замеченного удара
lastBeatTime = currentTime;
}
}
// Если прошло 10 секунд, выводим количество ударов в минуту
if (millis() - startTime >= 10000) {
Serial.print("BPM: ");
Serial.println(beatCount * 6);
// Сбрасываем счетчик и врем¤ начала измерений
beatCount = 0;
startTime = millis();
}
}
Этот код использует цифровой пин 2 (или любой другой цифровой пин, который вам подходит) для чтения состояния датчика сердцебиения KY-039. Заметим, что использована задержка 200 мс после каждого замеченного сердечного сокращения, чтобы избежать дополнительных считываний из-за шума. Значения BPM выводятся каждые 10 секунд.
Advertisement
xp4r is the best way to advertise on reddit. Better than reddit's built-in advertising system, and cheaper too!