グラビアアイドルについて語るブログ。
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
前回の実験と同様にフルカラー LED を使用し、PWM で色を変える実験をしました。
タイマ割り込みハンドラで「赤のみ点灯 → 緑のみ点灯 → 青のみ点灯」を繰り返すのですが、その都度デューティ比を設定することで、さまざまな色になります。 同時には1色しか点灯しないのでトランジスタは必須ではないと考えましたが、勉強を兼ねて追加してみました。かなり明るくなったと思います。 そろそろ回路図描かなきゃいけませんね。 [CON2-25] TOP11 → 10kΩ → 2SA1015(E) [CON3-1] +3.3V → 2SA1015(B) 2SA1015(C) → (+)LED LED(R-) → 680Ω → P90 [CON1-1] LED(G-) → 680Ω → P91 [CON1-2] LED(B-) → 680Ω → P92 [CON1-3] 以下、主要なコードです。RGB 各色において65段階で変化させています。 また、init_timer() 内の TP1OL1 の設定ですが、トランジスタを入れる前はハイレベルスタートで点灯→消灯だったのですが、トランジスタを入れると消灯→点灯になりました。
【備考】gcc で開発しています。 PR
今回はフルカラー LED を点灯させてみました。使用した LED は、日亜 NSTM515AS です。
アノードコモンですので、次のように接続しています。 [CON3-1] +3.3V → (+)LED LED(R-) → 680Ω → [CON1-1] P90 LED(G-) → 680Ω → [CON1-2] P91 LED(B-) → 680Ω → [CON1-3] P92 データシートを見て、抵抗値は赤で400Ω弱、青・緑では50Ωくらいで計算していたのですが、試しに680Ωで点灯させてみたところ、実験するには十分明るかったので、各色すべて680Ωとしました。さすがに、青単色だと若干暗い感じはしますが。 以下、主要なコードです。約1秒ごとに、以下の点灯パターンで色が変化します。 無点灯 → 赤 → 緑 → 赤+緑 → 青 → 赤+青 → 緑+青 → 赤+緑+青
PWM と組み合わせたりすると、癒し効果の演出も可能ではないかと思います。 【備考】gcc で開発しています。
PWM で LED の明るさを変える実験の続きです。
前回の実験では、割り込みハンドラ内でデューティ比を変更しようとすると動作しなかったと書きましたが、やり直すと動作してしまいました。 多分つまらないミスをしていたのだと思いますが、シリアルやキャラクタ LCD などで簡単な確認くらいはした方がいいですね(汗) 以下、主要なコードです。
【備考】gcc で開発しています。
PWM で LED の明るさを変える実験を行いました。
前回の実験と同じ回路を使用しています。 [CON2-25] TOP11 → 680Ω → (+)LED(-) → GND [CON3-10] デューティ比は10%ずつ増加・減少させています。TMP1 の周期25msというのは、デューティ比が10%の時にチカチカしないという基準で決定しました。 以下、主要なコードです。
当初、デューティ比の変更は INTTP1CC0 割り込みハンドラ内で行う計画だったのですが、期待通りに動作してくれませんでした。スタティック変数やグローバル変数を使うと変になる感じなのですが、まだ詳しいことは調べていません。 【追記】動作しました。 この程度の実験であればメイン内のループで対応できますが、できれば何とか解決したいと思っています。 【備考】gcc で開発していますが、独自マクロで Applilet っぽく書けるようにしています。
前回はタイマ割り込みハンドラ内でポートへの出力値を変更することで LED を点滅させましたが、PWM を使えば、割り込みなしで LED を点滅させることが可能です。
次のように、タイマ出力(TOP11)を使用しました。 [CON2-25] TOP11 → 680Ω → (+)LED(-) → GND [CON3-10] 以下、主要なコードです。 メイン関数内で、ポート、タイマ、割り込みの初期化を行います。タイマとして、TMP1 を PWM モードで使用しています。なお、実験対象 LED の点滅に割り込みは不要ですが、動作確認用に使用しました。
動作確認用に、INTTP1CC0 割り込みハンドラ内で基板上の LED の点灯状態を反転します。これにより、基板上の LED は「1000ms点灯→1000ms消灯」を繰り返します。
動作確認用 LED を基準として、実験対象 LED の点滅状態を確認します。1000ms周期で点滅しますが、init_timer() 内で TP1OL1 と TP1CCR1 を変更してみると、LED の点滅状態は次のようになりました。 ハイレベルスタート、デューティ比50% → 500ms点灯、500ms消灯 ローレベルスタート、デューティ比50% → 500ms消灯、500ms点灯 ハイレベルスタート、デューティ比25% → 250ms点灯、750ms消灯 ローレベルスタート、デューティ比25% → 250ms消灯、750ms点灯 【備考】gcc で開発していますが、独自マクロで Applilet っぽく書けるようにしています。 |
ブログ内検索
カレンダー
最新記事
(11/10)
(09/17)
(09/17)
(09/16)
(09/13)
最新コメント
[07/07 tiffany jewelry uk]
[09/17 車載モニター・阿蘇テック]
[08/30 愛]
[06/12 シモネッタ]
[06/11 arms22]
最新トラックバック
プロフィール
名前:
シモネッタ
性別:
非公開
カウンター
アクセス解析
|