IanalogWrite()는 사용자 정수값을 아날로그 출력 범위로 변환하여 출력합니다.
void IanalogWrite(uint8_t ch, int32_t min, int32_t max, int32_t value)
| 명령어 | 인수 | 반환값 | 동작 |
|---|---|---|---|
IanalogWrite(ch, min, max, value) | uint8_t ch — 출력할 아날로그 출력 핀 또는 채널int32_t min — 사용자 입력 범위의 최솟값int32_t max — 사용자 입력 범위의 최댓값int32_t value — 출력할 사용자 입력값 | void | 사용자 정수값을 아날로그 출력 범위로 변환하여 출력합니다. |
const uint8_t DEMAND_INPUT = A0; const uint8_t OUTPUT_CHANNEL = 0; void setup() { Serial.begin(115200); } void loop() { const int32_t demandPercent = IanalogRead(DEMAND_INPUT, 0, 100); // 아날로그 입력값을 지정한 정수 범위로 변환합니다. IanalogWrite(OUTPUT_CHANNEL, 0, 100, demandPercent); // 사용자 정수값을 아날로그 출력 범위로 변환하여 출력합니다. Serial.print(F("demand=")); Serial.print(demandPercent); Serial.println(F("%")); delay(250); }
ch, min, max, value이다.min과 max는 전기적 출력 범위를 직접 설정하는 값이 아니라 value를 해석하는 사용자 입력 범위이다.value가 min~max 범위를 벗어나면 내부 Iscalef()에 의해 가까운 끝값으로 제한된다.min을 max보다 크게 지정하면 출력 방향이 반전된다.min과 max가 같으면 출력값은 0이 된다.analogWriteInit()이나 analogWriteFreq()로 Timer TOP을 변경하면 실제 analogWrite() 출력 범위도 변경되므로, 16비트 0~65535 해상도를 유지하려면 기본 TOP 65535를 사용한다.