Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed Teach memory
Diff: teach.cpp
- Revision:
- 1:33fdaabcdeda
- Parent:
- 0:ad924d8a2f98
- Child:
- 3:b22580585b9c
diff -r ad924d8a2f98 -r 33fdaabcdeda teach.cpp --- a/teach.cpp Wed Mar 25 21:36:24 2020 +0000 +++ b/teach.cpp Tue Apr 21 15:49:22 2020 +0000 @@ -1,48 +1,241 @@ /* -class template by clemo -this file serves as a guide to creating a cpp class -when wirting functions for Easyfit please use this - -put math, instructions and temporary declarations here -declarations that are permanent go in .h file! - -i never coded c++ lol - -how to use when creating own class: -replace "template.h" with something of your choosing -replace class name (teach) fckn everywhere - -write appropriate constructor (teach::teach) -delete any unwanted functions -put in your own functions by YOURCLASSNAME::functionname(bla,bla) //same for public and private functions +Hear cold stand a discription */ #include "teach.h" -teach::teach(){ - - /* this->initvalue = _start; //sets startvalue - this->inc = _inc; //sets increment - this->useless(); //prints a happy little message + +teach::teach(void) // constructor +{ + + lowcount = 0, highcount = 0; //sets startvalue + data_vec.clear(); +} + +void teach::setstart(float posx,float posy,float posz, int time) +{ + lowcount = 0; + + temp.start = true; + temp.end = false; + temp.hi = highcount; + temp.low = lowcount; + temp.time = time; + temp.pos[0] = posx; + temp.pos[1] = posy; + temp.pos[2] = posz; + data_vec.push_back(temp); + + lowcount++; + highcount++; + + contr_sice(); +} + +void teach::setpoint(float posx,float posy,float posz, int time) +{ + lowcount++; + + temp.start = false; + temp.end = false; + temp.hi = highcount; + temp.low = lowcount; + temp.time = time; + temp.pos[0] = posx; + temp.pos[1] = posy; + temp.pos[2] = posz; + data_vec.push_back(temp); + + contr_sice(); +} + +void teach::setend(float posx,float posy,float posz, int time) +{ + temp.start = false; + temp.end = true; + temp.hi = highcount; + temp.low = lowcount; + temp.time = time; + temp.pos[0] = posx; + temp.pos[1] = posy; + temp.pos[2] = posz; + data_vec.push_back(temp); + + lowcount = 0; + highcount++; + + contr_sice(); +} + +void teach::save(void) +{ + //store data_vec to memory +} + +void teach::stop(void) +{ + } +void teach::process(void) +{ + int i=0, k=0, p=0, count=0,forward = 100000, backward = 100000; + float tempsum[3] = {}; + int max = data_vec.size(); -void teach::incrementSum(int v1){ - for(int i = 0; i < v1; i++){ - sum += inc; + for(i=0; i<=max; i++) { // avrage starting Point + if(data_vec[i].start) { + tempsum[0] += data_vec[i].pos[0]; + tempsum[1] += data_vec[i].pos[1]; + tempsum[2] += data_vec[i].pos[2]; + k++; + } + } + tempsum[0] = tempsum[0]/k; + tempsum[1] = tempsum[1]/k; + tempsum[2] = tempsum[2]/k; + + // save startpoint to memory + + i = 0, k = 0, tempsum[0] = 0, tempsum[1] = 0, tempsum[2] = 0; // reset counters + + for(i=0; i<=max; i++) { // avrage end Point + if(data_vec[i].end) { + tempsum[0] += data_vec[i].pos[0]; + tempsum[1] += data_vec[i].pos[1]; + tempsum[2] += data_vec[i].pos[2]; + k++; + } + } + tempsum[0] = tempsum[0]/k; + tempsum[1] = tempsum[1]/k; + tempsum[2] = tempsum[2]/k; + + // save endpoint to memory + + i = 0, k = 0, tempsum[0] = 0, tempsum[1] = 0, tempsum[2] = 0; // reset counters + + for(i=0; i<=max; i++) { // forward point number + + while(!data_vec[k].end) { + count++; + k++; + } + + if(count<forward) { + forward = count; + } + while(!data_vec[k].start) { + k++; + } + i = k; + count = 0; + + } + + k = 0; + for(i=0; i<=max; i++) { // backward point number + + while(!data_vec[k].end) { + k++; + } + + while(!data_vec[k].start) { + count++; + k++; + } + if(count<backward) { + backward = count; + } + i = k; + count = 0; + } + + k = 0; + struct temp_arry forw[forward]; // temp array initialise and zerowing + for(i=0; i<forward; i++) { + forw[i].time=0; + forw[i].pos[0]=0; + forw[i].pos[1]=0; + forw[i].pos[2]=0; + } + + for(i=0; i<=max; i++) { // avrage forward points + for(p=0; p<=forward; p++) { + forw[p].time += data_vec[k].time; + forw[p].pos[0] += data_vec[k].pos[0]; + forw[p].pos[1] += data_vec[k].pos[1]; + forw[p].pos[2] += data_vec[k].pos[2]; + k++; + } + + while(!data_vec[k].start) { + k++; + } + i = k; + count++; + + } + for(i=0; i<=forward; i++) { + forw[i].time = (forw[i].time)/count; + forw[i].pos[0] = (forw[i].pos[0])/count; + forw[i].pos[1] = (forw[i].pos[1])/count; + forw[i].pos[2] = (forw[i].pos[2])/count; + } + count = 0; + k = 0, i = 0, p = 0; // reset counters + + // Save forward way to memory + + struct temp_arry backw[backward]; // temp array initialise and zerowing + for(i=0; i<backward; i++) { + backw[i].time=0; + backw[i].pos[0]=0; + backw[i].pos[1]=0; + backw[i].pos[2]=0; + } + + for(i=0; i<=max; i++) { // avrage backward points + + while(!data_vec[k].end) { + k++; + } + + for(p=0; p<=backward; p++) { + backw[p].time += data_vec[k].time; + backw[p].pos[0] += data_vec[k].pos[0]; + backw[p].pos[1] += data_vec[k].pos[1]; + backw[p].pos[2] += data_vec[k].pos[2]; + k++; + } + i = k; + count++; + } + + for(i=0; i<=backward; i++) { + backw[i].time = (backw[i].time)/count; + backw[i].pos[0] = (backw[i].pos[0])/count; + backw[i].pos[0] = (backw[i].pos[0])/count; + backw[i].pos[0] = (backw[i].pos[0])/count; + } + count = 0; + k = 0, i = 0, p = 0; // reset counters + + // save backward way to memory + } -void teach::resetSum(void){ - sum = 0; +void teach::temp_store() +{ + } -int teach::getSum(void){ - return sum; -} - -void teach::useless(void){ - //printf("congrats"); */ //printf doesnt work :( +void teach::contr_sice() +{ + if((data_vec.size()*sizeof(posdata)) >= MAX_SIZE) { + // fehlermeldung oder speichern bei zu grossem temp speicher + } } \ No newline at end of file