manual control

Dependencies:   mbed PS3__

main.cpp

Committer:
shina
Date:
2019-12-25
Revision:
0:52c9292660e4

File content as of revision 0:52c9292660e4:

//交ロボ nucleo プログラム  茨城D

//設定
#include "mbed.h"
#include "PS3.h"
I2C i2c(D14,D15);
Serial pc(USBTX,USBRX);
PS3 ps3(D8,D2);
DigitalOut stop(D9);
DigitalOut green(D7);
DigitalOut yellow(D6);
DigitalOut red(D5);

void initialization();
void emergency();
void get_data();
void change_data();
void send_data(char address,char data);

char data_right=0x00;
char data_left=0x00;
int Ry=0;
int left1=0;
int right1=0;
int start=0;
int old_start=0;
bool flag=1;

int main(){
    green=1;
    stop=0;
    initialization();
    while(true){
        get_data();
        emergency();
        change_data();
        send_data(0x12,data_right);
        send_data(0x14,data_left);
    }
}

void initialization(){
    red=0;
    data_right=0x00;
    data_left=0x00;
    send_data(0x12,data_right);
    send_data(0x14,data_left);
}

void emergency(){
    if(old_start!=start){
        old_start=start;
        if(start==1){
            if(flag==1){
                stop=1;
                flag=0;
                red=1;
            }else if(flag==0){
                stop=0;
                flag=1;
                red=0;
            }
        }
    }
}

void get_data(){
    Ry=ps3.getLeftJoystickYaxis();
    left1=ps3.getButtonState(L1);
    right1=ps3.getButtonState(R1);
    start=ps3.getSTARTState();
}

void change_data(){
    if(Ry>32&&right1==0&&left1==0){
        red=1;
        data_right=0xff;
        data_left=0xaf;
    }else if(Ry<-32&&right1==0&&left1==0){
        red=1;
        data_right=0xaf;
        data_left=0xff;
    }else if(-32<=Ry<=32&&right1==1&&left1==0){
        red=1;
        data_right=0xff;
        data_left=0xff;
    }else if(-32<=Ry<=32&&right1==0&&left1==1){
        red=1;
        data_right=0xaf;
        data_left=0xaf;
    }else{
        red=0;
        data_right=0x00;
        data_left=0x00;
    }
    
}

void send_data(char address,char data){
    i2c.start();
    yellow=i2c.write(address);
    i2c.write(data);
    i2c.stop();
    wait(0.003);
    
}