自作パチスロに挑む! ディスクアップ編
今回は、人気のパチスロ機種である
“ディスクアップ”をモチーフに、
ミニチュアスロットマシンを自作してみました。
今回の推しポイントは、
PICマイコンの”mTouch”という機能を利用した
スクラッチ演出です。
以前にチャレンジしたときは、何が悪かったのか上手く機能せず、
今回ようやく使いこなすことが出来ました。
せっかくなので、
mTouch部分のコードをメモしておこうと思います。
#include <xc.h>
#include <stdio.h>
#define _XTAL_FREQ 16000000
#pragma config CPD = OFF, BOREN = OFF, IESO = OFF, FOSC = INTOSC, FCMEN = OFF
#pragma config MCLRE = ON, WDTE = OFF, CP = OFF, PWRTE = ON, CLKOUTEN = OFF
#pragma config PLLEN = OFF, WRT = OFF, STVREN = ON, BORV = LO, LVP = OFF
//********************************************************************************
void main(void)
{
//タッチセンサ用の定義
unsigned short cap_value;//タッチセンサ値格納用
//タッチセンサ(Capacitive Sensor)の設定
CPSCON0=0b00001000;//固定基準電圧使用、オシレータ(電流)
CPSCON1=0b00000001;//センサピンにCPS1を使用
//タイマー1の設定
T1CON = 0b11000001;//容量検知オシレータでTIMER1をカウント
//検知開始
TMR1H=0;//タイマー1の初期化
TMR1L=0;
//割り込み設定
PEIE = 1;//周辺装置割り込み許可
GIE = 1;//全割り込み処理を許可
//
cap_value=0;//初期値0
CPSON=1;//タッチセンサモジュールの計測開始
//検知開始
TMR1H=0;//タイマー1の初期化
TMR1L=0;
__delay_ms(10); //一定時間待つ
CPSON=0;//タッチセンサモジュールの計測終了
//*******************************************************
//タッチ検知処理準備完了
//*******************************************************
TRISA = 0b00000010;//
TRISB = 0b00000000;
OPTION_REG=0b00000000;
WPUA = 0b00000000;
WPUB = 0b00000000;
PORTA = 0b00000000;
PORTB = 0b00000000;
ANSELA = 0b00000010;//使うCPSピンに対応したAN*ピンを1に設定すること!
ANSELB = 0b00000000;
OSCCON = 0b01111100; // INTOSC 16MHz
SSP1CON1 = 0b00101000; // I2C master mode, Clock 100kHz = Fosc / ( 4 * (SSPADD + 1 ))
SSP1STAT = 0b10000000; // Slew rate control Enabled
SSP1ADD = 0b00100111; // SSPADD 39d, Clock = Fosc / ( 4 * (SSPADD + 1 )) = 100kHz
//********************************************************************************
while(1){
//タッチ検知処理
//検知開始
CPSON=1;//タッチセンサモジュール計測開始
TMR1H=0;//タイマー1の初期化
TMR1L=0;
//一定時間待つ
__delay_ms(10);
//タッチセンサモジュールの計測を停止して、センサ値を一旦cap_valueに格納
CPSON=0;//タッチセンサモジュール計測終了
cap_value=(TMR1H*256)+TMR1L;//カウント値を読み込む
//タッチ判定
if(cap_value < 900){//900が閾値、この値で感度調整
//センサに触れたときの処理
RB4=1;
__delay_ms(10);
RB4=0;
__delay_ms(10);
}else{
//センサに触れていないときの処理
RB4=0;
}
}
}// main
//****************************************************
使用したPICマイコンは、”PIC16F1827″です。
<mTouch覚書>
・センサに使うピンに内部抵抗を使うと反応しないっぽい?
恐らく抵抗値が大きすぎて閾値設定が上手く出来なくなる?
私は外付けで330Ωの抵抗を取り付けました。
・センサに使うピンはANS_を1にする
よく分かりませんが、アナログ入力にして放電させる?
CPSとANSの数字は一緒とは限らないので要確認!
mTouchの動作確認は、こちらの動画でも紹介しています。
というわけで、
変なモノを作って紹介していたりもするので
興味のある方はぜひチャンネル登録を宜しくお願いします!
コメントを残す