ATmega328PにArduinoスケッチを書き込む [Arduino]
今回はブートローダを書き込み済みの「ATmega328P-PU」にArduinoスケッチを書き込みます。250円のATmega328P-PUが3000円のArduinoと同様に扱えるようになりますので経済的です。
1. Arduinoのマイコン
Arduino UNOには「ATmega16U2」と「ATmega328P-PU」というAtmel社(アトメル)のAVRマイコンが2つ搭載されています。

ATmega16U2はUSBコントール機能(USBシリアル変換)を有していて、パソコンのArduino IDEとATmega328P-PUを接続してArduinoスケッチをATmega328P-PUに書き込みをします。
Arduinoが動作するスケッチがあるのはATmega328P-PUですので、ArduinoからATmega328P-PUを取り外してATmega328P-PU単体で動作させる事が出来ます。

ATmega328P-PUの取り外しはATmega328Pの交換方法 をご覧ください。
2. スケッチの書き込み方法
いずれの場合も「ブートローダを書き込み済み」が前提条件です。
1 | スケッチを書き込みたい「ATmega328P-PU」をArduinoに搭載されているATmega328P-PUと交換すると、そのままいつも通りにスケッチを書き込むことが可能です。書き込みが完了したら取り外して、ブレッドボードやユニバーサル基盤で使用できます。 | |
2 | ブレッドボードを使用してICSP(ISP)でスケッチを書き込みます。 |
今回は「2」の方法をご紹介します。
3. 使用部品・材料
総額で約880円です。(Arduino本体の値段を除く)
部品/材料 | 値段 | 備考 |
---|---|---|
サンハヤト SAD-101 ニューブレッドボード | ¥500 | Amazon.com |
AVRマイコン ATMEGA328P-PU | ¥250 | 秋月電子の通販コード(I-03142) |
クリスタル(水晶発振子)16MHz | ¥30 | 秋月電子の通販コード(P-08671) |
絶縁型ラジアルリード型積層セラミックコンデンサー22pF50V±5%2.54mm 10個入 | ¥100 | 秋月電子の通販コード(P-04060) |
カーボン抵抗器 | 数円 | 10kΩ(1個)を使用。 |
4. はじめに
ArduinoにArduinoISPスケッチを書き込み、Arduinoを「スケッチの書込装置」にします。(他のスケッチを書き込めば元に戻ります)
Arduino IDEのメニューの[ファイル][スケッチ例][11.ArduinoISP]の「ArduinoISP」を開きます。

メニューの[スケッチ]の「マイコンボードへ書き込む」で書き込みます。
5. 書き込みの配線図
ブートローダの書き込みと同じICSP配線です。

(2020/12)10ピンをRESETに変更すると動作するという報告があります。
次はArduino公式より
https://www.arduino.cc/en/Hacking/PinMapping168

6. スケッチ(プログラム)
LEDを1秒毎に点灯させます。
void setup() { pinMode(8,OUTPUT); } void loop() { digitalWrite(8,HIGH); delay(1000); digitalWrite(8,LOW); delay(1000); }
7. スケッチの書き込み
メニューの[ツール][ボード]を「Arduino/Genuino UNO」に選択します。

次に[ツール][書き込み装置]を「Arduino as ISP」にします。

[スケッチ]の「書き込み装置を使って書き込む」を選択します。

これでArduinoスケッチの書き込みが完了です。
最後に書き込み装置を「AVRISP mkⅡ」(Arduinoの標準)に戻します。
8. 実行用の配線図
この配線例ではArduinoを「5V電源供給用」として使用しています。
本稼動する場合は乾電池などの電圧をそのまま使用するか、電圧を5V昇圧、5V降圧をするなどの方法があります。

ATmega328Pのピン配置は前述したArduino公式の図をご覧ください。
最後に
今回は「クリスタル」(水晶発振子)と「積層セラミックコンデンサ」を個別に使用していますが、秋月電子には「一体型」で村田製作所のセラミック発振子(P-00525)があるようです。
クリスタルの周波数精度は誤差0.001%、セラミックの誤差0.5%ですので精度は落ちますが、合計で15円安くなります。
用途によって使い分けると良いかも知れません。
掲示板
ArduinoやRaspberry Piなどの電子工作の掲示板を作成しました。質問やわからない事は電子工作 (Arduino・ラズパイ等)でユーザー同士で情報を共有して下さい。