【C/C++第4回】LEDチカ・PWM
今日はタイトルの通り、LチカとPWM点灯とダイナミックをしたいと思います。
マイコンを使う際に、基板にはんだ付けされているピンヘッダ(以下ピン)を使用しているわけですがそれぞれがどういう役割を持っているのかを把握してから使用しなければなりません。
Nucleoの場合は親切なことに簡潔に書かれているものが用意されているので、最初はそれを見て判断していけば問題ないと思います。
ポートの設定方法
DigitalOut myled(指定したポート);
このように設定すると、指定したポートがデジタル出力ポートになります。
DigitalOut | デジタル出力 |
DigitalIn | デジタル入力 |
AnalogIn | アナログ入力 |
PwmOut | PWM出力 |
最初はこれらを使えるようになっていれば問題ないと思います。(他にもいろいろあります)
では実際にLチカからやってみましょう。
#include "mbed.h" DigitalOut myled(PB_4); int main() { while(1) { myled = 1; wait(0.1); // 100 ms myled = 0; wait(1.0); // 1 sec } }
これでPB_4がデジタル出力のポートになり、LEDが点滅するようになります。
wait関数の中は秒単位での設定になりますが、浮動小数点の入力もできるようになっています。
PWM点灯をします。
PWMはPulse Width Modulationの略で、周期とデューティ比の指定により抵抗や半導体にかける電圧を調整する方法です。
ただ、今回は特に周期などは指定していません。後日サーボモータを動かしたいと思うので、その時に改めて説明します。
#include "mbed.h" PwmOut led(PB_4); int main() { while(1) { for(float i = 0.0f; i < 1.0f; i += 0.1f) { led = i; wait(0.1); } } }
これで徐々にLEDの明るさが変化します。Digital OutがPwmOutになっているため、コンストラクタへの指定が違うことに注意してください。