- 追加された行はこの色です。
- 削除された行はこの色です。
閲覧総計:&counter(); (本日:&counter(today); 昨日:&counter(yesterday);)~
~
*無線送信機 [#b84238fa]
*【応用】ラジコンカー [#mbf9d446]
|&attachref(214908913_145.jpg,zoom,150x150,button){新しい写真添付};|
【目次】
#contents
**無線送信機 [#b84238fa]
無線送信機を設計、製作しました。
2つのスイッチを用意し、左右のモータを独立に前進・後進
制御する事で、ラジコンカーを自由に操縦出来る様に考えました。
制御する事で、ラジコンカーを自由に操縦出来る様に考えてみました。
06/11/03
|&attachref(,zoom,150x150,button){新しい写真添付};|&attachref(,zoom,150x150,button){新しい写真添付};|&attachref(,zoom,150x150,button){新しい写真添付};|
|&attachref(211575269_18.jpg,zoom,150x150,button){新しい写真添付};|&attachref(211575269_17.jpg,zoom,150x150,button){新しい写真添付};|&attachref(211575269_165.jpg,zoom,150x150,button){新しい写真添付};|
/**
* 無線データ送信(車の操縦)
*
* PIC 16F628A
* 発信器:内臓4MHz
* 電源:乾電池3本(4.5V)
* switch: RA0,RA1,RA2,RA3
* LED: RB6
*
* Device Flags: _BODEN_OFF _BOREN_OFF _CP_OFF _PWRTE_ON
* _WDT_OFF _LVP_OFF _MCLRE_OFF _INTRC_OSC_NOCLKOUT
* Device Flags: _BODEN_OFF _BOREN_OFF _CP_OFF _PWRTE_ON _WDT_OFF
* _LVP_OFF _MCLRE_OFF _INTRC_OSC_NOCLKOUT
*
* 言語 MikroC v2.1
*/
void main() { //メインプログラム
PORTA = 0b00000000; //PORTAの中身をきれいにする
PORTB = 0b00000000; //PORTBの中身をきれいにする
CMCON = 0b00000111; //PORTAをデジタル入出力使用に設定
TRISA = 0b00000001; //RA0を1:入力に、他を0:出力に設定
TRISB = 0b00000010; //PORTB RB1:入力、他7ヶは出力設定
Usart_Init(2400); //通信速度を2400 band rateに設定
do { //doとwhileの間を繰り返す
if(PORTA.F0 == 1) { //右前進
if(PORTA.F1 == 1) { //左前進
Usart_Write('A'); //A:左右前進を送信
} else {
if(PORTA.F3 == 1) { //左後進
Usart_Write('B'); //B:左後進、右前進を送信
} else {
Usart_Write('C'); //C:右前進を送信
}
}
} else { //右前進off
if(PORTA.F1 == 1) { //左前進
if(PORTA.F2 == 1) { //右後進
Usart_Write('D'); //D:左前進、右後進を送信
} else {
Usart_Write('E'); //E:左前進を送信
}
} else {
if(PORTA.F2 == 1) { //右後進
if(PORTA.F3 == 1) { //左後進
Usart_Write('F'); //F:左後進、右後進を送信
} else {
Usart_Write('G'); //G:右後進を送信
}
} else { //右後進off
if(PORTA.F3 == 1) { //左後進
Usart_Write('H'); //H:左後進を送信
} else {
Usart_Write('H'); //H:左後進を送信
} else {
Usart_Write(0); //ストップ(off)
}
}
}
}
}
}
Delay_ms(10); //10ミリ秒待つ
PORTB.F6 = ~PORTA.F0; //発光ダイオード点滅
} while(1); //doとwhileの間を繰り返す
} //メイン終わり
#comment
**ラジコンカー本体 [#n6351960]
|&attachref(213494308_179.jpg,zoom,150x150,button){新しい写真添付};|&attachref(213494308_225.jpg,zoom,150x150,button){新しい写真添付};|&attachref(213494308_171.jpg,zoom,150x150,button){新しい写真添付};|
操縦の方も満足です。応答も速いし、前へ後ろへ右へ左へ自由自在。
急速回転も出来ます。(無理な運転をするとキャタピラがはずれる
のが難点)無線も5〜6mは届きます。 06/11/03
/**
* 無線データ受信、車動作
*
* PIC 16F628A
* 発信器:内臓4MHz
* 電源:乾電池4本(6.0V)
* 右モータ: RB0, RB3 左モータ: RB4, RB5
* LED: RB6
*
* Device Flags: _BODEN_OFF _BOREN_OFF _CP_OFF _PWRTE_ON _WDT_OFF
* _LVP_OFF _MCLRE_OFF _INTRC_OSC_NOCLKOUT
*
* 言語 MikroC v2.1
*/
void main(){ //メインプログラム
unsigned short int data;
PORTB = 0b00000000; //PORTBの中身をきれいにする
TRISB = 0b00000010; //PORTB RB1:入力、他7ヶは出力設定
//稼働確認 1秒前進
PORTB = 0b00100001; //左前進、右前進
Delay_ms(1000); //1秒待つ
PORTB = 0b00000000; //ストップ(OFF)
Usart_Init(2400); //通信速度を2400 band rateに設定
do { //doとwhileの間を繰り返す
if(Usart_Data_Ready()){ //受信状態の確認
data = Usart_read(); //データの受信
switch(data){ //受信データの内容でA-Hの動作
case 'A':
PORTB = 0b00100001; //左前進、右前進
break;
case 'B':
PORTB = 0b00010001; //左後進、右前進
break;
case 'C':
PORTB = 0b00000001; //右前進
break;
case 'D':
PORTB = 0b00101000; //左前進、右後進
break;
case 'E':
PORTB = 0b00100000; //左前進
break;
case 'F':
PORTB = 0b00011000; //左後進、右後進
break;
case 'G':
PORTB = 0b00001000; //右後進
break;
case 'H':
PORTB = 0b00010000; //左後進
break;
default :
PORTB = 0b00000000; //ストップ(OFF)
break;
}
}
PORTB.F6 = ~PORTB.F0;
} while(1); //doとwhileの間を繰り返す
} //メインプログラム終わり
#comment