First revision of tactile mouse code

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?

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