ArduinoでATtiny85を内部8MHzにしてスケッチを書き込む
2019/07/25
ちょっとしものを作るのにATmega328ではオーバースペックで、足が28本ありその殆どを使わない場合があります。そこで足が8本でコンパクトなATtiny85を使ってみることにしました。やり方は以前書いた「Arduino Uno用ブートローダライタシールドの製作」と類似しています。
以下の方法でArduinoでATtiny85の開発をする事ができます。
- http://make.kosakalab.com/make/electronic-work/arduino-ide-arduinoisp/のhardware.zipをダウンロードしてArduinoフォルダのhardwareフォルダの下に置く
- Arduino IDEを起動して「ファイル>ケッチの例>ArduioISP」でスケッチを開き、Arduino Unoに書き込みます。これでArduino UnoがAVRライタになります。
- 「ツール>マコンボード」からATtiny を選択。
- 「ツール>プロセッサ」からATtiny85を選択。
- 「ツール>clock」から動作クロックを選択。今回は内部8MHzを選びました。消費電力を抑えたい場合は1MHzにしてdelay()などのは1/8にしてプログラムします。
- 「ツール>書込装置」から「Arduino as ISP」を選択してArduinoを書込のインターフェイスとして動作するようにします。
- 下記の結線をしてスケッチを書き込みます。
Arduino Uno | ATtiny85 | 備考 |
5V | 8 | |
GND | 4 | |
RESET | 10uFのコンデンサーを介してGNDに接続 | |
10 | 1 | RESET |
11 | 5 | MOSI |
12 | 6 | MISO |
13 | 7 | SCK |
上記に加え3番ピン(PIN4)に動作確認用の抵抗とLEDを直列に繋いでおきます。
動作確認用にLチカ。Pin4を使用しています。
//12番ピンに1秒ごとにHIGHとLOWを切り替える void setup() //初期設定 { pinMode(4, OUTPUT); //12番ピンを出力に指定 } void loop(){ //繰り返し digitalWrite(4, HIGH);//12番ピンをHIGH(5V)に delay(125); //125で約1秒。 digitalWrite(4, LOW); //12番ピンをLOW(0V)に delay(125); //125で約1秒。 }
現在サポートしている命令は以下のとおりです。
pinMode() | analogRead() | micros() |
pinMode() | analogWrite() | delay() |
digitalWrite() | pulseIn() | delayMicroseconds() |
digitalRead() | millis() |
【備考】 ICSP(ISP)とは:マイクロチップ社のICSPのことで「In Circuit Serial Programming」の略です。PICを基板等に実装したままの状態で、内蔵メモリにプログラムを書き込む方法のことをいいます。
こんな小さなものもArduinoで簡単にプログラムできる時代になりました。以前Z80あたりからアセンブラでプログラムしていた頃に比べると随分楽になったものです。プログラム(スケッチ)を書き込むのも、動作を確かめるのもすぐにできます。
今後はこうしたマイコンを必要に応じて使い分けると良いかもしれません。簡単なものはATtiny85で、少し複雑なものを制御したいときはATmega328で、さらに複雑なインターフェイスが必要な場合はRaspberry Pi、業務アプリケーションまで開発するならPCという感じになるでしょうか。今後どんなものが出てくるのか楽しみです。