• 追加された行はこの色です。
  • 削除された行はこの色です。
閲覧総計:&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