NHK2020_master_program

Dependencies:   mbed QEI

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?

UserRevisionLine numberNew 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 }