Advertisement
safwan092

Untitled

Dec 4th, 2021
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.70 KB | None | 0 0
  1. #include <Wire.h>
  2. #include "MAX30100_PulseOximeter.h"
  3. #include <SoftwareSerial.h>
  4. #define REPORTING_PERIOD_MS 1000
  5. PulseOximeter pox;
  6. uint32_t tsLastReport = 0;
  7.  
  8. SoftwareSerial mySerial(10, 11); // RX, TX
  9. int num = 0;
  10. int chng = 0;
  11. int chngOld = 0;
  12. int com = 12;
  13. int relay1 = 8;
  14. int relay = 7;
  15. int buzzer = 9;
  16. int ox = 0 ;
  17. int hr = 0;
  18. float kg = 0.00;
  19. float total_v, ttv;
  20. int count = 0;
  21. String data_from_display = "";
  22. float adAir, adO2;
  23.  
  24. ////////////////////////////////////////////////////
  25.  
  26.  
  27. void onBeatDetected()
  28. {
  29. Serial.println("Beat!");
  30.  
  31. }
  32.  
  33.  
  34. ////////////////////////////////////////////////////
  35.  
  36. void controlVulve()
  37. {
  38. //ox = pox.getSpO2();
  39. if (ox == 0)
  40. {
  41. digitalWrite(relay, 1);
  42. digitalWrite(relay1, 1);
  43. digitalWrite(buzzer, LOW);
  44. }
  45. else if (ox >= 95)
  46. {
  47. digitalWrite(relay, 1);
  48. digitalWrite(relay1, 1);
  49. digitalWrite(buzzer, LOW);
  50. }
  51. else if (ox < 95)
  52. {
  53. digitalWrite(relay, 0);
  54. digitalWrite(relay1, 0);
  55. digitalWrite(buzzer, HIGH);
  56. delay(2000);
  57. digitalWrite(relay, 1);
  58. digitalWrite(relay1, 1);
  59. digitalWrite(buzzer, HIGH);
  60. delay(3000);
  61. }
  62. }
  63.  
  64. ////////////////////////////////////////
  65.  
  66. void TFTreading()
  67. {
  68. hr = pox.getHeartRate();
  69. //ox =pox.getSpO2(); // add O2 Value
  70.  
  71. mySerial.print("hr_ratio.val=");
  72. mySerial.print(hr);
  73. mySerial.write(0xff);
  74. mySerial.write(0xff);
  75. mySerial.write(0xff);
  76.  
  77. mySerial.print("ox_aito.val=");
  78. mySerial.print(ox);
  79. mySerial.write(0xff);
  80. mySerial.write(0xff);
  81. mySerial.write(0xff);
  82. }
  83. void fio2reading()
  84. {
  85. //ox = pox.getSpO2(); // add O2 Value
  86.  
  87. if ( ox <= 94 && ox >= 85 ) {
  88. chng = 1;
  89. mySerial.print("fio2.val=");
  90. mySerial.print("40");
  91. mySerial.write(0xff);
  92. mySerial.write(0xff);
  93. mySerial.write(0xff);
  94. mySerial.print("m_ventilation.val=");
  95. mySerial.print("5");
  96. mySerial.write(0xff);
  97. mySerial.write(0xff);
  98. mySerial.write(0xff);
  99. adAir = total_v * 0.75 * 60;
  100. mySerial.print("adj_air.val=");
  101. mySerial.print(int(adAir));
  102. mySerial.write(0xff);
  103. mySerial.write(0xff);
  104. mySerial.write(0xff);
  105. adO2 = total_v * 0.25 * 60;
  106. mySerial.print("adj_o2.val=");
  107. mySerial.print(int(adO2));
  108. mySerial.write(0xff);
  109. mySerial.write(0xff);
  110. mySerial.write(0xff);
  111. }
  112.  
  113. else if (ox <= 84 && ox >= 75 ) {
  114. chng = 2;
  115. mySerial.print("fio2.val=");
  116. mySerial.print("60");
  117. mySerial.write(0xff);
  118. mySerial.write(0xff);
  119. mySerial.write(0xff);
  120. mySerial.print("m_ventilation.val=");
  121. mySerial.print("7");
  122. mySerial.write(0xff);
  123. mySerial.write(0xff);
  124. mySerial.write(0xff);
  125. adAir = total_v * 0.5 * 60;
  126. mySerial.print("adj_air.val=");
  127. mySerial.print(int(adAir));
  128. mySerial.write(0xff);
  129. mySerial.write(0xff);
  130. mySerial.write(0xff);
  131. adO2 = total_v * 0.5 * 60;
  132. mySerial.print("adj_o2.val=");
  133. mySerial.print(int(adO2));
  134. mySerial.write(0xff);
  135. mySerial.write(0xff);
  136. mySerial.write(0xff);
  137. }
  138. else if (ox <= 74 && ox >= 65 ) {
  139. chng = 3;
  140. mySerial.print("fio2.val=");
  141. mySerial.print("80");
  142. mySerial.write(0xff);
  143. mySerial.write(0xff);
  144. mySerial.write(0xff);
  145. mySerial.print("m_ventilation.val=");
  146. mySerial.print("10");
  147. mySerial.write(0xff);
  148. mySerial.write(0xff);
  149. mySerial.write(0xff);
  150. adAir = total_v * 0.25 * 60;
  151. mySerial.print("adj_air.val=");
  152. mySerial.print(int(adAir));
  153. mySerial.write(0xff);
  154. mySerial.write(0xff);
  155. mySerial.write(0xff);
  156. adO2 = total_v * 0.75 * 60;
  157. mySerial.print("adj_o2.val=");
  158. mySerial.print(int(adO2));
  159. mySerial.write(0xff);
  160. mySerial.write(0xff);
  161. mySerial.write(0xff);
  162. }
  163. else if (ox == 0 || ox > 94) {
  164. // chng = 0;
  165. mySerial.print("fio2.val=");
  166. mySerial.print("0");
  167. mySerial.write(0xff);
  168. mySerial.write(0xff);
  169. mySerial.write(0xff);
  170. mySerial.print("m_ventilation.val=");
  171. mySerial.print("0");
  172. mySerial.write(0xff);
  173. mySerial.write(0xff);
  174. mySerial.write(0xff);
  175.  
  176. mySerial.print("adj_air.val=");
  177. mySerial.print("0");
  178. mySerial.write(0xff);
  179. mySerial.write(0xff);
  180. mySerial.write(0xff);
  181.  
  182. mySerial.print("adj_o2.val=");
  183. mySerial.print("0");
  184. mySerial.write(0xff);
  185. mySerial.write(0xff);
  186. mySerial.write(0xff);
  187. }
  188. if (chng == chngOld) {
  189. num++;
  190. if (num > 1000) {
  191. digitalWrite(com, 0);
  192. num = 0;
  193. }
  194. }
  195. else if (chng != chngOld) {
  196. digitalWrite(com, 1);
  197. chngOld = chng;
  198. }
  199. }
  200. void TVreading()
  201. {
  202. delay(50);
  203. ttv = kg * 0.007;
  204. long lon = ttv * 10;
  205. mySerial.print("tidal_v.val=");
  206. mySerial.print(lon);
  207. mySerial.write(0xff);
  208. mySerial.write(0xff);
  209. mySerial.write(0xff);
  210. total_v = (kg * 0.007) / 2;
  211. mySerial.print("t_volume.val=");
  212. mySerial.print(int(total_v * 60));
  213. mySerial.write(0xff);
  214. mySerial.write(0xff);
  215. mySerial.write(0xff);
  216.  
  217. }
  218.  
  219. ///////////////////////////////////////////////////////////////////
  220.  
  221.  
  222. ///////////////////////////////////////////////////////////////////
  223.  
  224. void setup()
  225. {
  226. Serial.begin(9600);
  227. mySerial.begin(9600);
  228. Serial.print("Initializing pulse oximeter..");
  229. pinMode(relay, OUTPUT);
  230. pinMode(relay1, OUTPUT);
  231. pinMode(buzzer, OUTPUT);
  232. pinMode(com, OUTPUT);
  233. digitalWrite(com, 0);
  234. digitalWrite(relay, 1);
  235. digitalWrite(relay1, 1);
  236. if (!pox.begin()) {
  237. Serial.println("FAILED");
  238. for (;;);
  239. } else {
  240. Serial.println("SUCCESS");
  241. }
  242. pox.setOnBeatDetectedCallback(onBeatDetected);
  243. }
  244.  
  245. /////////////////////////////////////////////////////////////////////
  246.  
  247. void loop()
  248. {
  249. pox.update();
  250.  
  251. if (mySerial.available()) { // If anything comes in Serial1 (pins 0 & 1)
  252. data_from_display = "";
  253. delay(30);
  254. while (mySerial.available()) {
  255. data_from_display += char(mySerial.read());
  256. }
  257. if (data_from_display.toFloat() == 0) {}
  258. else {
  259. kg = data_from_display.toFloat();
  260. Serial.println(kg);
  261. }
  262.  
  263. }
  264. if (millis() - tsLastReport > REPORTING_PERIOD_MS) {
  265. ox = pox.getSpO2(); // change Value of OX Here
  266. Serial.print("Heart rate:");
  267. Serial.print(pox.getHeartRate());
  268. Serial.print("bpm / O2:");
  269. Serial.print(ox);
  270. Serial.println("%");
  271.  
  272. //TFTreading();
  273. count = count + 1;
  274. if (count == 2) {
  275. TFTreading();
  276. TVreading();
  277. fio2reading();
  278. controlVulve();
  279.  
  280. // adj_reading();
  281. if (!pox.begin()) {
  282. Serial.println("FAILED");
  283. for (;;);
  284. } else {
  285. Serial.println("SUCCESS");
  286. }
  287. count = 0;
  288. }
  289. //fio2reading();
  290. //controlVulve();
  291. //TVreading();
  292. tsLastReport = millis();
  293. }
  294.  
  295. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement