受け取りです.質問・アドバイスがあればどうぞ.
Dependencies: MultiSerial mbed
main.cpp@1:b43b0cbff722, 2014-06-28 (annotated)
- 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?
User | Revision | Line number | New 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 | } |