検索
AND検索
OR検索
トップ
|
リロード
|
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
ライントレースカー(コースアウト処理追加) をテンプレートにして作成
★トップ(目次)ページへ
★情報交換掲示板
08/08/14設置
今日の10件
PICとMikroC
(533)
A/D値でLEDの明るさ変更(PWM LCD表示 16F1827 XC8)
(4)
スイッチ入力(基本)
(3)
I2C通信LCD表示法(16F1827 XC8)
(3)
スイッチ入力(16F886)
(3)
PIC-PICの通信(USART)
(3)
純正:PICkit3 3,900円
(3)
ライントレースカー(基本機能のみ搭載)
(2)
新型PIC18F系
(2)
LCD表示法(基礎)
(2)
最新の15件
2024-04-02
インターバルタイマ(TMR0割込み利用)(16F886)
XC8:変数の型のタイプと値の範囲
XC8:プログラミング書式の確認
XC8:コンフィグレーションワード記述書式について
スリープ(PICの消費電力を最小に)
PWM機能
2024-01-29
MikroCの特徴
RecentDeleted
2023-12-22
RCDライタ 350円
LEDの明るさを変える(PWM)(24FJ64)
ライントレースカー(基本機能のみ搭載)
発光ダイオード(LED)の点滅(16F1827 XC8)
2023-09-12
I2C通信LCD表示法(16F1827 XC8)
2023-07-06
PIC-PICの通信(USART)
2023-07-04
16F1827のconfig設定
#amazon(4798109223)
Total:0/Today:0
開始行:
閲覧総計:&counter(); (本日:&counter(today); 昨日...
*ライントレースカー(コースアウト処理追加) [#p3d7b6a5]
「基本機能のみ搭載」では、カーブの際、ラインセンサ2ケ共...
はずれ、車がラインから外れてしまいました。
この問題を解決する為、今回はラインの外れ方の履歴をold_fla...
ラインセンサ2ケ共に外れた際の動作指示を定義しました。
【結果】ライントレースカーは常に正しくラインに沿って走行...
なりました。 06/11/05
|&attachref(,zoom,150x150,button){新しい写真添付};|&attac...
/**
* ライントレースカー(コースアウト処理追加)
*
* PIC 16F628A
* 発信器:内臓4MHz
* 電源:PIC 乾電池4本(6.0V) モータ 乾電池3本(4.5V)
* ライトセンサー:RA0, RA1
* モーター:左 RB6,RB7 右 RB0,RB1
*
* Device Flags: _BODEN_OFF _BOREN_OFF _CP_OFF _PWRTE_ON
* _WDT_OFF _LVP_OFF _MCLRE_OFF _INTRC_OSC_NOCLKOUT
*
* プログラム言語:MikroC v6.0
*/
void main() { //メインプログラム
unsigned short int old_flag; //完全コースアウト前の状...
//マイコンの初期化
PORTA = 0b00000000; //PORTAの中身をきれいにする
PORTB = 0b00000000; //PORTBの中身をきれいにする
CMCON = 0b00000111; //PORTAをデジタル入出力使用に設定
TRISA = 0b00000011; //PORTAをRA0,1を1:入力に、他は0:出...
TRISB = 0b00000000; //PORTBを8つ全て0:出力に設定
//マイコンの初期化終わり
do{ //doとwhileの間を繰り返す
if(PORTA.F1 == 1) { //左センサー黒
if(PORTA.F2 == 1) { //右センサー黒
//車がラインの上にある
//左右モーター前進
PORTB.F2 = 1; //左モーター前進
PORTB.F3 = 0;
PORTB.F5 = 1; //右モーター前進
PORTB.F4 = 0;
old_flag = 0; //両センサコース上
} else { //右センサ白
//右にコースアウト
//左モーター停止、右モーター前進で
//コースにもどる
PORTB.F2 = 0; //左モーター停止
PORTB.F3 = 0;
PORTB.F5 = 1; //右モーター前進
PORTB.F4 = 0;
old_flag = 1; //右にコースアウト
}
} else { //左センサー白
if(PORTA.F2 == 1) { //右センサー黒
//左にコースアウト
//左モーター前進、右モーター停止で
//コースにもどる
PORTB.F2 = 1; //左モーター前進
PORTB.F3 = 0;
PORTB.F5 = 0; //右モーター停止
PORTB.F4 = 0;
old_flag = 2; //左にコースアウト
} else { //右センサー白
//左右センサー共に白、完全コースアウトした場合
if(old_flag == 1) {
//右にコースアウト
//左モーター停止、右モーター前進で
//コースにもどる
PORTB.F2 = 0; //左モーター停止
PORTB.F3 = 0;
PORTB.F5 = 1; //右モーター前進
PORTB.F4 = 0;
old_flag = 1; //右にコースアウト
} else {
//左にコースアウト
//左モーター前進、右モーター停止で
//コースにもどる
PORTB.F2 = 1; //左モーター前進
PORTB.F3 = 0;
PORTB.F5 = 0; //右モーター停止
PORTB.F4 = 0;
old_flag = 2; //左にコースアウト
}
}
}
} while(1); //doとwhileの間を繰り返す
} //メインプログラム終わり
★この情報は役に立ちましたか?
#vote(はい[33],いいえ[33])
終了行:
閲覧総計:&counter(); (本日:&counter(today); 昨日...
*ライントレースカー(コースアウト処理追加) [#p3d7b6a5]
「基本機能のみ搭載」では、カーブの際、ラインセンサ2ケ共...
はずれ、車がラインから外れてしまいました。
この問題を解決する為、今回はラインの外れ方の履歴をold_fla...
ラインセンサ2ケ共に外れた際の動作指示を定義しました。
【結果】ライントレースカーは常に正しくラインに沿って走行...
なりました。 06/11/05
|&attachref(,zoom,150x150,button){新しい写真添付};|&attac...
/**
* ライントレースカー(コースアウト処理追加)
*
* PIC 16F628A
* 発信器:内臓4MHz
* 電源:PIC 乾電池4本(6.0V) モータ 乾電池3本(4.5V)
* ライトセンサー:RA0, RA1
* モーター:左 RB6,RB7 右 RB0,RB1
*
* Device Flags: _BODEN_OFF _BOREN_OFF _CP_OFF _PWRTE_ON
* _WDT_OFF _LVP_OFF _MCLRE_OFF _INTRC_OSC_NOCLKOUT
*
* プログラム言語:MikroC v6.0
*/
void main() { //メインプログラム
unsigned short int old_flag; //完全コースアウト前の状...
//マイコンの初期化
PORTA = 0b00000000; //PORTAの中身をきれいにする
PORTB = 0b00000000; //PORTBの中身をきれいにする
CMCON = 0b00000111; //PORTAをデジタル入出力使用に設定
TRISA = 0b00000011; //PORTAをRA0,1を1:入力に、他は0:出...
TRISB = 0b00000000; //PORTBを8つ全て0:出力に設定
//マイコンの初期化終わり
do{ //doとwhileの間を繰り返す
if(PORTA.F1 == 1) { //左センサー黒
if(PORTA.F2 == 1) { //右センサー黒
//車がラインの上にある
//左右モーター前進
PORTB.F2 = 1; //左モーター前進
PORTB.F3 = 0;
PORTB.F5 = 1; //右モーター前進
PORTB.F4 = 0;
old_flag = 0; //両センサコース上
} else { //右センサ白
//右にコースアウト
//左モーター停止、右モーター前進で
//コースにもどる
PORTB.F2 = 0; //左モーター停止
PORTB.F3 = 0;
PORTB.F5 = 1; //右モーター前進
PORTB.F4 = 0;
old_flag = 1; //右にコースアウト
}
} else { //左センサー白
if(PORTA.F2 == 1) { //右センサー黒
//左にコースアウト
//左モーター前進、右モーター停止で
//コースにもどる
PORTB.F2 = 1; //左モーター前進
PORTB.F3 = 0;
PORTB.F5 = 0; //右モーター停止
PORTB.F4 = 0;
old_flag = 2; //左にコースアウト
} else { //右センサー白
//左右センサー共に白、完全コースアウトした場合
if(old_flag == 1) {
//右にコースアウト
//左モーター停止、右モーター前進で
//コースにもどる
PORTB.F2 = 0; //左モーター停止
PORTB.F3 = 0;
PORTB.F5 = 1; //右モーター前進
PORTB.F4 = 0;
old_flag = 1; //右にコースアウト
} else {
//左にコースアウト
//左モーター前進、右モーター停止で
//コースにもどる
PORTB.F2 = 1; //左モーター前進
PORTB.F3 = 0;
PORTB.F5 = 0; //右モーター停止
PORTB.F4 = 0;
old_flag = 2; //左にコースアウト
}
}
}
} while(1); //doとwhileの間を繰り返す
} //メインプログラム終わり
★この情報は役に立ちましたか?
#vote(はい[33],いいえ[33])
ページ名: