今回はシフトレジスタを2個直列につなげて16ビット出力させる実験です
繋ぎ方は前回と違ってちょっと特殊な感じになります

QH”の出力はもう一方のレジスタのSI(シリアルデータ入力)に繋げ、もう片方のQH”はGNDに接続
クロックとラッチはタイミングを合わせる為に両方のシフトレジスタ同士のピンをY字で繋げてArduinoと繋げます
で、今回はノイズ対策にクロックピンに0.1μFの積層セラミックコンデンサを両方に付けました
そうしないとノイズで誤動作した際にタイミングがズレるからです
並列接続だとズレてもたいした問題じゃないので付けていませんでした(もちろん有った方がいい)

どこのサイトさんでも似たような繋ぎ方なんでこれで合ってると思われます(保障は無いw)

回路図が無くても74HC595の資料が有ればこの説明でたぶん分かって貰えると思いますが
分からない場合は別サイトさんの所に接続回路があるので探してくださいw


こんな感じでブレッドボード上に組んでLED点灯実験しています

先に結論から言っちゃうと
考え方や使い方は今までのでだいたい合っていたんですが
”下位を先に送ってから右に8ビットシフトさせて上位を送信”  これが原因だったみたい
”上位8ビットを送る→下位8ビットを送る” この順に記述しなおしたら何故か正常出力されてしまいました・・・・

なぜこれが判明したかと言うと、前回の実験で{変更した物を代入する}とずっと思っていた為です
なので「シフトさせてしまうと下位8ビットが消える→先に下位8ビットを送信させよう」と思っちゃったのが原因
でも実験で変更されないのが分かった為、基本通りに上位を先に入れてから下位を入れてもう一方のシフトレジスタへ上位8ビットを押し込む事にしたら
全くなんの問題もなく表示されちゃった と言う訳です

理論上ではどっちでもいい様に思うんだけど・・・コンパイル時に問題が出るのかなぁ・・・

で、色々試行錯誤実験を行った結果、1つだけどうしても直らない問題が有りました
これは後述しますので先に色んな実験結果を挙げていきたいと思います

ラッチ操作などは記述していません
投稿時に自動校正されてしまう対策で全角英数を使用している為コピペでは使えません

疑問1 INT型2バイトデータをそのまま出力データ(8ビット専用)に入れて頭から読ませた場合の表示
     INT A=0000000011111111;
     shiftOut(dataPinA, clockPinA, MSBFIRST, A);
結果  上位(00000000)下位(11111111)になった
     shiftOut関数に組み込むと自動的にbyte型(1バイト)に変更される
     8ビットしかデータが無いので上位レジスタには何も入らない
     74HC595のタイミングチャートでは8ビット目が入る前にQH”が出力されるみたいだが出てきていない

疑問2 2バイトデータを右に8シフトさせて上位8ビットを出力
     INT A=0000000100000000;
     INT B=A>>8;
     shiftOut(dataPinA, clockPinA, MSBFIRST, B);
結果1 上位(00000000)下位(00000001)になった
     下位データを送信していない為上位用レジスタには何も入っていない

     shiftOut(dataPinA, clockPinA, MSBFIRST, A);を最終行に付け足して上位送信の後に下位を送信
     両方送信し終わったあとにラッチ開放(開放でレジスタ内データを出力する)
      注)ラッチを開放した後に閉じても次のラッチ開放までレジスタは出力を保持します
結果2 上位(00000001)下位(00000000)になった
     8つ右へシフトする事で上位データを下位に持って来ることが出来た
     上位データを下位8ビット内に持ってくればshiftOut関数は下位8ビットだけ送信するので上位8ビットを送る事が出来る
     その後に下位の8ビットを送信する事でトコロテン式に上位用レジスタへデータを押し出せる

疑問3 どのタイミングで上位レジスタにデータが送られるのか
     0000000000000001を出力(LED点灯)させる毎に左へ1ビットずつシフトさせていく
     INT A=0b0000000000000001;
     for(INT i=0; i<16 ; i++){  i=16になったら{}内命令を辞める→0~15までの16回繰り返し iは1づつ加算される
     INT AA=A<<i;            Aのデータをiの中の数だけ左にシフト 下位データ用
     INT B =AA>>8;           8ビット右にシフト 上位データ送信用
     shiftOut(dataPinA, clockPinA, MSBFIRST, B);  上位データ送信
     shiftOut(dataPinA, clockPinA, MSBFIRST, AA);  下位データ送信→先に送られた上位データは次のレジスタに移る
結果  普通になんの問題も無く順番に点灯していった
     上位→下位の順番さえ守れば直列接続で2バイト(16ビット)データが扱えるみたいです(不思議w)

調子に乗って色々な実験をしているうちに問題も出てきました
見つけた問題点を挙げていくと

問題1 全ビットON(1111111111111111)を送信しても全部のLEDが点灯してくれない
     01001110 11101000 の様な感じで表示される(正確な状態は忘れた・・・) いわゆるバグった状態
     上位だけ下位だけ全ONは問題ない
     最下位ビットだけOFFでも問題はない
     全ONの時だけ起こる

問題2 ArduinoのRESETスイッチを押してもレジスタ内データがクリアされず残ってしまう場合がある
     少し長めに押せば恐らく大丈夫
      ̄SCLRをVCCではなくArduinoのRESETポートに繋げるとスイッチで確実にクリアされる
     上記接続しても内部プルアップでLEDは暗くならないが接続線が1本増える

とりあえずこの2点です

問題2は致命的ではないのですが、問題1の全ONがバグるのは痛い 
16x16LED MATRIXを制御する際に全ONが必要になるデータは少ないかもしれないが必要になる時も間違いなくあると思うのでなんとか解決策を見つけたいと思います

一応また再実験しますが、レジスタ全てONでバグるのなら「バグ回避用に3つ目を用意すればいいんじゃね?と考えています
あと、2つ目のQH”出力をGNDに繋げてるのを何も繋げずにとか思いつく限り実験してみます

先にも書いた通り1から74HC595を使った実験です

(2/23追記) プログラムっぽいの書くとどうも勝手に校正されてしまう不具合
         色々消えてしまってておかしくなってるので思い出しながら書き直しました

今回まずは2つを独立させて目視比較で色々実験です
接続に問題さえ無ければスケッチの問題のみなので回路無し
ただ単に同じ回路を2つ用意しただけ
ビットデータ読み出しは基本的にLSBFIRST(最下位から上位への順)で74HC595に入力してます

実験はArduino日本語リファレンスにもちゃんと説明の無い部分です
日本語リファレンスと違う結果が出ている場合もあります
74HC595を繋げなくてもこの実験は出来ますのでまずは自分で試してみてください

疑問1 変数の代入について
     A=0b11111111とした時
     B= A>>4;  4ビット右にシフトしてみる
     その後Aの値はどうなっているか確認
結果  A=0b11111111のままで変化しない
     Aの値を変更してBに代入される訳ではなく 代入されている値を使っているだけ

疑問2 int型は2バイト扱えるが、1バイトのbyte系に入れた場合、どの部分が拾われるのか
     int A=0b0000000011111111   上位と下位の値を別にする
     byte B=A   2バイト型を1バイト型に代入
結果  B=0b11111111
     下位8ビットが採用される

疑問3 疑問2の結果後、上位8ビットは残っているのか?
     int A=0b1111111111111111  分かりやすくする為全て1にする
     byte B=A        2バイト型を1バイト型に代入
     B>>4  右に4ビットシフトさせる(上位1バイトが残っていれば左4ビットは上位の1が出るはず)
結果 B=0b00001111になった 8ビット化させた段階で上位8ビットは捨てられる

疑問4 int形式(2バイトデータ)に8ビット入れた場合の上位1バイトはどうなっているか
     int A= 0b01000000;  Aに1バイトだけ代入
     int B = A >> 4; Aを右に4ビットシフトさせてBに入れる
     上位4ビットは記入していないデータが出てくる → B = 0bxxxx0100 (xが記載しなかった部分)
結果 xは全て0だった すなわち、記載しなかった部分は「0」になている
    但し、日本語リファレンスでは「1」が出てくるような事が書かれていた
    右シフト時に「0」を出したい場合は int B = (unsigned int)A>>4; の形式にしろと書かれています

疑問5 試しに疑問4用のBをMSBFIRST(上位ビットから読む)にして出力
     shiftOut(dataPinB, clockPinB, MSBFIRST, B);  今まではLSBFIRSTで出力していた
結果 出力は当然反転する0010xxxxになる:(表記の問題で本来はLSBFIRSTが逆表示です)がやはり「0」が出てきます

まだ他にも疑問点を挙げようと思ったのですが、寝て起きたら結構忘れてて思い出せませんww
思い出したら載せたいと思っていますが、次回は本命の74HC595直列接続実験を載せたいと思っています

シフトレジスタの件

Posted: 2012年2月23日 カテゴリー: 未分類

どうもこのシフトレジスタの使い方間違えてるみたいです
8ビットだと下記でもちゃんと動く事は動くんですが
16ビット以上の直列接続にすると上手く動かないです

きちんとした使い方をもう一度1から学び直したいと思います

(2/23追記):どうも使い方がおかしいみたいなので基本からやりなおしてます
    74HC595シフトレジスタ 初心に戻って実験(1)

前回の続きです

前回はただ単に右から左へ縦線をスクロールするだけでした
今回は点が上から下へ右から左へとすだれしていくスケッチと
任意データをダイナミック表示させるスケッチの2つ掲載します

新たな回路を組んだわけではなく、ただの実験結果なので
シフトレジスタって便利だねぇ~程度で

すだれ (静止画なので動きわかりませんがw)

-----------------------------------
int latchPinA = 2; //アノード側RCKをDpin2にセット
int latchPinK = 8; //カソード側RCKをDpin8にセット

int clockPinA = 4;  //アノード側SCKをDpin4にセット
int clockPinK = 10; //カソード側SCKをDpin10にセット

int dataPinA = 3; //アノード側SIをDpin3にセット
int dataPinK = 9; //カソード側SIをDpin9にセット

byte A_data = 0b00000001;
byte K_data = 0b10000000;

void setup(){                 //ピンモードを全てOUTPUTにセット
pinMode(latchPinA, OUTPUT);
pinMode(latchPinK, OUTPUT);
pinMode(clockPinA, OUTPUT);
pinMode(clockPinK, OUTPUT);
pinMode(dataPinA, OUTPUT);
pinMode(dataPinK, OUTPUT);

}

void loop(){                 //LEDをダイナミック点灯制御

//ラッチをOFF
digitalWrite(latchPinA, LOW);
digitalWrite(latchPinK, LOW);

//表示データ
shiftOut(dataPinA, clockPinA, LSBFIRST, A_data);
shiftOut(dataPinK, clockPinK, LSBFIRST, K_data);

//ラッチをON
digitalWrite(latchPinA, HIGH);
digitalWrite(latchPinK, HIGH);

//シフトレジスタ制御
if(K_data == 0b00000001){
if(A_data == 0b10000000){
A_data = 0b00000001;}
else{ A_data = A_data<<1;}
K_data = 0b10000000;}
else{
K_data = K_data>>1;
}

delay(100);

}

-----------------------------------

任意データ表示
(表示順の番号が下から上なので逆表示になります 配列番号を逆に設定すると分かりやすくなる)

-----------------------------------
int latchPinA = 2; //アノード側RCKをDpin2にセット
int latchPinK = 8; //カソード側RCKをDpin8にセット

int clockPinA = 4;  //アノード側SCKをDpin4にセット
int clockPinK = 10; //カソード側SCKをDpin10にセット

int dataPinA = 3; //アノード側SIをDpin3にセット
int dataPinK = 9; //カソード側SIをDpin9にセット

int data[8];   //表示データ用配列変数の宣言

int i = 0;   //配列&カソード番号用

//出力用変数の定義と初期化
byte A_data = 0b00000001;

void setup(){

//ピンモードを全てOUTPUTにセット
pinMode(latchPinA, OUTPUT);
pinMode(latchPinK, OUTPUT);
pinMode(clockPinA, OUTPUT);
pinMode(clockPinK, OUTPUT);
pinMode(dataPinA, OUTPUT);
pinMode(dataPinK, OUTPUT);

//表示データ代入
data[0] = 0b00111100;
data[1] = 0b01000010;
data[2] = 0b10000001;
data[3] = 0b10100101;
data[4] = 0b10000001;
data[5] = 0b01000010;
data[6] = 0b00111100;
data[7] = 0b11000011;

}

void loop(){                 //LEDをダイナミック点灯制御

//ラッチをOFF
digitalWrite(latchPinA, LOW);
digitalWrite(latchPinK, LOW);

//表示データ
A_data = data[i];
shiftOut(dataPinA, clockPinA, LSBFIRST, A_data);
shiftOut(dataPinK, clockPinK, LSBFIRST, 1<<i);

//ラッチをON
digitalWrite(latchPinA, HIGH);
digitalWrite(latchPinK, HIGH);

//変数と表示行の初期化判定
if(i == 7){
i = 0;
}
else { i++; }

}

-----------------------------------

前回同様責任負えません 自己責任でお願いします

コピペしてますが勝手に修正されてしまうので使えるかどうかわかりません

(2/23追記):どうも使い方がおかしいみたいなので基本からやりなおしてます
    74HC595シフトレジスタ 初心に戻って実験(1)

秋月電子で買った8x8LEDマトリクスを使ってみました
今回組んだ回路はシフトレジスタ勉強用なので、本来はこんなややこしい回路は必要ありません
LEDのアノード側に制限抵抗を各々入れてあとはArduinoに直接繋げればOKです

なぜこんなややこしい回路を組んだかと言うと
・Arduino側に繋げるピン数を極力減らしたかった
・後に8x8LEDマトリクスを4つ繋げて表示させたい
・せっかく作ったユニットを使ってやりたい
と言う理由があったからです

今回使ったパーツ
 8x8LEDマトリクス OSL641501-ARA  1個    秋月:200円/個
 制限抵抗  1/4 220Ω  8個   8円ぐらい?(100本100~250円)
 8回路NPNダーリントントランジスタアレイ 東芝 TD62083AP 1個  秋月:50円(2個セットで100円)
 8bitラッチ機能付きシフトレジスタ 74HC595AP(DIP)  2個  マルツ:136円/個
 ミニブレッドボード白  250円
 ピンフレーム(8ピン)  2個  1個30円ぐらい
 ピンヘッダ 40ピンを分割使用  40円ぐらい
 片面ユニバーサル基板 72x48mm  2枚 秋月:60円/枚
 UEW(ポリウレタン皮覆銅線)などケーブル類を各種

シフトレジスタとトランジスタアレイの説明は長くなるのでまた今度って事で
専門用語の説明もまた今度きがむいたらって事で
とりあえずまぁ動作したよーって画像をどうぞw

画像で見ただけじゃ分かりにくいですが、一応右から左へ縦線が流れてます
もちろん一番左の次は一番右に戻ってまた左へシフトしていきます

写真左から
 8x8LEDMATRIX&トランジスタアレイ(MATRIXの下に制限抵抗8個半田付け)
 74HC595シフトレジスタ2個(上アノード用/下カソード用 並列)
 配線整理用ブレッドボード
 Arduino Uno
の順に並べています

一応Arduino側は3+3+2(VCCとGND)の8本のみ接続になっています
74HC595は直列接続出来るので繋げて16ビット一気に出力させれば3+2の5本で済むんじゃね?とか考えてみたんですが・・・どうなんだろ?
Arduino側に繋げた配線のSER(SI)を省いて各々の74HC595に分配とか方法は有りそう
出来たとしても制御プログラムがより複雑になる予感ww
この辺は要実験だね! 失敗してもいいじゃない まずはやってみよう! って事で

以下回路図とArduino IDE用スケッチ

注)上記回路図のArduino側のピン番号は見やすくする為に適当なピンに接続しています
   実際はArduini miniではなくArduino Unoを使用し
   アノード側を(2,3,4)カソード側を(8,9,10)に繋げています
   

-----------------------------------
int latchPinA = 2; //アノード側RCKをDpin2にセット
int latchPinK = 8; //カソード側RCKをDpin8にセット

int clockPinA = 4; //アノード側SCKをDpin4にセット
int clockPinK = 10; //カソード側SCKをDpin10にセット

int dataPinA = 3; //アノード側SIをDpin3にセット
int dataPinK = 9; //カソード側SIをDpin9にセット

void setup(){ //ピンモードを全てOUTPUTにセット
pinMode(latchPinA, OUTPUT);
pinMode(latchPinK, OUTPUT);
pinMode(clockPinA, OUTPUT);
pinMode(clockPinK, OUTPUT);
pinMode(dataPinA, OUTPUT);
pinMode(dataPinK, OUTPUT);
}

void loop(){ //LEDをダイナミック点灯制御
for ( int j = 0; j < 8; j++){
//ラッチをOFF
digitalWrite(latchPinA, LOW);
digitalWrite(latchPinK, LOW);

//表示データ
shiftOut(dataPinA, clockPinA, LSBFIRST, 1<<j);
shiftOut(dataPinK, clockPinK, LSBFIRST, 0b11111111);

//ラッチをON
digitalWrite(latchPinA, HIGH);
digitalWrite(latchPinK, HIGH);
delay(500);
}
}
-----------------------------------
最後の行のdelayを1にするか消せば全点灯状態に出来ます
 ※ダイナミック表示だから点灯じゃない!って突っ込みはナシでヨロw

上記を使って何か不都合が起こっても当方は一切関知しません
自己責任でよろしくお願いします

Windows8CP版公開日決定

Posted: 2012年2月12日 カテゴリー: 未分類

Windows8のコンシューマープレビュー版が2月29日にプレス向けイベントと同時に公開される事が決まりました

一応うちのパソコンはネトゲがそれなりに出来て格安で組める仕様なので実験してみたいと思います
ようはうちのパソコンで快適動作するなら10万円クラスのノートPCでも動くって事です

ちなみにうちのPCの仕様
CPU AMD AthlonII X2 250 3.0GHz DualCore
MEM 2.0GB DDR2-6400
HDD 500GB SATA2 7200rpm 8MBバッファ ×2台
M/B GIGABYTE製 GA-MA785GM-US2H
VGA RADEON HD4670 GDDR3 1GB PCI-Ex16

今じゃ5万もあればこれよりいいのが組めちゃうなぁ

電子工作:作った物

Posted: 2012年2月2日 カテゴリー: AVR, 電子工作, 趣味


手前 共立エレショップで買ったVFD管表示キット
    8回路トランジスタアレイ2個と抵抗付き
    ぶっちゃけ半田付けしただけww
左 自作8×8LEDマトリクスユニット
   UBW(エナメル線の一種)で繋げてるので裏がグチャグチャ
中 自作3-8ビットデコード接続キット
   こないだからこいつがうまいこと動いてくれなくなった
右 自作8ビットシフトレジスタ×2個接続キット
   真ん中のシャンパーピンをショートすれば2個直列接続で16ビット化出来ます
   上にオーバーフロー出力端子も付けました


Arduino Unoと繋げて遊んでみた

今は秋月電子の200円8×8LEDマトリクスを4つ並べてArduino Unoで制御出来る物を製作中

何故かフォワード3ギリギリ前に新しい貫通ライトボウガン装備作っちゃいました
今回はちょっとマゾくてイベ限定物も使ってるので敷居が高いです
F3からの新装備で組んだ方がいいと思います

2種類作りましたが頭/腰/足は固定で武器スロ1です
よってスロ無しやSP武器では使えません
更に超絶のピアスⅩ使用の為HR999以上限定になります

腹減り無し火事場飢狼超耳装備 (HR999:FX3箇所:イベG珠)

武器スロット1           Lv1      ●  眠瓶珠G
超絶のピアスⅩ          Lv7  127  ●●● 満腹珠, 剛力珠, 剛力珠
クラージFXレジスト    (FX)  Lv7  127  ●●● 剛力珠, 剛力珠, 剛力珠
アークFガード           Lv7  101  ●●● 剛力珠, 剛力珠, 剛力珠
ストレガFXコート     (FX)  Lv7  109   ●●● 針穴珠, 剛力珠, 剛力珠
エクエスFXレギンス   (FX)  Lv7  109  ●●● 反動珠G, 反動珠G, 針穴珠G
服Sスロット2                    ◆◆  腹へりカフSC1, 腹へりカフSC1

防御値:573 スロット: 火:6 水:6 雷:7 氷:4 龍:4
超高級耳栓,攻撃力UP【大】,見切り+3,狙い撃ち,餓狼+2
火事場力+2,反動軽減+2,装填速度+1,装填数UP,貫通弾・貫通矢威力UP

※カフを入れないとはら減り【小】が発動してしまい飢狼2が11番目に追い出されてしまいます
 飢狼使わない場合でも無駄にスタミナ上限が早く減ってしまいます
腕をロークF(スロ2)にして珠詰め替えれば下に載せる装備と同じスキルに出来ます
 が! 都度珠の詰め直ししないといけなくなるので実用的ではないです

装填速度なし火事場飢狼はら減り【大】 (HR999:FX2箇所:イベG珠)

武器スロット1           Lv1      ●  眠瓶珠G
超絶のピアスⅩ          Lv7  127  ●●● 剛力珠, 剛力珠, 剛力珠
アナキスーツ           Lv7   75  ●● 剛力珠, 剛力珠
蒼天ノ袖・魁        (イ)  Lv7   86  ●●● 剛力珠, 剛力珠, 剛力珠
ストレガFXコート     (FX)  Lv7  109   ●●● 弾穴珠, 針穴珠, 針穴珠
エクエスFXレギンス   (FX)  Lv7  109  ●●● 針穴珠, 針穴珠, 針穴珠G
プーギー服なし

防御値:506 スロット: 火:6 水:6 雷:6 氷:4 龍:7
超高級耳栓,攻撃力UP【大】,見切り+3,狙い撃ち,餓狼+2
反動軽減+2,火事場力+2,貫通弾・貫通矢威力UP,装填数UP,はらへり倍加【大】

※ 先の装備のコメで書いた問題点を解決する為に作った装備
 珠の詰め方を工夫すれば装備セットで1発着替えできます(カフは都度外してね)
 基本的にハメor高台専用 麻痺剣担当が居れば普通の狩りでも使いやすいと思います
 雪山や沼地下等の寒いエリアメインなら先の装備でも問題ありません

超絶のピアスⅩとFX複数の組み合わせだとスキル満載に出来るのですが
10スキル以上付いてしまう為逆に使い辛いです

スキルには優先順位と言うのがありまして
後から出来たスキルの方がどうしても優先順位が低くなります
これ正直どうにか改善してほしいのですが

 運営「技術的に無理ですの。」(本当なのか建前なのか真偽不明)

今回の場合はこの中で一番新しい【飢狼】スキルが11番目以降に追い出されてしまいます
なのでシミュる際も10スキル以下から選ぶしか有りませんでした(11や12はアホほどヒットする)

いつもいつも大型アップデート前に新装備作るのは
素材の引きがめちゃくちゃ弱いので素材揃えるのに凄い時間が掛かってしまう為です
未だにフルグルさえ作れていません
剛ルコ登場時から素材集め開始してるのに・・・orz

Arduinoって何よ?

Posted: 2012年1月21日 カテゴリー: AVR, 電子工作, 趣味

こないだからArduinoやらJapaninoやら言ってるけど何よ?
って話です

Androidやったら知ってるで?
違います それはスマホのOSです

早い話が「マイコン学習ボード」です

アメリカAtmel社が作っているAVRマイコンが基板に乗っていて
・マイコンをイジろうと思っても何から買えばいいか分からない
・抵抗とかコンデンサとか安定化回路やら意味わからん
・半田付けとか必要なんでしょ?
上記理由で二の足を踏んじゃう所を一気に解消してくれる物です

由来や製品に対する考えなどは本にもサイトにも書いてるのでググってくださいw

クリスタルや5/3.3V安定化回路やインターフェース制御チップやらコネクタ類など
最初に必要になるであろうパーツ類をまとめた基板になっていて
大きさはタバコの箱より小さいです

ほほぉ・・・ でも、お高いんでしょ?
最も一般的なモデルの最新バージョン Arduino Uno 2600~3200円で売ってます
後は超入門ならホームセンターで200円ぐらいで売ってるLEDと抵抗のセットでも買ってくればとりあえずOKです
開発環境もArduino IDEと言うフリーウェアとして公開されています

Arduino IDEをインストールしてArduino本体をパソコンと繋げるだけ
ただしコスト削減の為に本体に説明書は一切入ってません
セットアップはgoogle先生で「Arduino」でググれば数え切れないぐらいヒットするのでその中から自分に合ったサイトを見つけて設定してください
ぶっちゃけ無線LAN繋げるより簡単 プリンター繋げるレベル

共立エレショップやマルツパーツ館・スイッチサイエンス・ストロベリーリナックス・若松通商等で扱っていて
各社Arduino対応オリジナルパーツ(シールドといいます)を売ってたりもしますので
こんなの欲しいなぁと思ったら商品を流し見してみてください
ひょっとしたら有るかもしれません

実はあの有名な”秋月電子”は残念ながらArduino関連は殆ど扱ってません
PIC系やH8系とかAVRマイコン単体なら多数扱っているんですが
どちらかと言うと1から部品を揃えていく人向けで初心者には敷居がちょっと高かったりします
でもブレッドボードや抵抗・キャラクター液晶・LED等他店の追従を許さないぐらい多数のパーツを格安で売っていますので
各サイト様で公開してる物をコピペでもいいから自分でつくってみたいと思ったらだいたいここで一通りそろっちゃいます
って言うか物も価格も秋月電子基準でだったいのサイト様は書いています
そろそろ次のステップに進みたいな~って方には最適です

前の記事でアップした下の画像ですが

Arduino Unoにスイッチサイエンスで買ったLCDシールド(要半田付け)を上から刺しただけだったりします
Arduino IDEに熾火研究所*電子工作室に書かれてたプログラム(Arduinoではスケッチと言います)をコピペしただけw
ね?簡単でしょ?ww

北イタリアの専門学校では教材に使われてるぐらい入りやすく
1時間も講義を受ければLEDチカチカなどの簡単な作品1つぐらい作れる様になる
それがArduinoです(ってかArduinoはイタリア製で元々学校教材)


画像はストロベリーリナックスさんのサイトからArduino Duemilanove
 ※リンクは製品直リンクでアフィではありません このサイトはアフィ出来ない

何がそんなに簡単なんだ?と言われたら
上のDuemilanoveで言うと ピンを刺せる黒いコネクタが上下に並んでるのが見えると思うのですが
上の右から順に0~13番までがデジタル入出力 下の右コネクタがアナログ入力 左が電源出力とGND になってて
スケッチを描く際にポートの初期設定をレジスタに書く事無くD1やらA2やら指定してHIGH/LOWとか書けばいいだけなんです
液晶の初期化命令もArduino IDEにすでに定義されているので殆どの物は必要なし
半田付けする必要がなくピンが抜き差しできるのでブレッドボードにも繋げられます

そんな難しい事じゃなくLEDでナイトライダーぐらいなら、ああしてこうしてって絵を描いていく様に順番にコマンドと数値を入れていけばスケッチは完成します
もちろんもっと手の込んだ事もできます

Arduinoで実験に成功したら、必要な部品を抜き出して使わなかった機能を省いて回路を書いていけばおk
AVRマイコンをArduino化させればスケッチもそのまま使えます

こんな感じなんですが 分かってもらえたかな?

今回はマイコンや電子部品を1からじゃないので初期投資も5000円ぐらいで済みますので入りやすいんじゃないかなぁ

—————————————————————————————————————
ここから余談

テレビやコラムで物作り日本がどうこうとか中国韓国東南アジアと比べてどうこうとか言われていますが
そんな難しい事なんて気にすんな!
自分のやりたい事をやればいい
そのやりたい事の取捨選択の中に電子工作が入っていればいいかなぁぐらいに考えて書いてます
一度離れたり興味を無くしたとしてもまた戻ってきたらいいじゃん♪

はだっちが電子工作に興味を初めて持ったのは8歳ぐらいの頃
オヤジ(70歳オーバー)は昔から近所の同じ歳ぐらいの人ならしってるぐらいの電子工作好きだったらしく
そのオヤジが半田付けして電池式のブリキのオモチャ直してくれてるのを横でみてからです
初めて半田付けしたのもその頃だったかな?
もちろんなんか作ったり直したり出来るわけもなく
ただネジ外して分解したり半田溶かしたりして壊してただけですがねw

小学校5年でパソコンと出会ってからそっちへの興味が減り、たまーに半田付け修理するぐらいでしたが
ニコニコ動画のニコニコ技術部動画の中にある剣菱PがUPした動画を見つけたのが切欠でこの歳になって数十年ぶりに再熱しだした訳だったりしますw

剣菱Pの 【実況?】零からの電子工作 はこちら!→http://www.nicovideo.jp/watch/sm12618919

以上! 今回長すぎ!内容薄すぎ!

Arduino Unoがキターーー!

Posted: 2012年1月19日 カテゴリー: AVR, 電子工作, 趣味

前回書いた通りJapaninoが動かなくなったので
Arduino Unoをストロベリーリナックスさんでめっちゃ安かった(にもかかわらずUSBケーブル付き)のでプリィミドテープと一緒に注文しました

はいはいステマステマww宣伝乙www
日に約10~20アクセスのブログで何言ってんだw

スイッチサイエンスさん所で買ったオリジナルLCDシールド付けて熾火研究所*電子工作室のスケッチを使って時計表示テストもしました
 ※電子パーツとか売ってるサイトに行けばいくらでもあるので画像は貼りません

俺の持ってるJapaninoとLED点滅関係が全然違う LCDシールドに付いてるLEDも点滅したし・・・
やっぱ壊れてたんだろねぇ

今回のArduino Unoは差し替え可能で、もし壊れても数百円の出費で交換できます
AVRライター持ってるのでArduino化もこっちで出来るしArduino化済みのATmega328P-PUも売ってるしね!
雑誌付録のJapaninoはあくまで付録 コスト削減であの形態と品質なのは仕方がない うんうん
1週間は遊べたしよしとしよう!

PS:時計表示の”:”と空白の交互表示点滅が文字化けして2ケタの数字が交互に表示されてたww
   スケッチ改良していずれは正常表示化させたいです

(追記:12/1/20)
要するに使うArduino IDEのバージョンの問題でした Arduino-0021だと問題無く「:」と「(空白)」が交互表示されました
最新版であるArduino-1.0になって関数や定義が色々変わっているようです
スケッチのコピペで不具合出た場合、Arduino IDEのバージョンを疑ってみてください