First revision of tactile mouse code

tactile_display.cpp

Committer:
JPB515
Date:
2019-04-08
Revision:
0:f254a3cfe0f6

File content as of revision 0:f254a3cfe0f6:

#include "mbed.h"
#include "tactile_display.hpp"
#include "tactile_mouse.hpp"

tactileDisplay::tactileDisplay(){}

tactileDisplay::tactileDisplay(int x, int y){
    xSize = x;
    ySize = y;
    size = x * y;
    maxActive = size;       //By default, all motors can be active at once;
    
    for(int j=0 ; j<ySize ; ++j){
        for(int i=0 ; i<xSize ; ++i){
            taxel* tempTaxel = new taxel(i,j);
            taxels.push_back(tempTaxel);
        }
    }
}

tactileDisplay::tactileDisplay(int x, int y, int max){
    xSize = x;
    ySize = y;
    size = x * y;
    maxActive = max;
    
    for(int j=0 ; j<ySize ; ++j){
        for(int i=0 ; i<xSize ; ++i){
            taxel* tempTaxel = new taxel(i,j);
            taxels.push_back(tempTaxel);
        }
    }
}

tactileDisplay::~tactileDisplay(){
    xSize = 8;
    ySize = 8;
    size = 64;
    
    for(int i=0 ; i<xSize ; ++i){
        for(int j=0 ; j<ySize ; ++j){
            taxel* tempTaxel = new taxel(i,j);
            taxels.push_back(tempTaxel);
        }
    }
    
}

void zero(){}

int tactileDisplay::coordtoidx(int x, int y){
    int idx=-1;
    
    if((x>=0)&&(x<xSize)){
        if((y>=0)&&(y<ySize)){
            idx = (xSize*y) + x;
        }
    }
    return idx;
}

void tactileDisplay::setTaxel(int x, int y, int target){
    int idx = coordtoidx(x,y);
    taxels[idx]->setTarget(target);
}

void tactileDisplay::stepDisplay(){
    int nMoved = 0;
    vector<int> moved;
    for(int i=0 ; ((i<size) && (nMoved<=maxActive)) ; ++i){
        if(taxels[i]->stepToTarget()){
            nMoved++;
            moved.push_back(i);
        }
    }
    //for(int i=0 ; i<nMoved ; ++i){
    //    taxels[moved[i]]->stop();
    //}
}