[μλμ΄λ Έ] λ©ν° νμ€νΉ νκΈ° - millis() & μΈν°λ½νΈ & νμ΄λ¨Έ
<λ³Έ λΈλ‘κ·Έλ μλ¦¬μ€ IoT 1λ₯Ό μ°Έκ³ ν΄μ 곡λΆνλ©° μμ±νμμ΅λλ€ :-)>
(μ½λλ μ μκΆμ 곡μ μλ©λλΉ!!)
π₯ delay μμ΄ μμ μν
: μλ μμ λ€μμ delay μ£Όκ³ loop λ΄μ ꡬμ±νλ©΄ μ£ΌκΈ°μ μΌλ‘ μμ μν κ°λ₯
π millis() ν¨μ
unsigned long time = millis();
: μλμ΄λ Έκ° νλ‘κ·Έλ¨μ μμν λ€ κ²½κ³Όλ μκ°μ ms λ¨μλ‘ λ³ν
: delay μμ΄ μ£ΌκΈ°μ μΈ λμ μν κ°λ₯
: μκ° κ²½κ³Ό 쑰건 λ§μ‘±ν λλ§ μμ μνν¨
π₯ μλμ΄λ Έ λ©μΆμ§ λ§κΈ°
: λ©μΆμ§ μκ³ LEDλ₯Ό κΉλΉ‘μ΄κΈ° μν΄ millis ν¨μλ₯Ό νμ©νκΈ°
π₯ μΈν°λ½νΈ
: μ€ν μ€μΈ νλ‘κ·Έλ¨μμ μ¦μ μ²λ¦¬ν΄μΌ ν νλ‘κ·Έλ¨μ΄ λ°μλλ κ²
: μ€ν μ€μΈ νλ‘κ·Έλ¨μ μ€λ¨νκ³ μ¦μ μ€νν΄μΌ ν νλ‘κ·Έλ¨ μν
// μΈν°λ½νΈκ° λ°μνμ λ μ€νλ callback ν¨μ
attachInterrupt(interrupt, callback, mode);
// μΈν°λ½νΈκ° λ°μνμ λ μνν callback ν¨μ μ§μ
void callback();
π μΈν°λ½νΈ μκ·Έλ
LOW : μ λ ₯ κ° LOW
CHANGE : μ λ ₯ κ° μν λ³ν λ
RISING : μ λ ₯ κ°μ΄ LOW μμ HIGH
FALLING : μ λ ₯ κ°μ΄ HIGH μμ LOW
π₯ μ¦κ° λ°μνλ κ·Έλ¦° λΌμ΄νΈ
: νλ LEDλ 1μ΄λ§λ€ κΉλΉ‘μ΄κ³ λ²νΌμ λλ₯΄λ©΄ λ Ήμ LEDκ° μ¦κ° μ λ±νκΈ°
π₯ νμ΄λ¨Έ
: μλμ΄λ Έ 컨νΈλ‘€λ¬μ λ΄μ₯λ νλμ¨μ΄μ ν ꡬμ±μμ
: Timer 0, Timer1, Timer2 3κ°μ νμ΄λ¨Έ μμ
π TimerOne λΌμ΄λΈλ¬λ¦¬
// Timer1 μ μκ° κ°κ²© μ€μ
Timer1.initialize(1000);
// μκ° λ§λ£λλ©΄ μνν callback ν¨μ λ±λ‘
Timer1.attachInterrupt(callback);
π Timer-master λΌμ΄λΈλ¬λ¦¬
: millis() ν¨μ νμ©ν΄μ ν΄λ§ λ°©μμΌλ‘ νμ΄λ¨Έ ꡬν
ν΄λ§ - μ΄λ€ νΉμ ν μ¬κ±΄μ΄ λ°μνλμ§ λ°λ³΅μ μΌλ‘ κ²μ¬, μ§μ ν λμμ μννλ κ²
#import "Timer.h"
// Timer κ°μ²΄ μμ±
Timer t;
// pin μνλ₯Ό 맀 interval λ§λ€ λ°μ
t.oscillate(pin, interval, signal);
// 맀 interval λ§λ€ callback ν¨μ μ€ν
t.every(interval, callback);
// νμ΄λ¨Έ μ΄λ²€νΈμ κ΄λ ¨λ λͺ¨λ κΈ°λ₯μ μννλ ν¨μλ‘ loop λ΄ κΌ νΈμΆ
t.update();
π μμΉλ νμ΄λ¨Έ(WDT, Watchdog Timer)
: μμ€ν μ ν΅μ ν μ μλ μμΈκ° λ°μνλ©΄ μλμΌλ‘ μμ€ν μ 리μ
π₯ νμ΄λ¨Έλ₯Ό λ°κΏμ£ΌμΈμ
: λ κ°μ LED λ₯Ό κ°κ° λ€λ₯Έ μ£ΌκΈ° (1000ms, 700ms)λ‘ κΉλΉ‘μ΄λλ‘ λμ
: Timer 1μ μννΈμ¨μ΄λ‘ ꡬνλ νμ΄λ¨Έ λΌμ΄λΈλ¬λ¦¬(Timer-master)λ₯Ό νμ©νλλ‘ λ°κΎΈκΈ°