Невозможно получить данные домашней ЭКГ.
Последние пару недель я не смог найти решение своей проблемы. Моя проблема в том, что я не могу получить данные из моей самодельной ЭКГ, созданной с помощью Arduino. Я полный любитель в этом, но я почти уверен, что это проблема схемы. Вот как сейчас выглядит моя схема. (Примечание: то, что написано «Dual O» в крайнем левом углу, — это инструментальный усилитель, а не операционный усилитель, такой как тот, что посередине)
Вот код, который я использую:
const int signal = 5; // Вывод подключен к отфильтрованному сигналу схемы
unsigned long currentBeatTime;
unsigned long previousBeatTime;
unsigned long frequency;
// Внутренние переменные
unsigned long period = 0;
int input = 0;
int lastinput = 0;
void setup() {
pinMode(signal, INPUT);
Serial.begin(9600);
previousBeatTime = millis();
}
void loop() {
delay(500);
input = digitalRead(signal);
if ((input != lastinput) && (input == HIGH)) {
// Если состояние контакта только что изменилось с низкого на высокое (детектор края)
currentBeatTime = millis();
period = currentBeatTime - previousBeatTime; // Вычисляем время между предыдущим ударом и тем, который только что был обнаружен
previousBeatTime = currentBeatTime; // Определить новую привязку времени для вычислений следующего периода
}
lastinput = input; // Сохраняем текущее состояние контакта для сравнения на следующей итерации цикла
// Обнаруживаем, что тактов нет более 2 секунд
if ( (millis() - previousBeatTime) > 2000 )
{
Serial.println("dead");
}
else
{
if (period <= 0)
{
frequency = 0;
}
else
{
frequency = 60000/period; // Вычисляем частоту сердечных сокращений в ударах в минуту (уд/мин) с периодом в миллисекундах
}
Serial.print(frequency);
Serial.println(" : alive! ");
}
}
Я был бы признателен, если бы кто-нибудь ответил мне как можно скорее. Спасибо!
РЕДАКТИРОВАТЬ: Вот схема. Я использовал Fritzing, и, поскольку я новичок в этом деле, это выглядит как полный беспорядок. В любом случае, вот оно:
Спасибо за помощь.
@user3744439, 👍0
Обсуждение1 ответ
Работало ли что-нибудь из этого? Что вы с ним сделали с тех пор? Мой подход к отладке заключался бы в том, чтобы - Временно заменить Bluetooth на проводную последовательную связь; - Закомментируйте или заглушите(*) все, в чем вы не совсем уверены. - Получите минимальное количество работающего аппаратного и программного обеспечения. - Добавляйте обратно по одному элементу оборудования или по одному разделу кода за раз, исправляя все, что вам нужно, чтобы все снова заработало. - Повторяйте, пока все не будет собрано и не начнет работать нормально.
(*) Заглушка — это метод замены функции или раздела кода чем-то тривиальным (и, следовательно, трудно ошибиться!), который позволяет остальному коду в основном работать.
Предположим, вы написали функцию digitalRead(). (Я знаю, что это библиотечная функция, и мы полностью в ней уверены, но на минутку предположим....) Вы можете заменить содержимое вашего digitalRead() одним оператором:
int digitalRead(uint8_t pin){
// здесь закомментирован непроверенный код
// ...
return(4); // любое значение, которое что-то значит для вызывающего кода
}
Теперь вы можете работать над кодом, который вызывает функцию digitalRead(), не имея работающей функции digitalRead(). Вызывающий объект будет получать одно и то же значение каждый раз, когда он вызывает, но этого может быть достаточно, чтобы какая-то его часть работала, пока вы не вернетесь и не исправите свою функцию digitalRead().
- Можно ли измерить скорость акселерометром? Насколько точно?
- Модуль Bluetooth HC-05 мигает красным светом - Arduino Uno
- Модуль Bluetooth HC-05 возвращает закодированные данные
- Мой модуль Bluetooth HC-05 не работает
- Модуль AT-команд HM10 BLE — не работает
- Программные обновления FOTA (микропрограммы по беспроводной сети) с Uno R3
- Создание Bluetooth-мыши с помощью Arduino
- Чтение характеристического значения BLE в Arduino Uno
Я посмотрел на это, но не готов пытаться расшифровать вашу компоновочную схему. Возможно, вам больше повезет с принципиальной схемой., @Milliways
Эй, извините, вот моя схема., @user3744439
«не могу получить данные моей самодельной ЭКГ» — что вы под этим подразумеваете? Может ли ваш хост (в данном случае ПК) идентифицировать JY и правильно подключиться к нему? Если да, и он подключается, но вы ничего не получаете на стороне ПК, попробуйте добавить Serial.print("dummy") в свой метод setup(), чтобы проверить, правильно ли настроен последовательный терминал., @Omer