2017_CatchRobo_f103rb

Dependencies:  

Fork of 2017_CatchRobo_f103rb by taiki abe

2017_CatchRobo_f103rb.cpp

Committer:
Abe_t
Date:
2017-08-12
Revision:
2:c0303b37bc3a
Parent:
1:a9850521074c
Child:
7:06a366a57be8

File content as of revision 2:c0303b37bc3a:

//送信側マイコン nucleo_f103rb

#include "mbed.h"
#include "servo_motor.h"
#include "ps3_controller.h"
#include "dc_motor_1.h"
#include "rotary_encoder.h"
#include "CANnucleo.h"
#include "servo_motor_270.h"


/***初期化関数**************************************/

Serial      pc(USBTX,USBRX);
ps3_cont    ps3(PC_10,PC_11);
Timer       system_cycle;
CAN*        can;
CANMessage   txMsg;


//センサー類
rotary_encoder enco1(PC_0,PC_3,NC,500,rotary_encoder::X4_ENCODING);
rotary_encoder enco2(PA_13,PA_14,NC,500,rotary_encoder::X4_ENCODING);
rotary_encoder enco3(PD_2,PC_15,NC,500,rotary_encoder::X4_ENCODING);

//アクチュエータ類
dc_motor_1 motor1(A3,A2,1);     //tiemr_3_3
dc_motor_1 motor2(D4,A4,1);     //timer_3_2
dc_motor_1 motor3(D5,A0,1);     //timer_3_1

ServoMotor_270 servo1(PB_13);       //timer_1_1N

DigitalOut LED[3]={D12,D11,D10};
DigitalOut button[2]={D9,D8};

DigitalOut buzzer(PC_8);

/********グローバル変数******************************/

const unsigned int TX_ID = 0x101;
uint8_t     counter = 0;

/**************************************************/

void print_Msg(CANMessage &msg){
    pc.printf("sent_date =");
    for(int i=0 ; i<msg.len ; i++){
        pc.printf("0x%.2X\t",msg.data[i]);
    }
}

int main()
{
    pc.baud(9600);
    can = new CAN(PA_11,PA_12);
    can -> frequency(1000000);
    system_cycle.start();
    pc.printf("program_start!!");
    
    while(1){
        while( (system_cycle.read_ms() >= 30) ){

            txMsg.clear();
            txMsg.id = TX_ID;
            txMsg << counter;
            
            if(can->write(txMsg)){
                print_Msg(txMsg);
            }
            else{
                pc.printf("sent_error/r/n");
            }
            
            if( ps3.getbutton(square)==1){
                motor1.drive(20.0);
                LED[0].write(1);
            }
            else if( ps3.getbutton(triangle)==1){
                motor2.drive(20.0);
                LED[1].write(1);
            }
            else if( ps3.getbutton(circle)==1){
                motor3.drive(20.0);
                LED[2].write(1);
            }
            else if( ps3.getbutton(left)==1){
                servo1.weak_condition();
            }
            else if( ps3.getbutton(right)==1){
                servo1.rot(270.0);
            }
            else if( ps3.getbutton(L1)==1){
                buzzer.write(1);
            }
            else if(ps3.getbutton(L2)==1){
                counter = 1;    
            }
            else if(ps3.getbutton(R2)==1){
                counter = 2;    
            }
            else if(ps3.getbutton(up)==1){
                counter = 3;
            }
            else if(ps3.getbutton(under)==1){
                counter = 4;
            }
            else if(button[0].read() == 1){
                LED[0].write(1);
            }
            else if(button[1].read() == 1){
                LED[1].write(1);
            }
            
            else{
                counter = 0;
                LED[1].write(0);
                LED[2].write(0);
                LED[0].write(0);
                buzzer.write(0);
                servo1.rot(135.0);
                motor1.drive(0.0);
                motor2.drive(0.0);
                motor3.drive(0.0);
            }
        
            pc.printf("%f\t %f\t %f\t %d\t  \r\n",enco1.getDeg(),enco2.getDeg(),enco3.getDeg(),buzzer.read());
            system_cycle.reset(); 
        }//(while system_cycle )
    if( ps3.getbutton(cross)==1){break;}
    }//(while)
}