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を使用します。