ROBOXformatでラジコン操作をするためのサンプルプログラム

Dependencies:   ROBOXformat beep_sound mbed

Committer:
natuga117
Date:
Sun Oct 09 00:32:08 2016 +0000
Revision:
0:d9129861a1f5
publish

Who changed what in which revision?

UserRevisionLine numberNew contents of line
natuga117 0:d9129861a1f5 1 #include "mbed.h"
natuga117 0:d9129861a1f5 2 #include "beep_sound.h"
natuga117 0:d9129861a1f5 3 #include "ROBOXformat.h"
natuga117 0:d9129861a1f5 4 ROBOXformat ir(A3,0.4);//SOCKET_E2に赤外線受信モジュールをセット
natuga117 0:d9129861a1f5 5 beep_sound sp(D10);//SOCKET_E3にスピーカーモジュールをセット
natuga117 0:d9129861a1f5 6 //スタートアップボード用のスイッチやLED類
natuga117 0:d9129861a1f5 7 DigitalIn sw1(D4);
natuga117 0:d9129861a1f5 8 DigitalIn sw2(D5);
natuga117 0:d9129861a1f5 9 DigitalOut led1 (A1);
natuga117 0:d9129861a1f5 10 DigitalOut led2 (A0);
natuga117 0:d9129861a1f5 11 //モーター用の設定(ギア比は114.7:1を想定)
natuga117 0:d9129861a1f5 12 PwmOut Ain1(PA_11);
natuga117 0:d9129861a1f5 13 PwmOut Ain2(PC_6);
natuga117 0:d9129861a1f5 14 PwmOut Bin1(PC_8);
natuga117 0:d9129861a1f5 15 PwmOut Bin2(PC_9);
natuga117 0:d9129861a1f5 16 int ir_data;//赤外線データ格納用の変数
natuga117 0:d9129861a1f5 17 void move(double mA,double mB);
natuga117 0:d9129861a1f5 18 void brake(void);
natuga117 0:d9129861a1f5 19 int main()
natuga117 0:d9129861a1f5 20 {
natuga117 0:d9129861a1f5 21 while(1) {//無限ループ
natuga117 0:d9129861a1f5 22 ir_data=ir.getData();//現在受信中の赤外線データを取得
natuga117 0:d9129861a1f5 23 /*受け取る赤外線データ
natuga117 0:d9129861a1f5 24 <方向キー(pad左側4つのボタン)>
natuga117 0:d9129861a1f5 25 上ボタン=1
natuga117 0:d9129861a1f5 26 右ボタン=2
natuga117 0:d9129861a1f5 27 下ボタン=4
natuga117 0:d9129861a1f5 28 左ボタン=8
natuga117 0:d9129861a1f5 29 <特殊キー(pad右側4つのボタン)>
natuga117 0:d9129861a1f5 30 Xボタン=16(上)
natuga117 0:d9129861a1f5 31 Aボタン=32(右)
natuga117 0:d9129861a1f5 32 Bボタン=64(下)
natuga117 0:d9129861a1f5 33 Yボタン=128(左)
natuga117 0:d9129861a1f5 34 この中で押すボタンの数を合計したのが受信しているボタンです
natuga117 0:d9129861a1f5 35 rev2(緑のコントローラー)だと2個まで、rev3(黒のコントローラー)だと全キーの同時入力まで対応しています。
natuga117 0:d9129861a1f5 36 例)上ボタンとAボタンの同時押し→1+32=33
natuga117 0:d9129861a1f5 37 */
natuga117 0:d9129861a1f5 38 if(ir_data==8) {
natuga117 0:d9129861a1f5 39 move(-1,1);
natuga117 0:d9129861a1f5 40 } else if(ir_data==2) {
natuga117 0:d9129861a1f5 41 move(1,-1);
natuga117 0:d9129861a1f5 42 } else if(ir_data==64) {
natuga117 0:d9129861a1f5 43 move(-1,-1);
natuga117 0:d9129861a1f5 44 } else if(ir_data==128) {
natuga117 0:d9129861a1f5 45 move(1,1);
natuga117 0:d9129861a1f5 46 } else if(ir_data==8+128) {
natuga117 0:d9129861a1f5 47 move(0.5,1);
natuga117 0:d9129861a1f5 48 } else if(ir_data==2+128) {
natuga117 0:d9129861a1f5 49 move(1,0.5);
natuga117 0:d9129861a1f5 50 } else if(ir_data==8+64) {
natuga117 0:d9129861a1f5 51 move(-0.5,-1);
natuga117 0:d9129861a1f5 52 } else if(ir_data==2+64) {
natuga117 0:d9129861a1f5 53 move(-1,-0.5);
natuga117 0:d9129861a1f5 54 } else {
natuga117 0:d9129861a1f5 55 move(0,0);
natuga117 0:d9129861a1f5 56 }
natuga117 0:d9129861a1f5 57 if(ir_data==32) {
natuga117 0:d9129861a1f5 58 sp.beep_wrong(1);//クラクション
natuga117 0:d9129861a1f5 59 wait(1);
natuga117 0:d9129861a1f5 60 } else if(ir_data==16) {
natuga117 0:d9129861a1f5 61 sp.beep_notif1(1);//発射音
natuga117 0:d9129861a1f5 62 ir.send_code(PA_15,255,true);//攻撃光線発射!(PA_15から)
natuga117 0:d9129861a1f5 63 wait(1);
natuga117 0:d9129861a1f5 64 }
natuga117 0:d9129861a1f5 65
natuga117 0:d9129861a1f5 66 }
natuga117 0:d9129861a1f5 67 }
natuga117 0:d9129861a1f5 68 void move(double mA,double mB)
natuga117 0:d9129861a1f5 69 {
natuga117 0:d9129861a1f5 70 if(mA<0) {
natuga117 0:d9129861a1f5 71 Ain2=-mA;
natuga117 0:d9129861a1f5 72 Ain1=0;
natuga117 0:d9129861a1f5 73 } else {
natuga117 0:d9129861a1f5 74 Ain2=0;
natuga117 0:d9129861a1f5 75 Ain1=mA;
natuga117 0:d9129861a1f5 76 }
natuga117 0:d9129861a1f5 77 if(mB<0) {
natuga117 0:d9129861a1f5 78 Bin2=-mB;
natuga117 0:d9129861a1f5 79 Bin1=0;
natuga117 0:d9129861a1f5 80 } else {
natuga117 0:d9129861a1f5 81 Bin2=0;
natuga117 0:d9129861a1f5 82 Bin1=mB;
natuga117 0:d9129861a1f5 83 }
natuga117 0:d9129861a1f5 84 }
natuga117 0:d9129861a1f5 85 void brake(void)
natuga117 0:d9129861a1f5 86 {
natuga117 0:d9129861a1f5 87 Ain1=1;
natuga117 0:d9129861a1f5 88 Ain2=1;
natuga117 0:d9129861a1f5 89 Bin1=1;
natuga117 0:d9129861a1f5 90 Bin2=1;
natuga117 0:d9129861a1f5 91 }