Kouki Suzuki
/
NHK2020_master
NHK2020_master_program
main.cpp@0:e06e8c048454, 2020-10-19 (annotated)
- Committer:
- skouki
- Date:
- Mon Oct 19 12:43:59 2020 +0000
- Revision:
- 0:e06e8c048454
- Child:
- 1:496ab5127b06
2020/10/19
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
skouki | 0:e06e8c048454 | 1 | #include "mbed.h" |
skouki | 0:e06e8c048454 | 2 | #include "pin_config.h" |
skouki | 0:e06e8c048454 | 3 | #include "QEI.h" |
skouki | 0:e06e8c048454 | 4 | |
skouki | 0:e06e8c048454 | 5 | Serial pc(USBTX,USBRX,115200); |
skouki | 0:e06e8c048454 | 6 | //Serial serial(PC_10,PC_11,9600); |
skouki | 0:e06e8c048454 | 7 | |
skouki | 0:e06e8c048454 | 8 | AnalogIn finger[]={ |
skouki | 0:e06e8c048454 | 9 | AnalogIn(A_IN_7), |
skouki | 0:e06e8c048454 | 10 | AnalogIn(A_IN_6), |
skouki | 0:e06e8c048454 | 11 | AnalogIn(A_IN_5), |
skouki | 0:e06e8c048454 | 12 | AnalogIn(A_IN_3), |
skouki | 0:e06e8c048454 | 13 | AnalogIn(A_IN_2) |
skouki | 0:e06e8c048454 | 14 | }; |
skouki | 0:e06e8c048454 | 15 | |
skouki | 0:e06e8c048454 | 16 | /* |
skouki | 0:e06e8c048454 | 17 | AnalogIn wrist_bent[]={ |
skouki | 0:e06e8c048454 | 18 | AnalogIn(A_IN_), |
skouki | 0:e06e8c048454 | 19 | AnalogIn(A_IN_) |
skouki | 0:e06e8c048454 | 20 | }; |
skouki | 0:e06e8c048454 | 21 | |
skouki | 0:e06e8c048454 | 22 | AnalogIn wrist_twist[]={ |
skouki | 0:e06e8c048454 | 23 | AnalogIn(A_IN_) |
skouki | 0:e06e8c048454 | 24 | }; |
skouki | 0:e06e8c048454 | 25 | |
skouki | 0:e06e8c048454 | 26 | AnalogIn elbow_bent[]={ |
skouki | 0:e06e8c048454 | 27 | AnalogIn(A_IN_) |
skouki | 0:e06e8c048454 | 28 | }; |
skouki | 0:e06e8c048454 | 29 | |
skouki | 0:e06e8c048454 | 30 | QEI shoulder_rotation[]={ |
skouki | 0:e06e8c048454 | 31 | QEI(QEI_1_A,QEI_1_B, NC, 360,QEI::X4_ENCODING), |
skouki | 0:e06e8c048454 | 32 | QEI(QEI_2_A,QEI_2_B, NC, 360,QEI::X4_ENCODING) |
skouki | 0:e06e8c048454 | 33 | } |
skouki | 0:e06e8c048454 | 34 | */ |
skouki | 0:e06e8c048454 | 35 | DigitalIn b(USER_BUTTON); |
skouki | 0:e06e8c048454 | 36 | |
skouki | 0:e06e8c048454 | 37 | typedef struct { |
skouki | 0:e06e8c048454 | 38 | float close_val; |
skouki | 0:e06e8c048454 | 39 | float open_val; |
skouki | 0:e06e8c048454 | 40 | float now_val; |
skouki | 0:e06e8c048454 | 41 | uint8_t percentage; |
skouki | 0:e06e8c048454 | 42 | } status_t; |
skouki | 0:e06e8c048454 | 43 | |
skouki | 0:e06e8c048454 | 44 | class status_provider{ |
skouki | 0:e06e8c048454 | 45 | public: |
skouki | 0:e06e8c048454 | 46 | status_t status; |
skouki | 0:e06e8c048454 | 47 | void percentage_calculation(); |
skouki | 0:e06e8c048454 | 48 | }; |
skouki | 0:e06e8c048454 | 49 | |
skouki | 0:e06e8c048454 | 50 | void status_provider::percentage_calculation(){ |
skouki | 0:e06e8c048454 | 51 | status.percentage = (1 - (status.now_val - status.close_val) / (status.open_val - status.close_val)) * 255; |
skouki | 0:e06e8c048454 | 52 | if(status.open_val <= status.now_val) status.percentage = 0; |
skouki | 0:e06e8c048454 | 53 | if(status.close_val >= status.now_val) status.percentage = 255; |
skouki | 0:e06e8c048454 | 54 | } |
skouki | 0:e06e8c048454 | 55 | |
skouki | 0:e06e8c048454 | 56 | |
skouki | 0:e06e8c048454 | 57 | status_provider status_[11]; |
skouki | 0:e06e8c048454 | 58 | |
skouki | 0:e06e8c048454 | 59 | void get_all_data(int mode){ |
skouki | 0:e06e8c048454 | 60 | int i; |
skouki | 0:e06e8c048454 | 61 | |
skouki | 0:e06e8c048454 | 62 | if(mode==1){ |
skouki | 0:e06e8c048454 | 63 | for(i=0;i<5;i++)status_[i].status.close_val = finger[i].read();/* |
skouki | 0:e06e8c048454 | 64 | for(i=5;i<7;i++)status_[i].status.close_val = wrist_bent[i-5].read(); |
skouki | 0:e06e8c048454 | 65 | for(i=7;i<8;i++)status_[i].status.close_val = wrist_twist[i-7].read(); |
skouki | 0:e06e8c048454 | 66 | for(i=8;i<9;i++)status_[i].status.close_val = elbow_bent[i-8].read(); |
skouki | 0:e06e8c048454 | 67 | for(i=9;i<11;i++)status_[i].status.close_val = shoulder_rotation[i-9].getPulses();*/ |
skouki | 0:e06e8c048454 | 68 | } |
skouki | 0:e06e8c048454 | 69 | if(mode==2){ |
skouki | 0:e06e8c048454 | 70 | for(i=0;i<5;i++)status_[i].status.open_val = finger[i].read();/* |
skouki | 0:e06e8c048454 | 71 | for(i=5;i<7;i++)status_[i].status.open_val = wrist_bent[i-5].read(); |
skouki | 0:e06e8c048454 | 72 | for(i=7;i<8;i++)status_[i].status.open_val = wrist_twist[i-7].read(); |
skouki | 0:e06e8c048454 | 73 | for(i=8;i<9;i++)status_[i].status.open_val = elbow_bent[i-8].read(); |
skouki | 0:e06e8c048454 | 74 | for(i=9;i<11;i++)status_[i].status.open_val = shoulder_rotation[i-9].getPulses();*/ |
skouki | 0:e06e8c048454 | 75 | } |
skouki | 0:e06e8c048454 | 76 | if(mode==3){ |
skouki | 0:e06e8c048454 | 77 | for(i=0;i<5;i++)status_[i].status.now_val = finger[i].read();/* |
skouki | 0:e06e8c048454 | 78 | for(i=5;i<7;i++)status_[i].status.now_val = wrist_bent[i-5].read(); |
skouki | 0:e06e8c048454 | 79 | for(i=7;i<8;i++)status_[i].status.now_val = wrist_twist[i-7].read(); |
skouki | 0:e06e8c048454 | 80 | for(i=8;i<9;i++)status_[i].status.now_val = elbow_bent[i-8].read(); |
skouki | 0:e06e8c048454 | 81 | for(i=9;i<11;i++)status_[i].status.now_val = shoulder_rotation[i-9].getPulses();*/ |
skouki | 0:e06e8c048454 | 82 | } |
skouki | 0:e06e8c048454 | 83 | } |
skouki | 0:e06e8c048454 | 84 | int main() |
skouki | 0:e06e8c048454 | 85 | { |
skouki | 0:e06e8c048454 | 86 | uint8_t *data[11]; |
skouki | 0:e06e8c048454 | 87 | int i; |
skouki | 0:e06e8c048454 | 88 | |
skouki | 0:e06e8c048454 | 89 | |
skouki | 0:e06e8c048454 | 90 | for(i=0;i<11;i++)data[i] = &status_[i].status.percentage; |
skouki | 0:e06e8c048454 | 91 | get_all_data(1); |
skouki | 0:e06e8c048454 | 92 | while(bool first_loop=1){ |
skouki | 0:e06e8c048454 | 93 | bool b_ = b; |
skouki | 0:e06e8c048454 | 94 | get_all_data(2); |
skouki | 0:e06e8c048454 | 95 | if(!b_){ |
skouki | 0:e06e8c048454 | 96 | while(bool second_loop=1){ |
skouki | 0:e06e8c048454 | 97 | get_all_data(3); |
skouki | 0:e06e8c048454 | 98 | for(i=0;i<11;i++){ |
skouki | 0:e06e8c048454 | 99 | status_[i].percentage_calculation(); |
skouki | 0:e06e8c048454 | 100 | pc.printf("[%d]:%d,",i,*data[i]); |
skouki | 0:e06e8c048454 | 101 | } |
skouki | 0:e06e8c048454 | 102 | pc.printf("\n\r"); |
skouki | 0:e06e8c048454 | 103 | |
skouki | 0:e06e8c048454 | 104 | } |
skouki | 0:e06e8c048454 | 105 | |
skouki | 0:e06e8c048454 | 106 | } |
skouki | 0:e06e8c048454 | 107 | } |
skouki | 0:e06e8c048454 | 108 | return 0; |
skouki | 0:e06e8c048454 | 109 | } |