Код Arduino «Ошибка»
Я делюсь своим кодом. Проблема, с которой я столкнулся, заключается в том, что код выполняет все функции, которые должны быть вызваны, за исключением отображения показаний MAX30100 (для сердечного ритма). Я пробовал этот код, используя переключатели операторов, случаи, if-else, но не смог понять. Может ли кто-нибудь помочь мне в этом вопросе?
unsigned long runGSR() {
total = total - readings[index]; // вычитаем последнее чтение:
readings[index] = analogRead(inputPin); // считываем с датчика:
delay(100);
total = total + readings[index]; // добавляем показания к итогу:
index = index + 1; // переход к следующей позиции в
array:
if (index >= numReadings) //при достижении конца массива
index = 0; // перейдем к началу:
average = total / numReadings; // вычисляем среднее значение:
return average; // отправляем его на компьютер в виде цифр ASCII
}
void ambtemp()
{
reading = analogRead(A2); //снимаем показания с аналогового контакта 2
tempVolts = reading * 5.0 / 1024.0; //преобразует показания в вольты
ambitemp = tempVolts / 0.01; //выходное напряжение /10 милливольт = 1 градус
C
Serial.print(",Ambient Temp:"); // печатает температуру окружающей среды на последовательном мониторе
Serial.println(ambitemp);
delay(10);
}
void hbt() //Функция для измерения частоты пульса (MAX30100), с которой у меня возникли проблемы
{
do
{
pox.update(); // Обязательно вызывайте обновление как можно быстрее
if (millis() - tsLastReport > REPORTING_PERIOD_MS) { //цикл повторяется каждую секунду
lcd.clear();
Serial.print("HR:");
Serial.println(pox.getHeartRate()); //печатаем частоту сердечных сокращений на ЖК-дисплее
delay(100);
ambtemp(); //вызывает функцию температуры окружающей среды
gsr = runGSR(); //вызывает функцию датчика GSR
delay(100);
tsLastReport = millis();
}
@Sannay, 👍-2
Обсуждение1 ответ
Я предполагаю, что вы используете это в качестве источника своего кода:
Это означает, что:
#include "MAX30100_PulseOximeter.h"
PulseOximeter pox;
Ваша проблема в том, что строка:
Serial.println(pox.getHeartRate()); //печатаем частоту сердечных сокращений на ЖК-дисплее
Фактически ничего не печатает на ЖК-дисплее. Он показывает только значение в серийном номере.
Попробуйте использовать lcd.print()
Нет, это не значение печати ни на ЖК-дисплее, ни на последовательном интерфейсе., @Sannay
Вставьте весь свой код в вопрос, пожалуйста., @Filip Franik
Сделанный. проверьте сейчас, пожалуйста, @Sannay
В вашем коде много ошибок. В соответствии с правилами StackExchange вы должны предоставить минимальный, полный и проверяемый пример https://stackoverflow.com/help/mcve, который позволит другим людям проверить решение вашей проблемы. Ваш пример все еще не компилируется, и я не могу его проверить., @Filip Franik
- Данные DHT11 из Arduino UNO в Firebase через ESP8266
- Объяснение кода MPU6050
- Как я могу прервать задержку() при нажатии кнопки?
- Проблема с открытием нескольких текстовых файлов одновременно/по порядку с использованием <SD.h>
- Как остановить серводвигатель в текущем положении при использовании последовательного порта? Я хочу, чтобы он оставался в одном положении при получении «0».
- Как установить управляющий регистр в модуле RTC DS3231 для Arduino UNO R3?
- Как повторить другое действие внутри цикла?
- Клиент веб-сокета Arduino CC3000
У вас есть два недостающих
}
. Добавьте их, затем используйтеctrl+t
в ArduinoIDE, чтобы автоматически отформатировать код, а затем вставьте его снова, пожалуйста. (Пожалуйста, используйте функцию «код» редактора stackexchange, чтобы добавить код как код), @Filip FranikЯ пробую, но это не работает., @Sannay
Любое другое решение... есть какая-то ошибка, из-за которой не отображаются показания MAX30100., @Sannay
Я имел в виду: «Покажите нам свой полный код, чтобы мы могли запустить его на наших симуляторах Arduino». Сейчас код, который вы вставили в вопрос, не компилируется. Никто не может помочь вам прямо сейчас. (Вы можете отредактировать вопрос и изменить код на полный), @Filip Franik
Serial.println(pox.getHeartRate()); //выводит на ЖК-дисплей частоту пульса
.... комментарий не соответствует команде, @jsotolaКогда вы говорите: «Я пробую, но не получается», мы понимаем результат, но нам недостаточно помочь вам. Например, получаете ли вы частичный вывод? Если вы попробуете
lcd.print("HR:");
, вы увидите это на ЖК-дисплее? Если нет, то ваша функция hbt() никогда не вызывается, поскольку внутри функции нет ветвления, препятствующего выполнению этой ссылки. Мы не можем видеть достаточно вашего кода, вы можете нам помочь. Откуда вы взяли образец, который используете, какие библиотеки импортируете и т. д. Кроме того, похоже, что в блоке «DO» нет видимого WHILE/UNTIL, это бесконечный цикл?, @Kelly S. FrenchЯ вижу результат «HR:», напечатанный на ЖК-дисплее, но он не отображает значение датчика, которое должно составлять 60–100 ударов в минуту. Я упомянул основную часть кода и уже включил необходимую библиотеку, необходимую для кода. Какая может быть ошибка, которая вызывает функцию hbt, но печатает ее значение?, @Sannay