今回はモーターコントロールをするためのESP8266のPWM機能を試してみます。
ESP8266でPWMを使うには、他のArduinoボードと同じように analogWrite を用います。その他に、ESP8266独自のAPIとして、PWMの周波数を設定する analogWriteFreq()、 制御のレンジを決める analogWriteRange() Iが用意されています。
下記のようなスケッチをOTAで書き込んでみました。OTA_setup()、OTA_loop() なんぞやという方は、こちらの記事を参照してください。
実際に動かしてみました。
しかし、下の記事によると、ESP8266のPWMは実はソフトPWMなので多少の誤差がある上に、Duty比も90%までという制約があるようです。
ESP8266 PWM revisited (and reimplemented
https://lurchi.wordpress.com/2016/06/29/esp8266-pwm-revisited-and-reimplemented/
その対策もこちらの記事にあったので試してみたのですが、どうもうまく動かないんだよなぁ。
σ( ̄ε  ̄;)
ESP8266でPWMを使うには、他のArduinoボードと同じように analogWrite を用います。その他に、ESP8266独自のAPIとして、PWMの周波数を設定する analogWriteFreq()、 制御のレンジを決める analogWriteRange() Iが用意されています。
下記のようなスケッチをOTAで書き込んでみました。OTA_setup()、OTA_loop() なんぞやという方は、こちらの記事を参照してください。
static unsigned int led = 13;
void OTA_setup()
{
Serial.begin(115200);
analogWriteFreq(2000);
analogWriteRange(1000);
}
unsigned int duty=0;
bool inc = true;
void OTA_loop()
{
analogWrite(led, duty);
if (inc) {
if (duty++ == 1000) inc = false;
} else {
if (duty-- == 0) inc = true;
}
delay(1);
}
実際に動かしてみました。
しかし、下の記事によると、ESP8266のPWMは実はソフトPWMなので多少の誤差がある上に、Duty比も90%までという制約があるようです。
ESP8266 PWM revisited (and reimplemented
https://lurchi.wordpress.com/2016/06/29/esp8266-pwm-revisited-and-reimplemented/
その対策もこちらの記事にあったので試してみたのですが、どうもうまく動かないんだよなぁ。
σ( ̄ε  ̄;)
HiLetgo OTA WeMos D1 CH340 WiFi 開発ボード ESP8266 ESP-12F For Arduino IDE UNO R3
- 出版社/メーカー: HiLetgo
- メディア: エレクトロニクス
ESP-WROOM-02 32Mビット品 WiFiモジュール 10個
- 出版社/メーカー:
- メディア:
ArduinoとESP8266ではじめる IoTプログラミング
- 出版社/メーカー:
- 発売日: 2016/04/22
- メディア: Kindle版