Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wire.h>
- #include "MAX30100_PulseOximeter.h"
- #include <SoftwareSerial.h>
- #define REPORTING_PERIOD_MS 1000
- PulseOximeter pox;
- uint32_t tsLastReport = 0;
- SoftwareSerial mySerial(10, 11); // RX, TX
- int num = 0;
- int chng = 0;
- int chngOld = 0;
- int com = 12;
- int relay1 = 8;
- int relay = 7;
- int buzzer = 9;
- int ox = 0 ;
- int hr = 0;
- float kg = 0.00;
- float total_v, ttv;
- int count = 0;
- String data_from_display = "";
- float adAir, adO2;
- ////////////////////////////////////////////////////
- void onBeatDetected()
- {
- Serial.println("Beat!");
- }
- ////////////////////////////////////////////////////
- void controlVulve()
- {
- //ox = pox.getSpO2();
- if (ox == 0)
- {
- digitalWrite(relay, 1);
- digitalWrite(relay1, 1);
- digitalWrite(buzzer, LOW);
- }
- else if (ox >= 95)
- {
- digitalWrite(relay, 1);
- digitalWrite(relay1, 1);
- digitalWrite(buzzer, LOW);
- }
- else if (ox < 95)
- {
- digitalWrite(relay, 0);
- digitalWrite(relay1, 0);
- digitalWrite(buzzer, HIGH);
- delay(2000);
- digitalWrite(relay, 1);
- digitalWrite(relay1, 1);
- digitalWrite(buzzer, HIGH);
- delay(3000);
- }
- }
- ////////////////////////////////////////
- void TFTreading()
- {
- hr = pox.getHeartRate();
- //ox =pox.getSpO2(); // add O2 Value
- mySerial.print("hr_ratio.val=");
- mySerial.print(hr);
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.print("ox_aito.val=");
- mySerial.print(ox);
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.write(0xff);
- }
- void fio2reading()
- {
- //ox = pox.getSpO2(); // add O2 Value
- if ( ox <= 94 && ox >= 85 ) {
- chng = 1;
- mySerial.print("fio2.val=");
- mySerial.print("40");
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.print("m_ventilation.val=");
- mySerial.print("5");
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.write(0xff);
- adAir = total_v * 0.75 * 60;
- mySerial.print("adj_air.val=");
- mySerial.print(int(adAir));
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.write(0xff);
- adO2 = total_v * 0.25 * 60;
- mySerial.print("adj_o2.val=");
- mySerial.print(int(adO2));
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.write(0xff);
- }
- else if (ox <= 84 && ox >= 75 ) {
- chng = 2;
- mySerial.print("fio2.val=");
- mySerial.print("60");
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.print("m_ventilation.val=");
- mySerial.print("7");
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.write(0xff);
- adAir = total_v * 0.5 * 60;
- mySerial.print("adj_air.val=");
- mySerial.print(int(adAir));
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.write(0xff);
- adO2 = total_v * 0.5 * 60;
- mySerial.print("adj_o2.val=");
- mySerial.print(int(adO2));
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.write(0xff);
- }
- else if (ox <= 74 && ox >= 65 ) {
- chng = 3;
- mySerial.print("fio2.val=");
- mySerial.print("80");
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.print("m_ventilation.val=");
- mySerial.print("10");
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.write(0xff);
- adAir = total_v * 0.25 * 60;
- mySerial.print("adj_air.val=");
- mySerial.print(int(adAir));
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.write(0xff);
- adO2 = total_v * 0.75 * 60;
- mySerial.print("adj_o2.val=");
- mySerial.print(int(adO2));
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.write(0xff);
- }
- else if (ox == 0 || ox > 94) {
- // chng = 0;
- mySerial.print("fio2.val=");
- mySerial.print("0");
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.print("m_ventilation.val=");
- mySerial.print("0");
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.print("adj_air.val=");
- mySerial.print("0");
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.print("adj_o2.val=");
- mySerial.print("0");
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.write(0xff);
- }
- if (chng == chngOld) {
- num++;
- if (num > 1000) {
- digitalWrite(com, 0);
- num = 0;
- }
- }
- else if (chng != chngOld) {
- digitalWrite(com, 1);
- chngOld = chng;
- }
- }
- void TVreading()
- {
- delay(50);
- ttv = kg * 0.007;
- long lon = ttv * 10;
- mySerial.print("tidal_v.val=");
- mySerial.print(lon);
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.write(0xff);
- total_v = (kg * 0.007) / 2;
- mySerial.print("t_volume.val=");
- mySerial.print(int(total_v * 60));
- mySerial.write(0xff);
- mySerial.write(0xff);
- mySerial.write(0xff);
- }
- ///////////////////////////////////////////////////////////////////
- ///////////////////////////////////////////////////////////////////
- void setup()
- {
- Serial.begin(9600);
- mySerial.begin(9600);
- Serial.print("Initializing pulse oximeter..");
- pinMode(relay, OUTPUT);
- pinMode(relay1, OUTPUT);
- pinMode(buzzer, OUTPUT);
- pinMode(com, OUTPUT);
- digitalWrite(com, 0);
- digitalWrite(relay, 1);
- digitalWrite(relay1, 1);
- if (!pox.begin()) {
- Serial.println("FAILED");
- for (;;);
- } else {
- Serial.println("SUCCESS");
- }
- pox.setOnBeatDetectedCallback(onBeatDetected);
- }
- /////////////////////////////////////////////////////////////////////
- void loop()
- {
- pox.update();
- if (mySerial.available()) { // If anything comes in Serial1 (pins 0 & 1)
- data_from_display = "";
- delay(30);
- while (mySerial.available()) {
- data_from_display += char(mySerial.read());
- }
- if (data_from_display.toFloat() == 0) {}
- else {
- kg = data_from_display.toFloat();
- Serial.println(kg);
- }
- }
- if (millis() - tsLastReport > REPORTING_PERIOD_MS) {
- ox = pox.getSpO2(); // change Value of OX Here
- Serial.print("Heart rate:");
- Serial.print(pox.getHeartRate());
- Serial.print("bpm / O2:");
- Serial.print(ox);
- Serial.println("%");
- //TFTreading();
- count = count + 1;
- if (count == 2) {
- TFTreading();
- TVreading();
- fio2reading();
- controlVulve();
- // adj_reading();
- if (!pox.begin()) {
- Serial.println("FAILED");
- for (;;);
- } else {
- Serial.println("SUCCESS");
- }
- count = 0;
- }
- //fio2reading();
- //controlVulve();
- //TVreading();
- tsLastReport = millis();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement