Joshua Brown
/
TactileMouse
First revision of tactile mouse code
tactile_display.cpp@0:f254a3cfe0f6, 2019-04-08 (annotated)
- Committer:
- JPB515
- Date:
- Mon Apr 08 16:57:36 2019 +0000
- Revision:
- 0:f254a3cfe0f6
First publish of tactile mouse code;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JPB515 | 0:f254a3cfe0f6 | 1 | #include "mbed.h" |
JPB515 | 0:f254a3cfe0f6 | 2 | #include "tactile_display.hpp" |
JPB515 | 0:f254a3cfe0f6 | 3 | #include "tactile_mouse.hpp" |
JPB515 | 0:f254a3cfe0f6 | 4 | |
JPB515 | 0:f254a3cfe0f6 | 5 | tactileDisplay::tactileDisplay(){} |
JPB515 | 0:f254a3cfe0f6 | 6 | |
JPB515 | 0:f254a3cfe0f6 | 7 | tactileDisplay::tactileDisplay(int x, int y){ |
JPB515 | 0:f254a3cfe0f6 | 8 | xSize = x; |
JPB515 | 0:f254a3cfe0f6 | 9 | ySize = y; |
JPB515 | 0:f254a3cfe0f6 | 10 | size = x * y; |
JPB515 | 0:f254a3cfe0f6 | 11 | maxActive = size; //By default, all motors can be active at once; |
JPB515 | 0:f254a3cfe0f6 | 12 | |
JPB515 | 0:f254a3cfe0f6 | 13 | for(int j=0 ; j<ySize ; ++j){ |
JPB515 | 0:f254a3cfe0f6 | 14 | for(int i=0 ; i<xSize ; ++i){ |
JPB515 | 0:f254a3cfe0f6 | 15 | taxel* tempTaxel = new taxel(i,j); |
JPB515 | 0:f254a3cfe0f6 | 16 | taxels.push_back(tempTaxel); |
JPB515 | 0:f254a3cfe0f6 | 17 | } |
JPB515 | 0:f254a3cfe0f6 | 18 | } |
JPB515 | 0:f254a3cfe0f6 | 19 | } |
JPB515 | 0:f254a3cfe0f6 | 20 | |
JPB515 | 0:f254a3cfe0f6 | 21 | tactileDisplay::tactileDisplay(int x, int y, int max){ |
JPB515 | 0:f254a3cfe0f6 | 22 | xSize = x; |
JPB515 | 0:f254a3cfe0f6 | 23 | ySize = y; |
JPB515 | 0:f254a3cfe0f6 | 24 | size = x * y; |
JPB515 | 0:f254a3cfe0f6 | 25 | maxActive = max; |
JPB515 | 0:f254a3cfe0f6 | 26 | |
JPB515 | 0:f254a3cfe0f6 | 27 | for(int j=0 ; j<ySize ; ++j){ |
JPB515 | 0:f254a3cfe0f6 | 28 | for(int i=0 ; i<xSize ; ++i){ |
JPB515 | 0:f254a3cfe0f6 | 29 | taxel* tempTaxel = new taxel(i,j); |
JPB515 | 0:f254a3cfe0f6 | 30 | taxels.push_back(tempTaxel); |
JPB515 | 0:f254a3cfe0f6 | 31 | } |
JPB515 | 0:f254a3cfe0f6 | 32 | } |
JPB515 | 0:f254a3cfe0f6 | 33 | } |
JPB515 | 0:f254a3cfe0f6 | 34 | |
JPB515 | 0:f254a3cfe0f6 | 35 | tactileDisplay::~tactileDisplay(){ |
JPB515 | 0:f254a3cfe0f6 | 36 | xSize = 8; |
JPB515 | 0:f254a3cfe0f6 | 37 | ySize = 8; |
JPB515 | 0:f254a3cfe0f6 | 38 | size = 64; |
JPB515 | 0:f254a3cfe0f6 | 39 | |
JPB515 | 0:f254a3cfe0f6 | 40 | for(int i=0 ; i<xSize ; ++i){ |
JPB515 | 0:f254a3cfe0f6 | 41 | for(int j=0 ; j<ySize ; ++j){ |
JPB515 | 0:f254a3cfe0f6 | 42 | taxel* tempTaxel = new taxel(i,j); |
JPB515 | 0:f254a3cfe0f6 | 43 | taxels.push_back(tempTaxel); |
JPB515 | 0:f254a3cfe0f6 | 44 | } |
JPB515 | 0:f254a3cfe0f6 | 45 | } |
JPB515 | 0:f254a3cfe0f6 | 46 | |
JPB515 | 0:f254a3cfe0f6 | 47 | } |
JPB515 | 0:f254a3cfe0f6 | 48 | |
JPB515 | 0:f254a3cfe0f6 | 49 | void zero(){} |
JPB515 | 0:f254a3cfe0f6 | 50 | |
JPB515 | 0:f254a3cfe0f6 | 51 | int tactileDisplay::coordtoidx(int x, int y){ |
JPB515 | 0:f254a3cfe0f6 | 52 | int idx=-1; |
JPB515 | 0:f254a3cfe0f6 | 53 | |
JPB515 | 0:f254a3cfe0f6 | 54 | if((x>=0)&&(x<xSize)){ |
JPB515 | 0:f254a3cfe0f6 | 55 | if((y>=0)&&(y<ySize)){ |
JPB515 | 0:f254a3cfe0f6 | 56 | idx = (xSize*y) + x; |
JPB515 | 0:f254a3cfe0f6 | 57 | } |
JPB515 | 0:f254a3cfe0f6 | 58 | } |
JPB515 | 0:f254a3cfe0f6 | 59 | return idx; |
JPB515 | 0:f254a3cfe0f6 | 60 | } |
JPB515 | 0:f254a3cfe0f6 | 61 | |
JPB515 | 0:f254a3cfe0f6 | 62 | void tactileDisplay::setTaxel(int x, int y, int target){ |
JPB515 | 0:f254a3cfe0f6 | 63 | int idx = coordtoidx(x,y); |
JPB515 | 0:f254a3cfe0f6 | 64 | taxels[idx]->setTarget(target); |
JPB515 | 0:f254a3cfe0f6 | 65 | } |
JPB515 | 0:f254a3cfe0f6 | 66 | |
JPB515 | 0:f254a3cfe0f6 | 67 | void tactileDisplay::stepDisplay(){ |
JPB515 | 0:f254a3cfe0f6 | 68 | int nMoved = 0; |
JPB515 | 0:f254a3cfe0f6 | 69 | vector<int> moved; |
JPB515 | 0:f254a3cfe0f6 | 70 | for(int i=0 ; ((i<size) && (nMoved<=maxActive)) ; ++i){ |
JPB515 | 0:f254a3cfe0f6 | 71 | if(taxels[i]->stepToTarget()){ |
JPB515 | 0:f254a3cfe0f6 | 72 | nMoved++; |
JPB515 | 0:f254a3cfe0f6 | 73 | moved.push_back(i); |
JPB515 | 0:f254a3cfe0f6 | 74 | } |
JPB515 | 0:f254a3cfe0f6 | 75 | } |
JPB515 | 0:f254a3cfe0f6 | 76 | //for(int i=0 ; i<nMoved ; ++i){ |
JPB515 | 0:f254a3cfe0f6 | 77 | // taxels[moved[i]]->stop(); |
JPB515 | 0:f254a3cfe0f6 | 78 | //} |
JPB515 | 0:f254a3cfe0f6 | 79 | } |