• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino - wielozadaniowość problem
#1
Witam,
Jestem laikiem jeśli chodzi o Arduino. Chciałbym zrobić sobie większy projekt, a mianowicie monitor oddechu. Niestety na samym starcie już nie mogę sobie poradzić. Początkowym założeniem mojego projektu jest wykrycie bezdechu, a więc posłużyłem się pulsoksymetrem MAX30100 oraz termoparą MAX6675. Pulsoksymetr mierzy puls( który można zaobserwować na wyświetlaczu), a termopara temperaturę(można ją podejrzeć w porcie szeregowym), która jest przy nosie ( wysoka temp = wydech, niska temp = wdech), w momencie wykrycia stałej temp np przez 20s i słabszego pulsu, ma się coś działać wibracja/sygnał itp. ( późniejsza faza projektu)

Mam problem z kodem, który jest następujący :
  
#include <LiquidCrystal.h>
#include <Wire.h>

#include "MAX30100_PulseOximeter.h"

#define OKRES_WYSWIETLANIA 200

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);   

uint8_t saturacja;

float tetno;

PulseOximeter max30100;

uint32_t poprzedniOdczyt = 0;

#include "max6675.h"



int ktcSO = 36;

int ktcCS = 37;

int ktcCLK = 38;



MAX6675 ktc(ktcCLK, ktcCS, ktcSO);



void setup() {

    Serial.begin(9600);

   

  lcd.begin(16,2);

  lcd.setCursor(0,0);

  max30100.begin();

  max30100.setIRLedCurrent(MAX30100_LED_CURR_11MA); //ustawienie pradu diody podczerwonej

}



void loop() {

  puls();

  temp();

}



void puls(){

max30100.update();

  if (millis() - poprzedniOdczyt > OKRES_WYSWIETLANIA) {

    saturacja = max30100.getSpO2();

    tetno = max30100.getHeartRate();

    lcd.clear();

    lcd.setCursor(0,0);

    lcd.print("Tetno: ");

    lcd.print(tetno);

    lcd.print(" bpm");

    lcd.setCursor(0,1);

    lcd.print("Saturacja: ");

    lcd.print(saturacja);

    lcd.print("%");

    poprzedniOdczyt = millis();

  }

}



void temp(){

    Serial.print("Deg C = ");

  Serial.print(ktc.readCelsius());

  Serial.print("\t Deg F = ");

  Serial.println(ktc.readFahrenheit());



  delay(500);
}




Pulsoksymetr działa, jeśli wywołanie funkcji temperatury jest za komentowane i na odwrót.
Moje pytanie brzmi, jak sobie z tym poradzić, żeby zarówno pulsoksymetr jak i termopara działa w tym samym czasie (równolegle/współbieżnie).
 
Odpowiedź
  


Wiadomości w tym wątku
Arduino - wielozadaniowość problem - przez Trevciu - 30-07-2019, 19:23

Skocz do:


Przeglądający: 1 gości