ライントレーサー
目次
ライントレーサーとは?
ラインの上を進むロボットです。基本的にスタートからゴールまでのタイムを競います。
出典:
http://kazeusagi2005.cocolog-nifty.com/diary/2014/08/post-c9dd.html
ハードウェア
表面実装のステッピングモーター
LED スピーカー スイッチ
マイコン
stm32f103を使います。
回路
電源回路 レギュレータとFETを使用した大容量スイッチ
センサー回路 分圧とコンデンサーを使用したノイズ除去
モーター ステッピングモータ
モータードライバー回路 モータードライバーのデータシートどうりに
スピーカー回路
LED回路 抵抗で降圧するだけ
スイッチ 3.3Vのレギュレータからマイコンにちょく付け
ソフトウェア
フローチャート
初期設定
ピンAIN 電源
ピンDOUT LED1
ピンDOUT LED2
ピンDOUT スピーカー1
ピンセンサー1
ピンセンサー2
ピンモーター
モード選択
モード1(初期モード)何もしない
モード2(センサー動作テストモード)センサーとLEDのみ有効
モード3(バッテリー管理モード)
モード4(走行モード)
プログラミング言語
C言語を使います。
ピン設定
void Pin_Config(void){
/*
* ピンの設定関数
*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);//PA13/14/15/PB3/4→GPIO pp.79-80//OUTPUT
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 |GPIO_Pin_7; //LED
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13; //MOTOR
GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //LED
GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; //LED
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9; //MOTOR
GPIO_Init(GPIOC,&GPIO_InitStructure);//Degital INPUT
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14; //SWHICH
GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12; //SWHICH
GPIO_Init(GPIOC,&GPIO_InitStructure);//Analog INPUT
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_ADC1, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //ADコンバータ p.220GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3; //SENSOR
GPIO_Init(GPIOC, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2; //SENSOR
GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //電源電圧
GPIO_Init(GPIOB, &GPIO_InitStructure);
}