반응형
| msTimer2 library 설치 후 컴파일 오류!
In file included from C:\Users\tmddm\arduino\Temperature_Sensor\Temperature_Sensor.ino:5:
C:\Users\tmddm\OneDrive\����\Arduino\libraries\MsTimer2/MsTimer2.h:9:2: error: #error MsTimer2 library only works on AVR architecture
9 | #error MsTimer2 library only works on AVR architecture
AVR architecture에서는 msTimer2를 사용할 수 없다는데,
아키텍처가 다르다 = 아두이노의 cpu의 구조가 다르다
결국 현재 내가 쓰고 있는 wemos esp-8266은 사용할 수 없는 msTimer2
(아두이노 우노에서는 될 것이다... 아마도..?)
| 해결방법
- esp-8266 아키텍처에 맞는 Time Interrupt 라이브러리로 대체해서 사용하자
- 컴파일 시 아키텍처를 변경해서(esp-8266은 AVR architecture가 아니지만 끼워 넣는 식으로..?) 해결할 수 있다는데 이 방법은 정확히 모르겠다
- Time Interrupt를 간단하게 구현해보자
나는 3번째 방법으로 해결해보았다.
Time Interrupt가 무엇인지 모른다면 밑에 링크를 참고하자.
간단히 습도 센서를 통해 1초마다 값을 가져오는 기능을 구현했다.
loop 흐름을 방해하지 않는 간단한 Time Interrupt를 구현해보았다.
#include <DHT.h>
#define PHTPIN D6
#define DHTTYPE DHT11
#define TIMER_INTERVAL_MS 1000 * 10
DHT dht(PHTPIN, DHTTYPE);
unsigned mark = 0;
class Temperature{
public:
void set() {
pinMode(PHTPIN, INPUT);
dht.begin();
}
float get() {
float h = dht.readHumidity();
return (h);
}
}tempt;
void setup() {
Serial.begin(9600);
tempt.set();
}
void loop() {
//time interrupt part
if (mark < millis()) {
mark = millis() + TIMER_INTERVAL_MS;
Serial.printf("humidity : %.2f\n", tempt.get());
}
}
millis()는 아두이노 보드가 현재 프로그램을 돌리기 시작한 후 지난 밀리 초 숫자를 반환한다. 이 숫자는 약 50일 후에 오버플로우(0으로 돌아감)가 된다.
728x90
'IoT > 아두이노' 카테고리의 다른 글
PlatformIO Serial Monitor 사용법 (0) | 2022.01.26 |
---|---|
ESP8266 PlatformIO 프로젝트 설정하기 (0) | 2022.01.26 |
PlatformIO Library 추가하기 (0) | 2022.01.19 |
vscode에서 아두이노 빌드 오류 (0) | 2022.01.10 |
Mac에서 Arduino VSCode 개발환경 세팅 (0) | 2022.01.09 |
댓글