المكونات والإمدادات
Arduino Nano R3
MAX 30102 Heart rate monitor
Adafruit RGB Backlight LCD - 16x2
مقومة متغيرة
حول هذا المشروع
هذا هو رصد معدل ضربات القلب بسيط المصنوع من وحدة استشعار MAX30102. كتبت رمز بسيط يعتمد على مكتبات اردوينو وتظهر القيم على شاشة LCD 16 × 2. يعرض الصف الأول دقات وسطية في الدقيقة ، ويعرض الصف الثاني قيمة حزمة الأشعة المنعكسة. يجب أن تكون هذه القيمة ثابتة لجعل القراءات أكثر دقة.
كود البرمجة
Arduino Nano R3
MAX 30102 Heart rate monitor
Adafruit RGB Backlight LCD - 16x2
مقومة متغيرة
حول هذا المشروع
هذا هو رصد معدل ضربات القلب بسيط المصنوع من وحدة استشعار MAX30102. كتبت رمز بسيط يعتمد على مكتبات اردوينو وتظهر القيم على شاشة LCD 16 × 2. يعرض الصف الأول دقات وسطية في الدقيقة ، ويعرض الصف الثاني قيمة حزمة الأشعة المنعكسة. يجب أن تكون هذه القيمة ثابتة لجعل القراءات أكثر دقة.
كود البرمجة
/* Hardware Connections (Breakoutboard to Arduino): -5V = 5V (3.3V is allowed) -GND = GND -SDA = A4 (or SDA) -SCL = A5 (or SCL) -INT = Not connected The MAX30105 Breakout can handle 5V or 3.3V I2C logic. We recommend powering the board with 5V but it will also run at 3.3V. */ #include <Wire.h> #include "MAX30105.h" #include <LiquidCrystal.h> #include "heartRate.h" MAX30105 particleSensor; LiquidCrystal lcd(12, 11, 5, 4, 3, 2); const byte RATE_SIZE = 4; //Increase this for more averaging. 4 is good. byte rates[RATE_SIZE]; //Array of heart rates byte rateSpot = 0; long lastBeat = 0; //Time at which the last beat occurred float beatsPerMinute; int beatAvg; void setup() { Serial.begin(9600); lcd.begin(16, 2); Serial.println("Initializing..."); // Initialize sensor if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) //Use default I2C port, 400kHz speed { Serial.println("MAX30105 was not found. Please check wiring/power. "); while (1); } Serial.println("Place your index finger on the sensor with steady pressure."); particleSensor.setup(); //Configure sensor with default settings particleSensor.setPulseAmplitudeRed(0x0A); //Turn Red LED to low to indicate sensor is running particleSensor.setPulseAmplitudeGreen(0); //Turn off Green LED } void loop() { long irValue = particleSensor.getIR(); if (checkForBeat(irValue) == true) { //We sensed a beat! long delta = millis() - lastBeat; lastBeat = millis(); beatsPerMinute = 60 / (delta / 1000.0); if (beatsPerMinute < 255 && beatsPerMinute > 20) { rates[rateSpot++] = (byte)beatsPerMinute; //Store this reading in the array rateSpot %= RATE_SIZE; //Wrap variable //Take average of readings beatAvg = 0; for (byte x = 0 ; x < RATE_SIZE ; x++) beatAvg += rates[x]; beatAvg /= RATE_SIZE; } } Serial.print("IR="); Serial.print(irValue); Serial.print(", BPM="); Serial.print(beatsPerMinute); Serial.print(", Avg BPM="); Serial.print(beatAvg); if (irValue < 50000) Serial.print(" No finger?"); Serial.println(); lcd.setCursor(0,0); lcd.print("BPM: "); lcd.print(beatAvg); lcd.setCursor(0,1); lcd.print(" IR: "); lcd.print(irValue); }
ليست هناك تعليقات:
إرسال تعليق