【雕爺學編程】Arduino動手做(100)---MAX30102手腕心率模塊3

37款傳感器與執行器的提法,在網絡上廣泛流傳,其實Arduino能夠兼容的傳感器模塊肯定是不止這37種的。鑑於本人手頭積累了一些傳感器和執行器模塊,依照實踐出真知(一定要動手做)的理念,以學習和交流爲目的,這裏準備逐一動手嘗試系列實驗,不管成功(程序走通)與否,都會記錄下來—小小的進步或是搞不掂的問題,希望能夠拋磚引玉。

【Arduino】168種傳感器模塊系列實驗(資料代碼+仿真編程+圖形編程)
實驗一百:MAX30102血氧儀手腕心率脈搏檢測心跳傳感器模塊

程序二:與心跳同步點亮的LED燈
實驗開源圖形編程(Mind+、編玩邊學)

實驗串口返回情況

Arduino實驗場景圖

程序三:通過紅外讀數感知存在
Arduino參考開源代碼

/*
  【Arduino】168種傳感器模塊系列實驗(資料代碼+仿真編程+圖形編程)
  程序三:通過紅外讀數感知存在
*/

#include <Wire.h>
#include "MAX30105.h"

MAX30105 particleSensor;

long samplesTaken = 0; //用於計算 Hz 或讀取速率的計數器
long unblockedValue; //通電時的平均 IR
long startTime; //用於計算測量率

void setup() {
  Serial.begin(9600);
  Serial.println("MAX30105 存在感測示例");

  //初始化傳感器
  if (particleSensor.begin(Wire, I2C_SPEED_FAST) == false) //使用默認 I2C 端口,400kHz 速度
  {
    Serial.println("沒有找到MAX30105,請檢查接線/電源。 ");
    while (1);
  }

  //設置感應最大 18 英寸,最大 LED 亮度
  byte ledBrightness = 0xFF; //選項:0=關到 255=50mA
  byte sampleAverage = 4; //樣本平均值選項:1、2、4、8、16、32
  byte ledMode = 2;  //工作選項:1 = 僅紅色,2 = 紅色 + IR,3 = 紅色 + IR + 綠色
  int sampleRate = 400; //採樣率選項:50、100、200、400、800、1000、1600、3200
  int pulseWidth = 411; //脈寬選項:69、118、215、411
  int adcRange = 2048; //選項:2048、4096、8192、16384

  //使用這些設置來配置傳感器
  particleSensor.setup(ledBrightness, sampleAverage, ledMode, sampleRate, pulseWidth, adcRange);

  particleSensor.setPulseAmplitudeRed(0); //關閉紅色 LED
  particleSensor.setPulseAmplitudeGreen(0); //關閉綠色 LED

  //上電時取平均 IR 讀數
  unblockedValue = 0;
  for (byte x = 0 ; x < 32 ; x++)
  {
    unblockedValue += particleSensor.getIR(); //讀取 IR 值
  }
  unblockedValue /= 32;

  startTime = millis();
}

void loop() {
  samplesTaken++;

  Serial.print("IR[");
  Serial.print(particleSensor.getIR());
  Serial.print("] 赫茲[");
  Serial.print((float)samplesTaken / ((millis() - startTime) / 1000.0), 2);
  Serial.print("]");

  long currentDelta = particleSensor.getIR() - unblockedValue;

  Serial.print(" 增量[");
  Serial.print(currentDelta);
  Serial.print("]");

  if (currentDelta > (long)100)
  {
    Serial.print("開始測量!");
  }

  Serial.println();
  delay(1000);
}

  

實驗串口返回情況

程序四:讀取板載溫度傳感器
Arduino參考開源代碼

/*
  【Arduino】168種傳感器模塊系列實驗(資料代碼+仿真編程+圖形編程)
  程序四:讀取板載溫度傳感器
  下載庫: http://librarymanager/All#SparkFun_MAX30105
*/

#include <Wire.h>

#include "MAX30105.h"
MAX30105 particleSensor;

void setup() {
  Serial.begin(9600);
  Serial.println("正在初始化...");

  // 初始化傳感器
  if (particleSensor.begin(Wire, I2C_SPEED_FAST) == false) //使用默認 I2C 端口,400kHz 速度
  {
    Serial.println("沒有找到MAX30105,請檢查接線/電源。");
    while (1);
  }

  //LED 的功率非常低,不會對溫度讀數產生太大影響,但是
  //您可能想要關閉 LED 以避免任何局部加熱
  particleSensor.setup(0); //配置傳感器。關閉 LED
  //particleSensor.setup(); //配置傳感器。使用 25mA 驅動 LED

  particleSensor.enableDIETEMPRDY(); //啓用臨時就緒中斷,這是必需的。
}

void loop() {
  float temperature = particleSensor.readTemperature();

  Serial.print("攝氏溫度=");
  Serial.print(temperature, 4);

  float temperatureF = particleSensor.readTemperatureF();
  Serial.print(" 華氏溫度=");
  Serial.println(temperatureF, 4);

  Serial.println();
  delay(1000);

}

  實驗串口返回情況

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章