Techグループが配布しているATtinyサポートファイルを利用します。ATtiny85へのスケッチの書き込みは、Arduino用ブートローダ/スケッチライタを使って書き込みます。IDEへのATtinyサポートファイルのインストール方法や、ATtiny85へのスケッチの書きこみ方法については、Arduino用ブートローダ/スケッチライタの製作(8)の記事に説明がありますので、そちらをご覧ください。4-2.点滅版のスケッチについて最初にも説明したとおり、今回は、同じ回路に対し、2種類のスケッチを作りました。1つ目は、LEDを単に点滅させるだけの点滅版で、2つ目は、PWM制御で光量をなめらかに変化させるPWM調光版です。この節では、点滅版について説明します。点滅版のスケッチを次に示します。loopこのスケッチをATtiny85に書き込み、そのATTiny85をICソケットに装着して、LED制御基板のCN1に電池ボックスを接続すると、クリスマスツリーのLEDが点滅を始めます。ATtiny85にスケッチを書き込む際には、クロック周波数の設定は、内部クロックの1MHzにしてください。(内部クロックの8MHzでも動作しますが、消費電力がわずかに増えます。外部クロックを選択すると、動作しないばかりか、それ以降、そのATtiny85のスケッチを書きかえる事ができなくなります)LEDの点灯の様子は、次の動画で紹介しています。このスケッチで使っている関数はpinMode関数、digitalWrite関数、およびdelay関数の3種類のみで、動作を理解するのはあまり難しくないと思います。このスケッチでは、D0~D4までの5つのI/Oピンを全て出力(OUTPUT)として用いています。D0~D3の4つのI/Oピンは、クリスマスツリーに付けるLED_A~LED_Hの8つのLEDを制御しています。I/OピンとLEDの対応については、表2を参照してください。D4ピンは、LED制御基板上のLED1の制御をしています。LED1は、マイコンが動作している事をはっきり分かる様に設けたLEDです。マイコンのI/Oピンと、制御対象のLEDとの関係を分かり易い様にまとめた図を、次に示します。赤色で書いてあるのが、制御対象のLEDです。図5、マイコンのピンと制御対象のLEDD0~D3に接続されたLED(クリスマスツリーのLED)は、点灯している時間と、消灯している時間が共に1000ms(1秒)です。D0~D3で、順に点灯タイミングを500ms(0.5秒)ずつずらしています。D4に接続されたLED1(LED制御基板上のLED)は、250ms(0.25秒)点灯して、750ms(0.75秒)消灯するのを繰り返します。ここで、各LEDの点滅のタイミングを、ロジックアナライザで観察してみましょう。ロジックアナライザは、デジタル回路の信号波形を観察するための測定器です。電圧は、HかLの区別しかできず、オシロスコープの様にアナログ的な変化を観察できませんが、オシロスコープよりも多くのチャンネルの信号波形を同時に観測できます。私の使っているLAP-C(16064)というロジックアナライザは、16チャンネルの信号を観測できます。ロジックアナライザで信号が観察しやすい様に、LED制御基板には、D0~D3までの信号を出力するピンヘッダ(CN2)があります。D4の信号はCN2に出ていないので、R1のリードから取ります。LED1制御基板へのロジックアナライザのプローブの取り付けの様子を写真35に示します。写真35、LED制御基板へのロジックアナライザのプローブの取り付け右側に写っている茶色い基板がLED制御基板です。左側に写っている白い箱が、ロジックアナライザです。この写真を見ると、ロジックアナライザのプローブを、LED制御基板にどのように取り付けているかが分かります。ロジックアナライザで得られたD0~D4の信号波形を図6に示します。図6の波形を見ると、各LEDが、おおむね2000ms(2秒)周期で点滅している様子が分かります。D0~D3の波形は、約1000ms(1秒)の間Hになり(LED点灯)、約1000ms(1秒)の間Lになります(LED消灯)。D4に関しては、約500ms(0.5秒)の間Hになり、約1500ms(1.5秒)の間Lになります。ロジックアナライザの画面に表示されている時間が、スケッチで指定した時間より1~2%少ないのは、ATtiny85の内蔵クロック発振器の周波数の誤差(規格上は10%以内)によるものです。図6の下側には、スケッチのどの部分が実行されているかを示す、1~4の番号を、赤色で書き入れておきました。1~4が、loop関数中のどの部分を指すかは、次の図7をご覧ください。図7を見ると、1の部分ではdigitalWrite関数で、D0にH、D2にL、D4にHを出力しています。一方で、図6の1の部分を見ると、確かにD0がL→H、D2がH→L、D4がL→Hと変化しています。digitalWrite関数で何も出力されなかったD1とD3については、図6の1の部分では、信号電圧に変化はありません。同様に、2~4の部分でも、図7と図6とを見比べると、スケッチと波形の変化とが、ちゃんと対応しているのが分かると思います。次のページでは、PWM制御の原理と、PWM調光版のスケッチについて説明します。IDEdelay関数digitalWrite関数I/OピンpinMode関数PWMスケッチ関連ページArduino用ブートローダ/スケッチライタの製作ATtiny85にArduinoのスケッチを書き込める装置。Arduinoで作った回路の小型化(Arduino互換機の製作)Arduino互換機を自作して回路を小型化・低コスト化。ArudinoでグラフィックLCDを動かす(SG12864ASLB-GB編)PWM制御で液晶モジュールのコントラスト調整をした例。単3ニッケル水素電池充電器の製作(7)電圧をPWM制御する電源回路の話。Arduino用ヘッダシールドの製作(3)Arduinoの信号を取り出してロジックアナライザなどで観察するためのヘッダシールドの話。電子工作ISBN:978-4-7775-1941-5→工学社の書籍の内容の紹介ページ本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。このサイトの中の人が書いた本です。本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。