Arduino用のプログラムを流用してATtiny2313に書き込む
自作したArduinoのブレッドボード製プロトシールドを試しに使ってみようと3色のLEDの調光にトライしてみたら、これが想像以上に美しい。最後にLEDの上に被せた琉球ガラスの小片が効いてる。
結構イイ感じに出来上がり、このままバラしてしまうのはもったいないので、これを電池駆動にしてランタン風のものを作ってみようと思います。折角なので、メロディーも流してみようかな。
とは言っても大して難しい話ではなく、Arduinoで制御しているのを1個のマイコンで置き換えるだけ。今回はATtiny2313を使ってみましょう。
ATtiny2313ではPB2、PB3、PB4、そしてPD5がPWM対応のpinとなっています。pin番号で言うと、11、12、13、そして9番となります。
今回は11~13番のpinを使いますので、それに合わせてプログラムに変更を加えますが、僅か一箇所だけの変更でOK。3行目の {9, 10, 11} を {11,12,13} に変更するだけ。
ところで、Arduino用のスケッチを(ほとんど)そのままATtiny2313で使うには、Arduino IDE (Arduinoの開発環境)からATtiny2313に書き込むための環境を構築する必要があります。
以前、kosakalabさんのArduino IDEでATtiny他の開発(Arduino-ISP編)という記事を参考にこの環境を構築しましたが、(ハード的には)一旦バラしてしまったので再構築。
ブレッドボード製プロトシールド上の「3色LED調光回路」をバラし、ここにパーツを配置して配線をして完了。すごく簡単。

Arduino IDEで [ツール] > [マイコンボード] > [ATtiny2313] を選択し、続いて [ツール] > 書込装置] > [Arduino as ISP] として、[マイコンボードに書き込む]であっさりと書込み完了。
って思っていたら、なぜか書き込み出来ていませんでした。なぜ?
Arduino IDEの下の小窓に書き込まれているのを見てみたら、こんな表示が。

この「not in sync: resp=0×00」ってのは何?って調べてみたら、Arduinoでこのエラーメッセージはどうやら珍しい現象ではないようで、検索結果もたくさんヒットします。
が、どうやら決定的な解決策が無いらしい。困ったな。以前、ArduinoからATtiny2313に書き込みをしたときは、何の問題もなく書き込めたのに、何がどうなってしまったんでしょうか?

今度は何のエラーも発生することなく無事に書き込み完了(多分)。
取り敢えず動作確認のために、ブレッドボード上に回路を組み上げました。ミニブレッドボードは、こうしたちっちゃな回路を組むには小回りが利いて重宝します。

が、電源ラインが無いのが玉に瑕。なので、ブレッドボード製プロトシールドを作った時に、切り離して不要になったブレッドボードの電源ラインを活用してみたら、これが以外に便利かも。
プログラムの方も無事に書き込めていたようで、単三電池3本の電源でATtiny2313が3色のLEDを順にボワーって点灯させ、そしてボワーって消灯させという動作を繰り返しています。
次回、この回路をユニバーサル基板上に組み上げていきます。
結構イイ感じに出来上がり、このままバラしてしまうのはもったいないので、これを電池駆動にしてランタン風のものを作ってみようと思います。折角なので、メロディーも流してみようかな。
とは言っても大して難しい話ではなく、Arduinoで制御しているのを1個のマイコンで置き換えるだけ。今回はATtiny2313を使ってみましょう。
ArduinoとATtiny2313とでは、PWMのpin番号が異なるので
プログラム自体は、前回作ったものをほぼそのまんま使います。ただ、前回も説明したとおり、LEDの調光をするには PWM出力で行うので、pin番号が変わってきます。ATtiny2313ではPB2、PB3、PB4、そしてPD5がPWM対応のpinとなっています。pin番号で言うと、11、12、13、そして9番となります。
今回は11~13番のpinを使いますので、それに合わせてプログラムに変更を加えますが、僅か一箇所だけの変更でOK。3行目の {9, 10, 11} を {11,12,13} に変更するだけ。
ところで、Arduino用のスケッチを(ほとんど)そのままATtiny2313で使うには、Arduino IDE (Arduinoの開発環境)からATtiny2313に書き込むための環境を構築する必要があります。
以前、kosakalabさんのArduino IDEでATtiny他の開発(Arduino-ISP編)という記事を参考にこの環境を構築しましたが、(ハード的には)一旦バラしてしまったので再構築。
ブレッドボード製プロトシールド上の「3色LED調光回路」をバラし、ここにパーツを配置して配線をして完了。すごく簡単。

Arduino IDEで [ツール] > [マイコンボード] > [ATtiny2313] を選択し、続いて [ツール] > 書込装置] > [Arduino as ISP] として、[マイコンボードに書き込む]であっさりと書込み完了。
って思っていたら、なぜか書き込み出来ていませんでした。なぜ?
Arduino IDEの下の小窓に書き込まれているのを見てみたら、こんな表示が。

この「not in sync: resp=0×00」ってのは何?って調べてみたら、Arduinoでこのエラーメッセージはどうやら珍しい現象ではないようで、検索結果もたくさんヒットします。
が、どうやら決定的な解決策が無いらしい。困ったな。以前、ArduinoからATtiny2313に書き込みをしたときは、何の問題もなく書き込めたのに、何がどうなってしまったんでしょうか?
Arduino の not in sync を解決するには時間がかかりそうなので
一旦この方法は諦め、もう一つある書込み装置HIDaspxを使うことに。ここで軽く触れましたが、こちらで公開されている「私家版 Ardublock」をダウンロードし、インストールすることで、Arduino IDEからHIDaspx経由でATtiny2313に書き込むことが出来ます。
今度は何のエラーも発生することなく無事に書き込み完了(多分)。
取り敢えず動作確認のために、ブレッドボード上に回路を組み上げました。ミニブレッドボードは、こうしたちっちゃな回路を組むには小回りが利いて重宝します。

が、電源ラインが無いのが玉に瑕。なので、ブレッドボード製プロトシールドを作った時に、切り離して不要になったブレッドボードの電源ラインを活用してみたら、これが以外に便利かも。
プログラムの方も無事に書き込めていたようで、単三電池3本の電源でATtiny2313が3色のLEDを順にボワーって点灯させ、そしてボワーって消灯させという動作を繰り返しています。
次回、この回路をユニバーサル基板上に組み上げていきます。
- 関連記事
-
-
定電流回路を使ったLEDチェッカーを製作
-
3色LED調光+電子オルゴールをATtiny2313と85で
-
Arduino用のプログラムを流用してATtiny2313に書き込む
-
たくさんの小さなガラス片の下で色が変化するLEDに見惚れて
-
ブレッドボードでArduinoプロトシールドを作ってみた
-