Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

ESP8266モジュール(ESP-WROOM-02)を試す その27 PWMを使ってみる

PICでは幾度もお世話になっているPWMだが、ArduinoでPWMを使ったことは無い。
もちろんESP8266でPWMを使ったことも無い。

ここまでESP8266を使ってみた経験から言えば、Arduinoと同じように書けば思ったとおりに動いているので、今回も同じように書いてみる。

そうは言っても、そもそもArduinoでの書き方を知らない。
Arduino PWM で検索すると先頭に「Arduino 日本語リファレンス」というサイトが出てきて(たぶんここの和訳https://www.arduino.cc/en/Reference/AnalogWrite)。
Arduinoでの書き方が説明されている。
ここで分かったことは、

analogWrite(pin, value);と書くこと。
valueには0~255を指定すること。
ATmega328の載るArduinoボードでは、デジタルピン3, 5, 6, 9, 10,11で使えること。

などだ。
その後、書き方はESP8266でも同様だが、値が0~1023だということが判明した。
参考にしたのはここだが、PWMに関してはたったの2行しか書いてない。
使えるピンについては0~15と書かれている。
これより前に、Lチカで遊んでいて、GPIO12とGPIO14にLEDがつないであったので、四の五の考えずにそのままやってみた。
他のピンは試していないが、少なくともこの2本は使えるようだ。
ロジックアナライザで実測してみると、周期は1msのようだ。
esp8266_pwm_test_1_01
この周期はどうやって変更するんだろう。
上のサイトには「PWM信号の周波数は約490Hzです。」としか書かれていない。
490Hzでなく1kHzなのは明らかだが、これで固定なのかな?
とりあえず先にデューティ比を試してみるべくvalueを500に設定してみると、Highの部分の長さが490usだった。
esp8266_pwm_test_1_02
1004us / 1024 x 500 = 490us
なので、こちらは計算どおりのデューティ比で出力されている。

ESP8266関連記事一覧へ

このエントリーをはてなブックマークに追加

Posted under: ESP8266


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.