| 명령어 | 인수 | 반환값 | 동작 |
|---|---|---|---|
Ialt(input, state_var) | bool inputbool &state_var | void | 입력 상승 순간마다 지정한 상태를 ON·OFF로 반전합니다. |
const uint8_t COMMAND_INPUT = 0; const uint8_t MOTOR_OUTPUT = 32; void setup() { Serial.begin(115200); } void loop() { const bool input = IdigitalRead(COMMAND_INPUT, 5); // 입력을 여러 번 연속으로 읽고, 모든 값이 같을 때만 상태를 갱신합니다. HIGH와 LOW가 섞이면 이전 안정 상태를 유지합니다. const bool started = Iup(0, input); // 입력이 OFF에서 ON으로 바뀌는 순간에만 true를 반환합니다. const bool stopped = Idown(0, input); // 입력이 ON에서 OFF로 바뀌는 순간에만 true를 반환합니다. static bool run = false; Ialt(started, run); // 입력 상승 순간마다 지정한 상태를 ON·OFF로 반전합니다. digitalWrite(MOTOR_OUTPUT, run ? HIGH : LOW); if (started) Serial.println(F("motor started")); if (stopped) Serial.println(F("command released")); }
Ialt()는 state_var의 주소로 입력의 이전 상태를 구분합니다. 예제처럼 호출 사이에 유지되는 별도의 bool 상태 변수를 사용해야 합니다.