/* ----------------------------------------------------------------- */ /* 'ZFeetClass.cc' */ /* Centre of Gravity Calculating anf Feet Sensor- Handling */ /* */ /* last modified 07/04/2003 */ /* used to calculate COG and read feet sensors of andy */ /* */ /* */ /* */ /* */ /* (C) Jochen Zimmermann */ /* ----------------------------------------------------------------- */ #include "ZHeaders.h" /* //Headerfile is included by ZHeaders.h #include "ZFeetClass.h" */ //Single Instance is globally created Feet Feet::SingleInstance; //constructor //initialises members Feet::Feet() { //constructor cognew[0]= 6.3; cognew[2]=-6.3; cognew[1]= cognew[3]= 0.0; feetdatalifted[0]=383; feetdatalifted[1]=331; feetdatalifted[2]=368; feetdatalifted[3]=391; feetdatalifted[4]=386; feetdatalifted[5]=385; for(int i=0;i<6;i++) feetdata[i]=oldfeetdata[i]=0; deadbandwidth=2; liftsensitivity=10; readings=800; } //instance retirever Feet* Feet::GetTheInstance() { return &SingleInstance; } //initialising feet bool Feet::Init () { //analog Inputs are read to static member-buffer //for reference- values while lifted int mean=0,i; cognew[0]= 6.3; cognew[2]=-6.3; cognew[1]= cognew[3]= 0.0; deadbandwidth=0; readings=8; //generates a readings*(10.66µs+1,74µs) waitstate liftsensitivity=10; for(i=0;i<6;i++) { OSGetAD(i+2); OSWait(1); feetdatalifted[i]=OSGetAD(i+2); feetdata[i]=0; oldfeetdata[i]=0; mean+=feetdatalifted[i]; } if((mean/6)>390) //override read values if andy was not lifted { Display *lcd=Display::GetTheInstance(); lcd->Print("Bad feet-read!"); feetdatalifted[0]=383; feetdatalifted[1]=331; feetdatalifted[2]=368; feetdatalifted[3]=391; feetdatalifted[4]=386; feetdatalifted[5]=385; return false; } else return true; } //read sensors void Feet::Read() { //analog Inputs are read to member-buffer int i,j; for(i=0;i<6;i++) { feetdata[i]=OSGetAD(i+2); //force multiplexer to switch channel for(j=0;j(-deadbandwidth) ) ) feetdata[i]=oldfeetdata[i]; else oldfeetdata[i]=feetdata[i]; } } //empty buffer void Feet::ZeroMemory(BYTE* pointer, int count) { int i=0; for(i=0;i