nRF5 SDK에 온도 센서관련 예제가 있다.
/examples/periphera/temperature
([nRF52 xBee EVM] 기본 동작 테스트 - temperature 테스트 (IAR) 참고)
하지만 아두이노 코드에 뒤져봐도 nrf_temp.h 파일이 없다.
예제 폴더에서 복사해서...
#include "nrf_temp.h"
void setup() {
Serial.begin(115200);
}
int32_t get_temperature(void)
{
int32_t temp;
NRF_TEMP->TASKS_START = 1; /** Start the temperature measurement. */
/* Busy wait while temperature measurement is not finished, you can skip waiting if you enable interrupt for DATARDY event and read the result in the interrupt. */
/*lint -e{845} // A zero has been given as right argument to operator '|'" */
while (NRF_TEMP->EVENTS_DATARDY == 0)
{
// Do nothing.
}
NRF_TEMP->EVENTS_DATARDY = 0;
/**@note Workaround for PAN_028 rev2.0A anomaly 29 - TEMP: Stop task clears the TEMP register. */
temp = (nrf_temp_read() / 4);
/**@note Workaround for PAN_028 rev2.0A anomaly 30 - TEMP: Temp module analog front end does not power down when DATARDY event occurs. */
NRF_TEMP->TASKS_STOP = 1; /** Stop the temperature measurement. */
return temp;
}
void loop() {
int sensorValue = get_temperature();
// print out the value you read:
Serial.println(sensorValue);
delay(500);
}
nRF52의 칩 내부 온도값을 그래프로 출력하면 잘 동작 하는것을 확인 할 수 있다.
반응형