4/2にちゃんと動いたやつ

Dependencies:   mbed SBDBT arrc_mbed

main.cpp

Committer:
guesta
Date:
2022-03-11
Revision:
8:e76d6c16d7af
Parent:
7:59be95fceafa
Child:
10:4fe47396eb5a

File content as of revision 8:e76d6c16d7af:

#include "mbed.h"
#include "scrp_slave.hpp"
#include "sbdbt.hpp"
#include "mp3.hpp"

int main(){
//---------------初期設定---------------
    //scrp_slave
    ScrpSlave scrp(PC_12,PD_2,PH_1,0x0807f800);
    
    //sbdbt
    sbdbt sb(PA_0,PA_1);
        
    //scrp_slaveのid設定
    const int wheel_num = 1;
    const int BeanbagGet_num = 2;
    const int BeanbagShot_num = 3;
    const int TakoGetPut_num = 4;
    const int remort_stop_num = 5;
    const int send_all = 255;
    
    //コマンド番号設定
    //足回り用
    const int x_component_cmd = 1;
    const int y_component_cmd = 2;
    const int l2_cmd = 3;
    const int r2_cmd = 4;
    const int l1_cmd = 5;
    
    //ビーンバッグ回収用
    const int move = 1;
    
    //ビーンバッグ発射用
    const int shot = 2;
    
    //農作物回収・設置用
    const int up = 1;
    const int down = 2;
    const int limit1 = 3;
    const int limit2 = 4;
    
    //テープLED用
    
    //遠隔非常停止受信用
    
    //全体送信用
    const int select = 50;//手動・自動切り替え
    const int stop_all = 51;//全プログラム停止
    
    //変数
    bool auto_mode = false;
    bool auto_start;
    int x_component;
    int y_component;
    int l2_num;
    int r2_num;
    
    //mp3
    Playmp3 voice(PA_9,PA_10);
    int volume = 200;//音量
    int track;
    voice.set_volume(200);
    voice.quiet_mode(false);
    
    DigitalIn sw1(PB_4);
    DigitalIn sw2(PB_5);
    sw1.mode(PullUp);
    sw2.mode(PullUp);
    
    //count
    int count_up;
    int count_down;
    int count_shot;
    int count_auto;
//-------------------------------------

    while(true){
        printf("%d\n",sw1.read());
        
        sb.button_state();
        x_component = sb.rsx();
        y_component = sb.rsy();
        l2_num = sb.l2An();
        r2_num = sb.r2An();
        if(sb.select() == 1){
            count_auto++;
                if(count_auto == 1){
                    auto_mode =! auto_mode;
                }
            }else{
                count_auto = 0;
        }
        
        //足回り
        scrp.send1(wheel_num,x_component_cmd,x_component);
        wait_ms(2);
        scrp.send1(wheel_num,y_component_cmd,y_component);
        wait_ms(2);
        scrp.send1(wheel_num,l2_cmd,l2_num);
        wait_ms(2);
        scrp.send1(wheel_num,r2_cmd,r2_num);
        wait_ms(2);
        scrp.send1(wheel_num,l1_cmd,sb.l1());
        wait_ms(2);
        
        //ビーンバッグ回収
        scrp.send1(BeanbagGet_num,move,sb.square());
        wait_ms(2);
        
        //ビーンバッグ発射
        if(auto_mode == true){
            scrp.send1(BeanbagShot_num,shot,sb.square());
            wait_ms(2);
            if(sb.square() == 1){
                count_shot++;
                if(count_shot == 1){
                    voice.set_number_of_tracks(5);
                }
            }else{
                count_shot = 0;
            }
        }
        
        //農作物回収・設置
            if(sb.up() == 1){
                count_up++;
                if(count_up == 1){
                    voice.set_number_of_tracks(1);
                }
            }else{
                count_up = 0;
            }
            if(sb.down() == 1){
                count_down++;
                if(count_down == 1){
                    voice.set_number_of_tracks(2);
                }
            }else{
                count_down = 0;
            }
        scrp.send1(TakoGetPut_num,up,sb.up());
        wait_ms(2);
        scrp.send1(TakoGetPut_num,down,sb.down());
        wait_ms(2);
        if(sw1.read() == 0){
            scrp.send1(TakoGetPut_num,limit1,1);
        }else{
            scrp.send1(TakoGetPut_num,limit1,0); 
        }
        wait_ms(2);
        if(sw2.read() == 0){
            scrp.send1(TakoGetPut_num,limit2,1);
        }else{
            scrp.send1(TakoGetPut_num,limit2,0); 
        }
        wait_ms(2);
        
        //全体送信
        scrp.send1(send_all,select,auto_mode);//自動・手動モード切り替え
        wait_ms(2);
    }
}