湘南工科大学ロボット技術研究会活動日誌

ロボット技術研究会に青春を捧げた者たちの活動記録なんだって

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --/--/-- --:-- ] スポンサー広告 | TB(-) | CM(-)

【重要】ブログ・HP移転のお知らせ

ブログ・HP移転しました。
新しいURLは下記の通りです。

湘南工科大学 ロボット同好会 ブログ
http://sitrobotclub.hatenablog.com/


湘南工科大学 ロボット同好会 公式ページ
https://sitrobotclub.jimdo.com/


今後とも湘南工科大学ロボット同好会をよろしくお願いいたします。
スポンサーサイト
[ 2017/01/22 03:36 ] 未分類 | TB(0) | CM(0)

レスキューロボット書類審査通過

レスキューロボット書類審査通過しました。

無題

特別協賛枠チーム・・・今までにないプレッシャーを感じますね。

一番の心配は大学側の反応でしょうか。説得にまた時間が掛かりそうです・・・


yuri
[ 2013/02/18 21:23 ] レスコン | TB(0) | CM(1)

ロボフェスタ2012に参加しました

ロボ研がロボフェスタ2012に参加しました。

場所は桜木町にある県立青少年センターです。
私自身は二度目の参加なのですが、前回とは比べ物にならないぐらいの人の数。
来場者の方々を見ていると、小学生未満の子供たちが7割強といったところでしょうか。

IMG_4676.jpg

IMG_4674.jpg

主にマイコンカーの展示をしていたのですが、「はやーい!」「すごーい!」だけでなく「僕も作れるかな?」と言ってくれた子がいたのが大きな成果だったと思います。

また来年も参加して、より多くの子供たちがロボットに興味を持ってもらえるように努力したいです。


yuri
[ 2012/12/03 13:38 ] 未分類 | TB(0) | CM(1)

SITロボ研 MCR用簡易スタートゲートセットのプログラム

どもー久々のオタコンの登場Death・・・

ってなんでOBが書き込んでるんでしょうねw

最近ロードレーサーばっか乗りまくってて、全然ロボット弄ってないやw
マイコンカーじゃなくて自分が走りこんじゃってるってオチですねww


で、今日久々に大学に寄った時に後輩からラップタイマーのプログラム
よこせ!って脅迫された(ウソデス)ので予告通りロボ研ブログにうpする事に…

とりあえずオープンソースって事にしておきます。
回路図は全く用意せず、思いつきで作ったんでもう忘れてます。
回路壊れたら直せない確立100000000000000000000%です。

ちなみに超スーパーウルトラヤッツケで書いたんで絶対バグあるんで。
あとコメント内容当てにならないからソコントコよろしく。




/****************************************************************************************/
/* MCR・ラップタイマー用プログラム */
/* 2008.12/23 Ver.ピヨ4*/
/****************************************************************************************/
/*======================================*/
/* インクルード */
/*======================================*/
#include /* stdioの簡略化 最初に置く */
#include
#include
#include "h8_3048.h"

#include "lcd2.h" /* LCD表示用追加 */
#include "beep.h" /* TypeS基板のブザー */
#include "switch.h" /* スイッチ追加 */

/*======================================*/
/* シンボル定義 */
/*======================================*/
/* 0.04μs 0.02ms
/* 定数設定 */
#define MOTER_CYCLE 1228 /* モータPWMのサイクル兼、1kHz -3072 2kHz-1536 */
#define PWM_CYCLE 49021 /* モータPWMのサイクル兼、1kHz -3072 2kHz-1536 */
#define Free 49020 /* モータPWMのサイクル兼、1kHz -3072 2kHz-1536 */

/*======================================*/
/* プロトタイプ宣言 */
/*======================================*/
void init( void ); /* 全体割り込み */
unsigned char dipsw_get( void ); /* H8-DIPsw   */
void led_out( unsigned char led );
unsigned char dipsw_get1( void );
unsigned char dipsw_get2( void );
unsigned char pushsw_get( void );

unsigned char geat1_L_get( void );
unsigned char geat1_R_get( void );
unsigned char geat2_L_get( void );
unsigned char geat2_R_get( void );

/*======================================*/
/* グローバル変数の宣言 */
/*======================================*/
int pattern; /* マイコンカー動作パターン */
unsigned long cnt0; /* タイマ ピヨ1用 */
unsigned long cnt1; /* タイマ ピヨ2用 */
unsigned long cnt2; /* タイマ ピヨ3用 */
unsigned long cntR; /* タイマ ピヨ4用 */
unsigned long cntB; /* タイマ ピヨ5用 */

unsigned long lap_time; /* タイマ ホゲ1用 */
unsigned long Rcs_time; /* タイマ ホゲ2用 */
unsigned long Bcs_time; /* タイマ ホゲ3用 */
unsigned long Rcs_time2; /* タイマ ホゲ4用 */
unsigned long Bcs_time2; /* タイマ ホゲ5用 */

/************************************************************************/
/* メインプログラム */
/************************************************************************/
void main( void )
{
int lcd_pattern = 0;

long h, j, i, k, l, m, n; /* タイマー用 */
unsigned long r,b;

/* マイコン機能の初期化 */
init(); /* 初期化 */
init_sci1( 0x00, 79 ); /* SCI1初期化 SMR=128 BRR=24.576*106/(128*9600)-1 */
set_ccr( 0x00 ); /* 全体割り込み許可 */
initLcd(); /* LCD初期化 */
initBeep(); /* ブザー初期化 */
initSwitch(); /* スイッチ初期化 */

ITU1_GRB = 43922; /* 1コース ゲートクローズ */
ITU2_GRB = 44361; /* 2コース ゲートクローズ */
P1DR=0x00;
setBeepPattern( 0xa800 );

while( 1 ) {




switch( pattern ) {

case 0:/* リレー・センサー・サーボ初期状態へ 1秒待ち */

ITU1_GRB = 43899; /* 1コースゲートクローズ */
ITU2_GRB = 44361; /* 2コースゲートクローズ */

lcdPosition( 0, 0 );lcdPrintf( "LapTimer Ver4.00" );
lcdPosition( 0, 1 );lcdPrintf( " mode select " );

if( cnt2 > 2000 ){
cnt2 = 0;
i = 1;
pattern = 1;
}

break;

case 1:

ITU1_GRB = Free; /* 1コースゲート フリー */
ITU2_GRB = Free; /* 2コースゲート フリー */

if( getSwFlag(SW_4) ) { i++; if( i > 1 ) i = 0;}

/* LCD処理 */
lcdPosition( 0, 0 );lcdPrintf( " mode select " );
if( i == 1 ){
lcdPosition( 0, 1 );lcdPrintf( " 2Course mode " );
if( getSwFlag(SW_0) ){
pattern = 10;
}
}

if( i == 0 ){
lcdPosition( 0, 1 );lcdPrintf( " Lap_timer Mode " );
if( getSwFlag(SW_0) ){
pattern = 200;
}
}
break;

case 10:

ITU1_GRB = 43899; /* 1コースゲートクローズ */
ITU2_GRB = 44361; /* 2コースゲートクローズ */

lcdPosition( 0, 0 );lcdPrintf( " 2Course mode " );

if( cnt0 < 500 ){ lcdPosition( 0, 1 );lcdPrintf( " wait " );

}else if( cnt0 < 1000 ){ lcdPosition( 0, 1 );lcdPrintf( " wait. " );

}else if( cnt0 < 1500 ){ lcdPosition( 0, 1 );lcdPrintf( " wait.. " );

}else if( cnt0 < 2000 ){ lcdPosition( 0, 1 );lcdPrintf( " wait... " );

} else {/* 全フラグクリア */

ITU1_GRB = Free; /* 1コースゲートクローズ */
ITU2_GRB = Free; /* 2コースゲートクローズ */
r = 0;
Rcs_time = 0;
Rcs_time2 = 0;

b = 0;
Bcs_time = 0;
Bcs_time2 = 0;

cnt0 = 0;
P1DR = 0x00;
pattern = 20;
}

break;


case 20:/* マシンセッティング待機モード */
ITU1_GRB = Free; /* 1コースゲートクローズ */
ITU2_GRB = Free; /* 2コースゲートクローズ */

/*--------------------------------表示処理--------------------------------*/

if( cnt0 < 500 ){ lcdPosition( 0, 0 );lcdPrintf( " 1-Cs Ready ? " );
lcdPosition( 0, 1 );lcdPrintf( " 2-Cs Ready ? " );

}else if( cnt0 < 1000 ){ lcdPosition( 0, 0 );lcdPrintf( " 1-Cs " );
lcdPosition( 0, 1 );lcdPrintf( " 2-Cs " );

} else { cnt0 = 0;

}

if( getSwFlag(SW_0) ){/* ゲートリセット */
ITU1_GRB = 43899; /* 1コースゲートクローズ */
ITU2_GRB = 44361; /* 2コースゲートクローズ */
pattern = 10;
}

if( !geat1_L_get() ){ /* 1コースフライング */
setBeepPattern( 0xee0e ); /* ピ!ピ!っピ! */
ITU1_GRB = 46721; /* 1コースゲート OPEN */
ITU2_GRB = Free; /* 2コースゲート Free */
pattern = 11;
}

if( !geat2_R_get() ){ /* 2コースフライング */
setBeepPattern( 0xee0e ); /* ピ!ピ-!っピ! */
ITU1_GRB = Free; /* 1コースゲート Free */
ITU2_GRB = 47145; /* 2コースゲート OPEN */
pattern = 12;
}

if( getSwFlag(SW_1) ){ /* スタート */
ITU1_GRB = 46721; /* 1コース ゲートオープン */
ITU2_GRB = 47145; /* 2コース ゲートオープン */
P1DR=0xff; /* 1コース 2コース パトランプON */
setBeepPattern( 0xFFFF ); /* ピーーー! */
cntR = 0;
cntB = 0;
cnt0 = 0;
pattern = 30;
}

break;

case 11:
ITU1_GRB = 46721; /* 1コースゲート OPEN */
ITU2_GRB = Free; /* 2コースゲート Free */
if( getSwFlag(SW_0) ){/* ゲートリセット */
ITU1_GRB = 43899; /* 1コースゲートクローズ */
ITU2_GRB = 44361; /* 2コースゲートクローズ */
pattern = 10;
}
break;


case 12:
ITU1_GRB = Free; /* 1コースゲート Free */
ITU2_GRB = 47145; /* 2コースゲート OPEN */

if( getSwFlag(SW_0) ){/* ゲートリセット */
ITU1_GRB = 43899; /* 1コースゲートクローズ */
ITU2_GRB = 44361; /* 2コースゲートクローズ */
pattern = 10;
}
break;

case 30:/* 計測開始 */

if( cnt0 > 2500 ){

P1DR = 0X00; /* 2.5s間はランプ ON */
ITU1_GRB = Free; /* 1コース ゲート Free */
ITU2_GRB = Free; /* 2コース ゲート Free */
}
if( (cntR > 1000) && !geat1_L_get() ){/* ゲート通過処理 */
Rcs_time = cntR;
cntR = 0;
cnt0 = 0;
pattern = 31;
}

if( cntB > 1000 && !geat2_R_get()){/* 2コース通過 */
Bcs_time = cntB;
cntB = 0;
cnt0 = 0;
pattern = 32;
}

if( getSwFlag(SW_0) ){/* ゲートリセット */
ITU1_GRB = 43899; /* 1コースゲートクローズ */
ITU2_GRB = 44361; /* 2コースゲートクローズ */
pattern = 10;
}

break;

case 31:/* 1コース通過 */

r = Rcs_time2 + Rcs_time;

i = r % 1000 ; j =(r % 60000)/1000; k = r / 60000;

lcdPosition( 0, 0 );lcdPrintf( " 1-Cs %02ld'%02ld'%03ld " , k,j,i );
lcdPosition( 0, 1 );lcdPrintf( " 2-Cs %02ld'%02ld'%03ld " , n,m,l );

Rcs_time2 = r;
pattern = 30;

if( !geat2_R_get()){/* 2コース通過 */
Bcs_time = cntB;
cntB = 0;
cnt0 = 0;
pattern = 32;
}

break;

case 32:

b = Bcs_time2 + Bcs_time;

l = b % 1000 ; m =(b % 60000)/1000; n = b / 60000;

lcdPosition( 0, 0 );lcdPrintf( " 1-Cs %02ld'%02ld'%03ld " , k,j,i );
lcdPosition( 0, 1 );lcdPrintf( " 2-Cs %02ld'%02ld'%03ld " , n,m,l );

Bcs_time2 = b;
pattern = 30;

if( !geat1_L_get() ){/* ゲート通過処理 */
Rcs_time = cntR;
cntR = 0;
cnt0 = 0;
pattern = 31;
}


break;

/**********************************************************************************/
/* ラップタイマーモード */
/**********************************************************************************/

case 200:

if( (cnt0 > 5000) && !geat1_L_get() ){/* ゲート通過処理 */

ITU1_GRB = Free; /* 1コースゲートFree */
lap_time = cnt0; /* ラップタイム保存 */
cnt0 = 0; /* カウントクリア */
pattern = 201;
}

/*-------- ラップタイム 表示処理 -------*/
i = lap_time % 1000 ; /* 1/100sec */
j =(lap_time % 60000)/1000; /* sec */
k = lap_time / 60000; /* min */

lcdPosition( 0, 0 );lcdPrintf( "ツウカスルト コウシンサレマス");
lcdPosition( 0, 1 );lcdPrintf( " Lap %02ld'%02ld'%03ld " , k,j,i );

if( getSwFlag(SW_0) ){/* ゲートリセット */
pattern = 0;
}

break;

case 201:

if( (cnt0 > 5000) && !geat1_L_get() ){/* ゲート通過処理 */

ITU1_GRB = Free; /* 1コースゲートFree */
lap_time = cnt0; /* ラップタイム保存 */
cnt0 = 0; /* カウントクリア */
pattern = 200;
}
/*-------- ラップタイム 表示処理 -------*/
i = lap_time % 1000 ; /* 1/100sec */
j =(lap_time % 60000)/1000; /* sec */
k = lap_time / 60000; /* min */

lcdPosition( 0, 0 );lcdPrintf( "Micom Car Rally");
lcdPosition( 0, 1 );lcdPrintf( " Lap %02ld'%02ld'%03ld " , k,j,i );

if( getSwFlag(SW_0) ){/* ゲートリセット */
pattern = 0;
}

break;

default:
break;
}
}
}
/************************************************************************/
/* H8/3048F-ONE 内蔵周辺機能 初期化 */
/************************************************************************/
void init( void )
{/* I/Oポートの入出力設定 */
P1DDR = 0xff;

P2DDR = 0x00; /* マザーボード上のDIP SW */
P2PCR = 0xff; /* プルアップ抵抗ON */

P3DDR = 0x8e; /* スイッチ、EEP-ROM */

P4DDR = 0xff; /* LCD接続 */

P5DDR = 0x0f;

P6DDR = 0xf0; /* CPU基板上のDIP SW */

P8DDR = 0x00; /* 0~3 センサ 4 SW */

P9DDR = 0x00; /* 通信ポート */

PADDR = 0xfd; /* 1111 1101 */

PBDDR = 0xff;


/* D/A変換 DA0を使用 */
DA_CR = 0x40; // 0110 0000



/* ITU1 PA4 右前PWM */
ITU0_TCR = 0x23; /* カウンタ、クリアの設定 */
ITU0_GRA = PWM_CYCLE; /* PWM周期 */
ITU0_GRB = 4870;

ITU1_TCR = 0x23; /* カウンタ、クリアの設定 */
ITU1_GRA = PWM_CYCLE; /* PWM周期 */
ITU1_GRB = 4870;

ITU2_TCR = 0x23; /* カウンタ、クリアの設定 */
ITU2_GRA = PWM_CYCLE; /* PWM周期 */
ITU2_GRB = 4870;



ITU_MDR |= 0x07; /* PWMモード設定 */

/* ITU3,4 右、左モータ、ステアリング */

ITU3_TCR = 0x20; /*GRAクリア 立上がりエッジ 内部クロック1/8 */
ITU_FCR = 0x3e; /* ITU3/4でリセット同期モード   */
ITU3_IER = 0x01; /* TCNT = GRAによる割込み制御 */

ITU3_GRA = MOTER_CYCLE; /* 周期の設定   */
ITU3_GRB = ITU3_BRB = 0; /* PB1(TIOCB3) 左モータのPWM設定 */
ITU4_GRA = ITU4_BRA = 0; /* PB4(TOCXA4) 右モータのPWM設定 */
ITU4_GRB = ITU4_BRB = 0; /* PB5(TOCXB4) サーボのPWM設定 */
ITU_TOER = 0x38; /* 0011 1000 */
/* TOCXB4 TOCXA4 TIOCB3 に出力許可 */
ITU_STR = 0x1e; /* ITUのカウントスタート */
/* 0001 1111 */
}
/************************************************************************/
/* ITU3 割り込み処理 50kHz=0.02ms */
/************************************************************************/
#pragma interrupt( interrupt_timer3 )
void interrupt_timer3( void )
{
unsigned int i;

ITU3_TSR &= 0xf8; /* フラグクリア 1111 1000 */

cnt1++; /* 1ms用カウンタ */

if( cnt1 >= 20 ) { cnt1 = 0; /* 1ms毎の割り込み用タイマ */
cnt0++; /* */
cnt2++;
cntR++;
cntB++;
lcdShowProcess(); /* LCD表示処理用関 1ms毎 */
beepProcess();
switchProcess(); /* 拡張スイッチ用関数 1ms毎 */

}

}
/************************************************************************/
/* ディップスイッチ値読み込み 確認完了 */
/* 戻り値 スイッチ値 0~15 */
/************************************************************************/
unsigned char dipsw_get( void )
{
unsigned char sw;

sw = ~P6DR; /* ディップスイッチ読み込み */
sw &= 0x0f;

return sw;
}
/************************************************************************/
/* LED制御 確認完了 */
/* 引数 スイッチ値 LED0:bit0 LED1:bit1 "0":消灯 "1":点灯 */
/* 例)0x3→LED1:ON LED0:ON 0x2→LED1:ON LED0:OFF */
/************************************************************************/
void led_out( unsigned char led )
{
unsigned char data;

led = led;
data = P1DR & 0xfc;
P1DR = data | led;
}
/************************************************************************/
/* ディップスイッチ値読み込み1 上のDIP 確認完了 */
/* 戻り値 スイッチ値 0~15 */
/************************************************************************/
unsigned char dipsw_get1( void )
{
unsigned char sw;

sw = ~P2DR>>4; /* ディップスイッチ読み込み */
sw &= 0xf; /* 上位 >>4 0xf (上) */

return sw;
}
/************************************************************************/
/* プッシュスイッチ値読み込み P84 オンボード上 確認完了 */
/* 戻り値 スイッチ値 ON:1 OFF:0 */
/************************************************************************/
unsigned char pushsw_get( void )
{
unsigned char sw;

sw = ~P8DR; /* スイッチのあるポート読み込み */
sw &= 0x10;

return sw;
}
/************************************************************************/
/* ディップスイッチ値読み込み2 下のDIP 確認完了 */
/* 戻り値 スイッチ値 0~15 */
/************************************************************************/
unsigned char dipsw_get2( void )
{
unsigned char sw;

sw = P2DR; /* ディップスイッチ読み込み */
sw &= 0xf; /* 下位 0xf (下) */

return sw;
}
/************************************************************************/
/* ディップスイッチ値読み込み2 下のDIP 確認完了 */
/* 戻り値 スイッチ値 0~15 */
/************************************************************************/
unsigned char geat1_R_get( void )
{
unsigned char sw;

sw = P2DR; /* ディップスイッチ読み込み */
sw &= 0x01; /* 0000 0001 */

return sw;
}
/************************************************************************/
/* ディップスイッチ値読み込み2 下のDIP 確認完了 */
/* 戻り値 スイッチ値 0~15 */
/************************************************************************/
unsigned char geat1_L_get( void )
{
unsigned char sw,sw2;

sw = P2DR; /* ディップスイッチ読み込み */
sw &= 0x02; /* 0000 0010*/
sw2 = sw>>1;
return sw2;
}
/************************************************************************/
/* ディップスイッチ値読み込み2 下のDIP 確認完了 */
/* 戻り値 スイッチ値 0~15 */
/************************************************************************/
unsigned char geat2_R_get( void )
{
unsigned char sw,sw2;

sw = P2DR; /* ディップスイッチ読み込み */
sw &= 0x04; /* 0000 0010*/
sw2 = sw>>2;
return sw2;
}
/************************************************************************/
/* ディップスイッチ値読み込み2 下のDIP 確認完了 */
/* 戻り値 スイッチ値 0~15 */
/************************************************************************/
unsigned char geat2_L_get( void )
{
unsigned char sw,sw2;

sw = P2DR; /* ディップスイッチ読み込み */
sw &= 0x08; /* 0000 0010*/
sw2 = sw>>3;
return sw2;
}
/************************************************************************/
/* end of file */
/************************************************************************/
[ 2012/05/19 21:58 ] マイコンカー | TB(1) | CM(2)

新ロボ研が始まります

ロボ研が新しくなりました。

目に見える変化は・・・

Before...(11月頃)
画像

After...(4月現在)
画像 002

部屋の乱れは心の乱れと言いますし、今回の清掃によって今まで以上の活動ができる環境が整いました。

新入部員である一年生8人もこれからマイコンカーの設計へと進んでいき、本格的な活動に移っていくかなと思います。

とりあえず研究会崩壊は防げたようです・・・


yuri
[ 2012/04/12 00:11 ] 日常生活 | TB(1) | CM(3)
ろぼ研

湘工大ロボ研

Author:湘工大ロボ研
みんなものづくりが大好き!

twitter
<
FC2ブログランキング
らんきんぐ

上のボタンをおすと あなたに幸運が訪れます
ランキングTOPをめざせ!
[ジャンルランキング]
学校・教育
1622位
アクセスランキングを見る>>

[サブジャンルランキング]
クラブ・サークル活動
119位
アクセスランキングを見る>>


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。