Добрый день! Необходимо сделать библиотеку для амперковского датчика пульса для Ардуино Леонардо. Библиотека должна считывать пульс и возвращать количество ударов в минуту. Оплата по договоренности. Заранее спасибо тем, кто откликнется.
http://arduino-kit.ru/catalog/id/modul-datchika-pulsa-_ik_ Попробуй, там есть библиотека, схемы и т.д.
Спасибо, но к сожалению это не тот датчик. Нужно для амперковского. http://amperka.ru/product/pulse-sensor
Руководство http://pulse-sensor.googlecode.com/files/PulseSensorAmpedGettingStartedGuide.pdf Библиотека Arduino http://pulse-sensor.googlecode.com/files/PulseSensorAmped_Arduino_1dot1.zip Использование с Arduino http://pulsesensor.com/pages/pulse-sensor-amped-arduino-v1dot1
Зачем библиотека? Я подключил его к аналоговому входу, подобрал уровни перепада сигнала вверх (а можно и вниз) и получил сердечный ритм, из которого вычислить пульс уж совсем простая задача. Строк на 5 вся работа. Причем этот датчик очень хороший и сигнал на нем четкий со всех пальцев идет, а вот с прошлым я намучился там фронт 1-2 единицы был, что меньше чем помехи.
Спасибо большое за помощь! У меня не получается написать код, а время очень сильно поджимает. Я не достаточно грамотен в программировании. У меня огромная просьба. Если Вам не сложно, Вы не могли бы дать этот код? Я понимаю, что интеллектуальная работа должна оплачиваться, и готов это сделать. И еще раз спасибо за Вашу помощь.
Мне 14 лет, я в 8 классе.Я еще этот вопрос не успел пройти, и я ищу репетитора по схемотехнике. Не хотите им побыть?
С удовольствием, при одном условии: вы сначала пытаетесь сделать хоть что-то сами, а не выпрашиваете готовый код. Делаете, разбираетесь, если что-то не получается - выкладываете код, ошибки компилятора и т.п. и спрашиваете "что я делаю не так". Вот тогда будет видно, что вы действительно хотите чему-то научиться, а не получить готовое на блюдечке.
Ну по схемотехнике я помочь не могу, к сожалению, но по программированию, в силу своих знаний, мог бы. От вас конструктив в плане задач и ваши попытки/размышления по их реализации, от меня - анализ ваших ошибок, подходов и направление в верную, по моему мнению, сторону. Мой скайп в подписи.
Здравствуйте! Спасибо за предложение помощи. Что я пытался сделать. 1. Вначале в лоб пытался получить показания датчика. Датчик, как оказалось, показывает не пульс, а разницу между средним пульсом за последние несколько секунд и пульсом сейчас в единицах от 0 до 1023. И точка отсчета (т.е. отстутствие изменений_ - 512. Скриншот программы прилагаю. 2. Я зашел на официальный сайт датчика пульса http://pulsesensor.com и нашел, что там есть способ переделать программу под Arduino Leonardo, и даже прилагалась для него программа. Однако, компилятор нашел несколько ошибок. Я прочитал текст, который был приведен на сайте, и увидел, что там есть способ переделать код для Arduino Leonardo, воспользоваться которым мне тоже не удалось. Компилятор находил ошибки. 3. Когда не получилось, я стал искать библиотеки. Единственная, которую я нашел, была для Arduino Uno. В моем проекте используется плата на чипе aTmega32u4, и уйти от этого нельзя, потому что в проекте имитируется клавиатура. Поэтому использовать библиотеки для Arduino Uno не получилось, он отказался компилировать код потому что в Arduino Uno используются другие таймеры, Ошибки компиляции выдавались только если я выбирал Arduino Leonardo. Если я выбирал плату для загрузки Arduino Uno, компиляция была успешной. Тогда я попытался влезть в код библиотеки и посмотреть, как она работает, чтобы переделать это под Arduino Leonardo, но не смог понять, как она работает. После этого я позвонил в техподдержку Амперки и попросил помочь адаптировать библиотеку под Arduino Leonardo. В течение недели они пытались это делать, потом сказали, что на это нужно слишком много времени. В итоге, я понял, что я сам не справлюсь и мне нужна помощь.
Во-первых, пауза между измерениями 1 секунда это слишком дофига. Зачастую даже сердце стучит чаще. Во-вторых, не нужно считать какое-то установленное значение за удар сердца, нужно ловить увеличение этого значения. Причем подобрать рост эксперементально, у меня, например это получилось порядка 50 единиц. В-третьих, сердце стучит не "тук-пауза-тук-пауза" и так далее, а "тук-тук-пауза-тук-тук-пауза", то есть как бы два удара за один (вероятно, так поочередно работают желудочки, не помню уже). То есть вам нужно поймать одноименные ритмы и уже по паузам между ними вычислять пульс в размерности ударов в секунду.
Вот, накатал для примера. Комментариев пока нет, т.к. было некогда. Код (C++): #define DELT 15 int pulse[2]; bool vect[2]; unsigned long timerPuls; void setup() { Serial.begin(9600); } void loop() { vect[0] = (pulse[1] > (pulse[0] + DELT)); pulse[0] = pulse[1]; pulse[1] = analogRead(A0); vect[1] = (pulse[1] > (pulse[0] + DELT)); if (!vect[0] && vect[1]) { Serial.println(60000.0/(millis()-timerPuls)); timerPuls = millis(); } delay(50); } Суть такая: надо приложить палец так, чтобы на каждый удар появлялась строка в терминале с частотой пульса. Для проверки можно второй рукой держать себя за шею. ) Работает только в определенном положении пальца - не сильно прижатым и не сильно отжатым. У меня получилось довольно похоже на правду. Там где "пульс резко подскочил" я просто дернул пальцем: Скриншотить было лень. Разумеется, для готового устройства надо добавить математики, исключить заведомо неверные результаты и сгладить получаемые. Но это уже второй этап. Вот замеры показания датчика осциллографом, от туда взял тайминги и перепады: Но все можно подобрать методом научного тыка (последовательного приближения), хотя и дольше.