最近増えてきましたね。自宅にパチスロ機を置く人が。
自分もあったりします。
数年前に買った4号機の「押忍!番長」です。
コインが数十枚ついていて、パチ屋と同じようにコインを
入れて遊んで大当たりしたらジャラジャラとでてきます。
が・・・
ジャラジャラの音がとても大きいw
そしてコインの入ってるホッパー(貯蔵してる箱)がすぐなくなって補充しなきゃいけない
ってことで、センサーをごまかしてコインを使わず遊べるのがコイン不要機です。
ヤフオクみると2000~3000円で打ってますが、せっかくarduionoがあるので
これでやってみます。
ちなみにコイン投入側(セレクター)と払い出し側(ホッパー)と2種類あるのですが、
セレクターはここを参考にして作ることができたのですが
ホッパー側ができていませんでした。
前置きが長すぎたな。。。もっとサッサといこう。
そんなわけで、本体開けて接続。
ホッパーを分解した状態で配線
センサーはLG-JT20が2つついてる。
左が常時塞がれてる状態で、コインが通ると一瞬右がふさがる
2番と3番をショートさせればいいんだねきっと。
まさかの手書きw
センサーは片方は常時HIGHである必要がある。
アルド側で常時HIGHにすると、電源落としたりするとホッパーエラーがでるため、
トランジスタでNOT回路入れてみた。
やってることは簡単。フォトカプラPC817使って、
モーターの信号を受けたらアルドちゃんの入力ピンがHIGHになる。
アルドの出力ピンがHIGHになったらフォトカプラ経由でセンサーをON,OFFする
ピンは3本。モーターINPUT1本とセンサーOUTPUT2本
スケッチはこんな感じ。loop中の抜粋ですが。。。
モーターがONになったら1ms~9msまでセンサーの信号を反転させます。
10msでタイマーをリセットさせてまた0msから。
この10msは適当です。動いてるからいいと思う。
もうちょっとカッコいいスケッチの書き方ないのかなぁ。
割り込み使えばいいのかな?
追記:
当初はこんな動きを想定してました。
センサー1 ON →OFF→OFF→OFF→ON
センサー2 OFF→OFF→ON→OFF→ON
そのため、センサー1,2を別々に制御してるんだけど・・・
今みたら、このスケッチで動くんだったら1つでいいような気がしてきたw
void swaitreset(){
previous_millis = millis();
}
unsigned long swaittime(){
return( millis() -previous_millis );
}
////////////////////////////////////////////////////////////
//senser2Pinにnot回路がいれてあるため
//両方同じレベルになってしまう・・・
if( digitalRead( moterPin )==HIGH){
hopperTimert=swaittime()/10;
// Serial.println(t);
if( hopperTimert<1 ){
digitalWrite( senser1Pin,LOW );
digitalWrite( senser2Pin,LOW );
}
if( 1<hopperTimert && hopperTimert<10 ){
digitalWrite( senser1Pin,HIGH );
digitalWrite( senser2Pin,HIGH );
}
if( 10<hopperTimert ){
digitalWrite( senser1Pin,LOW );
digitalWrite( senser2Pin,LOW );
swaitreset();
}
}else{
// モーター停止状態
swaitreset();
digitalWrite( senser1Pin,LOW );
digitalWrite( senser2Pin,LOW );
}
とりあえず快適に動いてます。