Код 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();
        }

, 👍-2

Обсуждение

У вас есть два недостающих }. Добавьте их, затем используйте 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


1 ответ


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