Arduino IDE で ATtiny45 [Arduino]
ちっちゃなATtiny45ですが、Arduino IDEでスケッチをかいて動かすことができるようなので試してみました。
ArduinoISPを使う
http://www.geocities.jp/arduino_diecimila/use/attiny.html
ここに書いてあるとおりです。
・ATmega/ATtiny記述ファイルアーカイブ (hardware.zip)
展開して、[File]-->[Preferences] の Skechbook location のフォルダにコピー
・拡張版avrdude.confファイル (avrdude_conf.zip)
展開して
Windowsの場合 arduino-002x\hardware\tools\avr\etc\
Linuxの場合 arduino-002x/hardware/tools/
に上書き
こんな感じで Board が増えていればOK
Duemilanove に ISPライターになるためのスケッチを描き込みます。
ISPライターシールドを載せて、ISPケーブルをつないで、クリップでATtiny45をはさみます。
つづいて、ATtiny45 の fuse の設定です。
avrdude-GUI YCIT版 を使います。
Fuse は Lo 0x62, Hi 0xDF, Ex 0xFF と出ますが、、
Engbedded AVR Fuse Calculator
http://www.engbedded.com/fusecalc
このサイトで調べてみます。すると、内部クロックは8MHzなのですが、8分周されてしまっているので、
チェックをはずすと、Fuse は Lo 0xE2, Hi 0xDF, Ex 0xFF とすればいいことがわかります。
その Fuse を書き込みます。
早速サンプルスケッチを描き込んでみてもいいのですが、LEDチカチカではおもしろくないので、昨日の虹色イルミネーションを書き込んでみたいと思います。
ただATtiny45はPWMが2つしかないようなので、スケッチで擬似PWMとしてみました。
ピン割付表を確認して digitalWrite のピン番号とLEDのピンを合わせます。
書き込みはBoard を 「ATtiny45 / Int.8MHz」 にして
アップロードします。
エラーがでますが、
大丈夫らしい。
ATtiny45 をブレッドボードに載せて、こんな感じで回路をつくります。
電源をつなぐと、、
虹色になりました。
ArduinoISPを使う
http://www.geocities.jp/arduino_diecimila/use/attiny.html
ここに書いてあるとおりです。
・ATmega/ATtiny記述ファイルアーカイブ (hardware.zip)
展開して、[File]-->[Preferences] の Skechbook location のフォルダにコピー
・拡張版avrdude.confファイル (avrdude_conf.zip)
展開して
Windowsの場合 arduino-002x\hardware\tools\avr\etc\
Linuxの場合 arduino-002x/hardware/tools/
に上書き
こんな感じで Board が増えていればOK
Duemilanove に ISPライターになるためのスケッチを描き込みます。
ISPライターシールドを載せて、ISPケーブルをつないで、クリップでATtiny45をはさみます。
つづいて、ATtiny45 の fuse の設定です。
avrdude-GUI YCIT版 を使います。
Fuse は Lo 0x62, Hi 0xDF, Ex 0xFF と出ますが、、
Engbedded AVR Fuse Calculator
http://www.engbedded.com/fusecalc
このサイトで調べてみます。すると、内部クロックは8MHzなのですが、8分周されてしまっているので、
チェックをはずすと、Fuse は Lo 0xE2, Hi 0xDF, Ex 0xFF とすればいいことがわかります。
その Fuse を書き込みます。
早速サンプルスケッチを描き込んでみてもいいのですが、LEDチカチカではおもしろくないので、昨日の虹色イルミネーションを書き込んでみたいと思います。
ただATtiny45はPWMが2つしかないようなので、スケッチで擬似PWMとしてみました。
ピン割付表を確認して digitalWrite のピン番号とLEDのピンを合わせます。
// Full Color LED で 虹色イルミネーション #define GET_RAINBOW(TONE,COLOR) (max( min( 510 - abs( ( (TONE) + 510 * (COLOR) ) % 1530 - 510 ), 255 ), 0 )) // TONE(色調) 0-1529, COLOR(RGBの選択) 0-2 void setup() { pinMode( 0, OUTPUT); pinMode( 1, OUTPUT); pinMode( 2, OUTPUT); } void loop() { int r, g, b, t, i, d; for(t=0; t<1530; t++) { r = GET_RAINBOW(t,0); g = GET_RAINBOW(t,1); b = GET_RAINBOW(t,2); for(d=0; d<10; d++) { // 擬似PWMの繰り返し回数(delayに相当) // 擬似PWM digitalWrite( 0, HIGH ); digitalWrite( 1, HIGH ); digitalWrite( 2, HIGH ); for(i=0; i<256; i++) { if( i == b ) digitalWrite( 0, LOW ); if( i == g ) digitalWrite( 1, LOW ); if( i == r ) digitalWrite( 2, LOW ); } } } }
書き込みはBoard を 「ATtiny45 / Int.8MHz」 にして
アップロードします。
エラーがでますが、
大丈夫らしい。
ATtiny45 をブレッドボードに載せて、こんな感じで回路をつくります。
電源をつなぐと、、
虹色になりました。
虹色イルミネーション [Arduino]
フルカラーLEDにグラデーションのような色の変化をさせてみようと思います。
こんな感じでRGBをそれぞれ変化させればいいのですが、この台形状の波形を1行のコードで表現してみたいと思いました。
そこで、、
aをある色が完全消灯から完全点灯になるまでの時間(台形の斜辺の部分の時間)とすると、
(1) y = x
(2) y = x - 2a (グラフをy軸方向に下げる)
(3) y = | x - 2a | (絶対値をとる)
(4) y = - | x - 2a | (反転)
(5) y = 2a - | x - 2a | (y軸方向に上げる)
(6) min, max で 0~a までの間に収める、xは0~6a以内(6aの剰余で)
analogWriteでは0~255までの256段階の値をとりますが、値と値の間隔は255個なので、a=255とします。
これをマクロ関数にすると、
1行で表現できました。
digital 9, 10, 11のPWMを使います。LEDとの間に適度な抵抗をはさんで
スケッチをアップロード!
再生できない場合、ダウンロードは🎥こちら
赤の発色がいまひとつ。計算上の抵抗値は問題なさそうなんだけど、、。
こんな感じでRGBをそれぞれ変化させればいいのですが、この台形状の波形を1行のコードで表現してみたいと思いました。
そこで、、
aをある色が完全消灯から完全点灯になるまでの時間(台形の斜辺の部分の時間)とすると、
(1) y = x
(2) y = x - 2a (グラフをy軸方向に下げる)
(3) y = | x - 2a | (絶対値をとる)
(4) y = - | x - 2a | (反転)
(5) y = 2a - | x - 2a | (y軸方向に上げる)
(6) min, max で 0~a までの間に収める、xは0~6a以内(6aの剰余で)
analogWriteでは0~255までの256段階の値をとりますが、値と値の間隔は255個なので、a=255とします。
これをマクロ関数にすると、
#define GET_RAINBOW(TONE,COLOR) (max( min( 510 - abs( ( (TONE) + 510 * (COLOR) ) % 1530 - 510 ), 255 ), 0 )) // TONE(色調) 0-1529, COLOR(RGBの選択) 0-2
1行で表現できました。
digital 9, 10, 11のPWMを使います。LEDとの間に適度な抵抗をはさんで
// Full Color LED で 虹色イルミネーション #define GET_RAINBOW(TONE,COLOR) (max( min( 510 - abs( ( (TONE) + 510 * (COLOR) ) % 1530 - 510 ), 255 ), 0 )) // TONE(色調) 0-1529, COLOR(RGBの選択) 0-2 void setup() { pinMode( 9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); } void loop() { for(int t=0; t<1530; t++) { analogWrite( 9, GET_RAINBOW(t,0) ); analogWrite( 10, GET_RAINBOW(t,1) ); analogWrite( 11, GET_RAINBOW(t,2) ); delay(5); } }
スケッチをアップロード!
再生できない場合、ダウンロードは🎥こちら
赤の発色がいまひとつ。計算上の抵抗値は問題なさそうなんだけど、、。
ISPクリップケーブルで書き込む [Arduino]
書き込みの対象はATtiny45Vにしてみます。
ケーブルをブートローダライター [AE-UM232R]につないで、こんな感じでクリップに挟んで、
書き込みソフトは avrdude-GUI [YCIT] を使わせていただきました。
「Read」ボタンでATtiny45 (t45) が判別されて、Fuseが表示されたらOK。
で、もうひとつ。
ブートローダライター [シールド版]でもやってみようと思います。
これも、2x3のピンヘッダーを取り付けるISPライターになります。
ただ、Arduino側のISPのヘッダーと干渉しそうになるので、
少し足を短くしてハンダ付けします。
同様につないで、
(1) Programmerに (avrisp) Atmel AVR ISP を選択
(2) Port にライターとなったArduino のシリアルポートを選択
(3) Command Line Option に 「-b 19200」と入力
(4) Read ボタンを押して、チップ名 と Fuse が出ることを確認
ケーブルをブートローダライター [AE-UM232R]につないで、こんな感じでクリップに挟んで、
書き込みソフトは avrdude-GUI [YCIT] を使わせていただきました。
「Read」ボタンでATtiny45 (t45) が判別されて、Fuseが表示されたらOK。
で、もうひとつ。
ブートローダライター [シールド版]でもやってみようと思います。
これも、2x3のピンヘッダーを取り付けるISPライターになります。
ただ、Arduino側のISPのヘッダーと干渉しそうになるので、
少し足を短くしてハンダ付けします。
同様につないで、
(1) Programmerに (avrisp) Atmel AVR ISP を選択
(2) Port にライターとなったArduino のシリアルポートを選択
(3) Command Line Option に 「-b 19200」と入力
(4) Read ボタンを押して、チップ名 と Fuse が出ることを確認
ISPクリップケーブルを作る [Arduino]
USBシリアル変換のとき、ISPでの書き込みの際に使ったICクリップです。
ケーブルが短かったのと、自分の整理のために作り直してまとめてみました。
ISPの2x3ピンのヘッダーは次のとおりです。
ATtiny45, ATtiny 2313のISPに使うピンは次のとおりです。
接続もクロスなしのストレートです。
ちなみに色は共立エレショップのAVRWRT用ISPケーブルに合わせました。
【共立エレショップ】eleshop.jp AVRWRT用ISPケーブル
http://eleshop.jp/shop/g/gABJ41M/
あるいは、ブレッドボードISPケーブルでもいいかもしれません。
【共立エレショップ】eleshop.jp AVRWRT用ブレッドボードISPケーブル
http://eleshop.jp/shop/g/g7C1412/
作成には、このAVRWRT用ISPケーブルをつかいました。
20cmほどあるのですが、15cmくらいのところでカットしました。
(5cm残してカットすると残りの側が何かに使えるかなぁと思って15cmとしました。)
ICクリップに直接ハンダ付けしてもいいのですが、ATtiny45とATtiny2313の両方で使いたいので取り外しができるようにQIコネクタというものを使いました。
HOZANのP-706で圧着。
順番に気をつけてソケットに差し込みます。
ICクリップに接続。
次回はライター側と書き込みについてまとめてみたいと思います。
ケーブルが短かったのと、自分の整理のために作り直してまとめてみました。
ISPの2x3ピンのヘッダーは次のとおりです。
ATtiny45, ATtiny 2313のISPに使うピンは次のとおりです。
接続もクロスなしのストレートです。
ちなみに色は共立エレショップのAVRWRT用ISPケーブルに合わせました。
【共立エレショップ】eleshop.jp AVRWRT用ISPケーブル
http://eleshop.jp/shop/g/gABJ41M/
あるいは、ブレッドボードISPケーブルでもいいかもしれません。
【共立エレショップ】eleshop.jp AVRWRT用ブレッドボードISPケーブル
http://eleshop.jp/shop/g/g7C1412/
作成には、このAVRWRT用ISPケーブルをつかいました。
20cmほどあるのですが、15cmくらいのところでカットしました。
(5cm残してカットすると残りの側が何かに使えるかなぁと思って15cmとしました。)
ICクリップに直接ハンダ付けしてもいいのですが、ATtiny45とATtiny2313の両方で使いたいので取り外しができるようにQIコネクタというものを使いました。
HOZANのP-706で圧着。
順番に気をつけてソケットに差し込みます。
ICクリップに接続。
次回はライター側と書き込みについてまとめてみたいと思います。
ハンダ付けヘルパー [ツール]
人間の腕は2本なのでハンダとハンダごてを持つといっぱいになってしまいます。
そこで部品を固定するにはクリップを使ったりしていました。
さらに基板そのものの固定をするために固定台を買ってみました。
太洋電機産業株式会社 こて先クリーナー/はんだこて台
http://www.goot.co.jp/item.html?c=110
値段もお手頃で、日本製 MADE IN JAPAN です。
そこで部品を固定するにはクリップを使ったりしていました。
さらに基板そのものの固定をするために固定台を買ってみました。
太洋電機産業株式会社 こて先クリーナー/はんだこて台
http://www.goot.co.jp/item.html?c=110
値段もお手頃で、日本製 MADE IN JAPAN です。
- ショップ: 測定器・工具のイーデンキ
- 価格: 1,850 円