受け取りです.質問・アドバイスがあればどうぞ.

Dependencies:   MultiSerial mbed

Committer:
lilac0112_1
Date:
Sat Jun 28 09:57:50 2014 +0000
Revision:
1:b43b0cbff722
Parent:
0:f38700ce12ea
Child:
3:d4eff9dace7d
???????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lilac0112_1 0:f38700ce12ea 1 #include "mbed.h"
lilac0112_1 0:f38700ce12ea 2 #include "main.h"//ピン位置,main関数までの初期動作の詳細,変数,関数等
lilac0112_1 0:f38700ce12ea 3
lilac0112_1 0:f38700ce12ea 4 extern bool GetBit(void);
lilac0112_1 0:f38700ce12ea 5 extern DigitalOut LED[4];
lilac0112_1 0:f38700ce12ea 6 //上体回転関連
lilac0112_1 0:f38700ce12ea 7 extern DigitalOut Turn[2];
lilac0112_1 0:f38700ce12ea 8 extern DigitalIn TurnSW;
lilac0112_1 0:f38700ce12ea 9 extern PwmOut TurnSpeed;
lilac0112_1 0:f38700ce12ea 10 //パワーウィンドウ(腕)関連
lilac0112_1 0:f38700ce12ea 11 extern bool Pushed[2];
lilac0112_1 0:f38700ce12ea 12 extern DigitalOut Hand[2][2];
lilac0112_1 0:f38700ce12ea 13 extern InterruptIn HandSW[3];
lilac0112_1 0:f38700ce12ea 14 extern Timeout Touch;
lilac0112_1 0:f38700ce12ea 15
lilac0112_1 0:f38700ce12ea 16 //通信関連
lilac0112_1 0:f38700ce12ea 17 extern Serial pc;
lilac0112_1 0:f38700ce12ea 18 extern Serial Xbee;//p13, p14
lilac0112_1 0:f38700ce12ea 19 extern volatile uint8_t INdata[DATA_NUM], EXdata[DATA_NUM];
lilac0112_1 0:f38700ce12ea 20 extern void TX(void);
lilac0112_1 0:f38700ce12ea 21 extern void RX(void);
lilac0112_1 0:f38700ce12ea 22 int main(void) {
lilac0112_1 0:f38700ce12ea 23 //簡単そうなコードの説明は省く
lilac0112_1 1:b43b0cbff722 24 BusIn mt(p6, p7, p8, p9, p10, p11);//調整用スイッチ
lilac0112_1 0:f38700ce12ea 25 mt.mode(PullUp);
lilac0112_1 0:f38700ce12ea 26 //上体回転関連
lilac0112_1 0:f38700ce12ea 27 TurnSpeed = TurnRev;//上体回転のPWM
lilac0112_1 0:f38700ce12ea 28 TurnSW.mode(PullUp);
lilac0112_1 0:f38700ce12ea 29 //パワーウィンドウ(腕)関連
lilac0112_1 0:f38700ce12ea 30 HandSW[R].mode(PullUp);
lilac0112_1 0:f38700ce12ea 31 HandSW[L].mode(PullUp);
lilac0112_1 0:f38700ce12ea 32 HandSW[C].mode(PullUp);
lilac0112_1 0:f38700ce12ea 33 HandSW[R].rise(RightCatch);//立ち上がり
lilac0112_1 0:f38700ce12ea 34 HandSW[L].rise(LeftCatch);//立ち上がり
lilac0112_1 0:f38700ce12ea 35 HandSW[C].rise(CenterCatch);//立ち上がり
lilac0112_1 0:f38700ce12ea 36 //通信関連
lilac0112_1 0:f38700ce12ea 37 Xbee.attach(&RX, Serial::RxIrq);
lilac0112_1 0:f38700ce12ea 38 Xbee.attach(&TX, Serial::TxIrq);
lilac0112_1 0:f38700ce12ea 39 Xbee.putc(1);//送信開始
lilac0112_1 0:f38700ce12ea 40 i = Xbee.getc();//受信開始
lilac0112_1 0:f38700ce12ea 41 while(1) {
lilac0112_1 0:f38700ce12ea 42 //腕のプログラム
lilac0112_1 0:f38700ce12ea 43 INdata[1]= ~mt;//調整用スイッチ
lilac0112_1 0:f38700ce12ea 44 StopLeaving();//停止
lilac0112_1 0:f38700ce12ea 45 if((GetBit(INdata[1], 1)+GetBit(INdata[1], 2))==1){//同時押し防止
lilac0112_1 0:f38700ce12ea 46 if(GetBit(INdata[1], 1)==true) CenterCatch();//中央のリミットスイッチがうまく動作しなかった場合の保険
lilac0112_1 0:f38700ce12ea 47 if(GetBit(INdata[1], 2)==true){//腕を広げる動作はマニュアル操作
lilac0112_1 0:f38700ce12ea 48 StopCatching();//停止
lilac0112_1 0:f38700ce12ea 49 Touch.detach();//ワンショットタイマー停止
lilac0112_1 0:f38700ce12ea 50 Hand[R][Open] = Hand[L][Open] = GetBit(INdata[1], 2);
lilac0112_1 0:f38700ce12ea 51 }
lilac0112_1 0:f38700ce12ea 52 }
lilac0112_1 0:f38700ce12ea 53 //上体回転
lilac0112_1 0:f38700ce12ea 54 INdata[3] = ~mt;//調整用スイッチ
lilac0112_1 0:f38700ce12ea 55 Turn[CW] = Turn[CCW] = OFF;//停止
lilac0112_1 0:f38700ce12ea 56 if((GetBit(INdata[3], 1)+GetBit(INdata[3], 2))==1){//同時押し防止
lilac0112_1 0:f38700ce12ea 57 if(GetBit(INdata[3], 1)&&(TurnSW)){
lilac0112_1 0:f38700ce12ea 58 Turn[CCW] = ON;//押されていて,かつリミットスイッチが押されていなかったら左回転
lilac0112_1 0:f38700ce12ea 59 }
lilac0112_1 0:f38700ce12ea 60 if(GetBit(INdata[3], 2)){
lilac0112_1 0:f38700ce12ea 61 Turn[CW] = ON;//押されたら右回転
lilac0112_1 0:f38700ce12ea 62 }
lilac0112_1 0:f38700ce12ea 63 }
lilac0112_1 0:f38700ce12ea 64 }
lilac0112_1 0:f38700ce12ea 65 }