Kouki Suzuki
/
NHK2020_master
NHK2020_master_program
main.cpp
- Committer:
- skouki
- Date:
- 2020-10-27
- Revision:
- 1:496ab5127b06
- Parent:
- 0:e06e8c048454
- Child:
- 2:e2ec64c77b6e
File content as of revision 1:496ab5127b06:
#include "mbed.h" #include "pin_config.h" #include "QEI.h" #include "FEP.h" Serial pc(USBTX,USBRX,115200); RawSerial serial(PC_10,PC_11,9600); AnalogIn finger[]={ AnalogIn(A_IN_1), AnalogIn(A_IN_2), AnalogIn(A_IN_3), AnalogIn(A_IN_4), AnalogIn(A_IN_5) }; AnalogIn wrist_bent[]={ AnalogIn(A_IN_6), AnalogIn(A_IN_7) }; AnalogIn wrist_twist[]={ AnalogIn(A_IN_8) }; QEI elbow_bent[]={ QEI(QEI_1_A,QEI_1_B, NC, 360,QEI::X4_ENCODING) }; QEI shoulder_rotation[]={ QEI(QEI_2_A,QEI_2_B, NC, 360,QEI::X4_ENCODING), QEI(QEI_3_A,QEI_3_B, NC, 360,QEI::X4_ENCODING) }; FEP fep(PC_12,PD_2,003); DigitalIn b(USER_BUTTON); typedef struct { float close_val; float open_val; float now_val; uint8_t percentage; } status_t; class status_provider{ public: status_t status; void percentage_calculation(); }; void status_provider::percentage_calculation(){ status.percentage = (1 - ((status.now_val - status.close_val) / (status.open_val - status.close_val))) * 255; //if(fabsf(status.open_val - status.close_val) >= 10.0f)return; if(status.open_val <= status.now_val) status.percentage = 0; if(status.close_val >=status.now_val) status.percentage = 255; } status_provider status_[11]; void update_status(int mode){ int i; float val[11]; for(i=0;i<5;i++)val[i] = finger[i].read(); for(i=5;i<7;i++)val[i] = wrist_bent[i-5].read(); for(i=7;i<8;i++)val[i] = wrist_twist[i-7].read(); for(i=8;i<9;i++)val[i] = (float)(elbow_bent[i-8].getPulses()); for(i=9;i<11;i++)val[i] = (float)(shoulder_rotation[i-9].getPulses()); if(mode==1){ for(i=0;i<11;i++)status_[i].status.close_val = val[i]; } if(mode==2){ for(i=0;i<11;i++)status_[i].status.open_val = val[i]; } if(mode==3){ for(i=0;i<11;i++)status_[i].status.now_val = val[i]; } } int main() { uint8_t *data[11]; int i; for(i=0;i<11;i++)data[i] = &status_[i].status.percentage; update_status(1); while(bool first_loop=1){ bool b_ = b; update_status(2); if(!b_){ while(bool second_loop=1){ update_status(3); for(i=0;i<11;i++){ status_[i].percentage_calculation(); /* if(b.read()==0){ *data[8]=0; } else{ *data[8]=255; } */ pc.printf("[%2d]:%3d,",i,*data[i]); serial.printf("%d",*data[i]); } pc.printf("\n\r"); serial.printf("\r\n"); fep.sendData(data,11); } } } return 0; }