HOSOKIkikou class for 2022_NHK_B

Dependents:   2022_NHK_B_UK 2022_NHK_B_sub2

HOSOKIkikou.cpp

Committer:
ikarashikota
Date:
23 months ago
Revision:
8:d73c83c92932
Parent:
6:c4428d7f6078

File content as of revision 8:d73c83c92932:



#include "HOSOKIkikou.h"



HOSOKIkikou::HOSOKIkikou(ikarashiMDC *ik1, ikarashiMDC *ik2, ikarashiMDC *ik3, ikarashiMDC *ik4, uint8_t *b1, uint8_t *b2, uint8_t *b3, uint8_t *b4, int *env1, int *env2) : pc(USBTX,USBRX,115200){
    init(ik1, ik2, ik3, ik4, b1, b2, b3, b4, env1, env2);
}

void HOSOKIkikou::init(ikarashiMDC *ik1, ikarashiMDC *ik2, ikarashiMDC *ik3, ikarashiMDC *ik4, uint8_t *b1, uint8_t *b2, uint8_t *b3, uint8_t *b4, int *env1, int *env2){
    ik[0] = ik1; //射出右
    ik[1] = ik2; //射出左
    ik[2] = ik3; //将校
    ik[3] = ik4; //装填
    button[0] = b1; //射出
    button[1] = b2; //上
    button[2] = b3; //下
    button[3] = b4; //装填
    encoder[0] = env1; //将校
    encoder[1] = env2; //装填
    for(int i=0; i<4; i++){
         mspeed[i] = 0;
         if(i < 2) buff[i] = 0;
    }
    injecterFlag = false;
}

void HOSOKIkikou::runAll(float speedIRight, float speedILeft, float speedLoad, float speedLift)
{
    runInjection(speedIRight, speedILeft);
    runLoad(speedLoad);
    runLift(speedLift);
    for(int i=0; i<4; i++){
         pc.printf("%f  ",mspeed[i]);
    }
    pc.printf("\r\n");
}

void HOSOKIkikou::stopAll(){
    //init(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
    for(int i=0; i<4; i++){
        button[i] = NULL;
        mspeed[i] = 0;
        if(i < 3){
            encoder[i] = NULL;
        }
    }
    injecterFlag = false;
}

void HOSOKIkikou::runInjection(float speedRight, float speedLeft)
{
    ik[0]->setSpeed(mspeed[0]);
    ik[1]->setSpeed(mspeed[1]);
    if(injecterFlag){
        mspeed[0] = speedRight;
        mspeed[1] = speedLeft;
    }else{
        mspeed[0] = 0;
        mspeed[1] = 0;
    }
    
    buff[0] = *button[0] - buff[1];
    buff[1] = *button[0];
    
    if(buff[0] <= 0 || button[0] == NULL){
        return;
    }else{
        injecterFlag = !injecterFlag;
    }
}

void HOSOKIkikou::runLoad(float speed)
{
    
    ik[3]->setSpeed(mspeed[2]);
    if(*button[1] <= 0 && *button[2] <= 0 || button[1] == NULL || button[2] == NULL){
        mspeed[2] = 0;
        return;   
    }else if(*button[1] >= 1){
        mspeed[2] = speed;
    }else if(*button[2] >= 1){
        mspeed[2] = -speed;
    }else{
        mspeed[2] = 0;   
    }
}

void HOSOKIkikou::runLift(float speed)
{
    ik[2]->setSpeed(mspeed[3]);
    if(*button[3] <= 0){
        mspeed[3] = 0;
        return;   
    }else if(*button[3] >= 1 || button[3] == NULL){
        mspeed[3] = speed;
    }else{
        mspeed[3] = 0;   
    }
}

void HOSOKIkikou::checkAllMotorSpeed(float* data_buff){
    data_buff = mspeed;
}