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.
PositionModule.cpp@1:1d2eb2143108, 2010-10-19 (annotated)
- Committer:
- erikkallen
- Date:
- Tue Oct 19 10:07:15 2010 +0000
- Revision:
- 1:1d2eb2143108
- Parent:
- 0:886002922b6a
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| erikkallen | 0:886002922b6a | 1 | #include "PositionModule.h" |
| erikkallen | 0:886002922b6a | 2 | #include "Point.h" |
| erikkallen | 0:886002922b6a | 3 | |
| erikkallen | 0:886002922b6a | 4 | PositionModule::PositionModule(PinName tx, PinName rx):_mouse(tx,rx) { |
| erikkallen | 0:886002922b6a | 5 | _mouse.frequency(100000); |
| erikkallen | 0:886002922b6a | 6 | } |
| erikkallen | 0:886002922b6a | 7 | |
| erikkallen | 0:886002922b6a | 8 | long PositionModule::getX() { |
| erikkallen | 0:886002922b6a | 9 | updatePosition(); |
| erikkallen | 0:886002922b6a | 10 | return -_ypos; |
| erikkallen | 0:886002922b6a | 11 | } |
| erikkallen | 0:886002922b6a | 12 | |
| erikkallen | 0:886002922b6a | 13 | long PositionModule::getY() { |
| erikkallen | 0:886002922b6a | 14 | updatePosition(); |
| erikkallen | 0:886002922b6a | 15 | return -_xpos; |
| erikkallen | 0:886002922b6a | 16 | } |
| erikkallen | 0:886002922b6a | 17 | |
| erikkallen | 0:886002922b6a | 18 | void PositionModule::setZero() { |
| erikkallen | 0:886002922b6a | 19 | char cmd[1] = {2}; |
| erikkallen | 0:886002922b6a | 20 | _mouse.write(4,cmd,1); |
| erikkallen | 0:886002922b6a | 21 | } |
| erikkallen | 0:886002922b6a | 22 | |
| erikkallen | 0:886002922b6a | 23 | long PositionModule::getDistance() { |
| erikkallen | 0:886002922b6a | 24 | updatePosition(); |
| erikkallen | 0:886002922b6a | 25 | return sqrt((long double)(getX()*getX())+(getY()*getY())); |
| erikkallen | 0:886002922b6a | 26 | } |
| erikkallen | 0:886002922b6a | 27 | |
| erikkallen | 0:886002922b6a | 28 | float PositionModule::getHeading() { |
| erikkallen | 0:886002922b6a | 29 | return Point::XYToDegrees(Point(0,0),Point(getX(),getY())); |
| erikkallen | 0:886002922b6a | 30 | } |
| erikkallen | 0:886002922b6a | 31 | |
| erikkallen | 0:886002922b6a | 32 | void PositionModule::updatePosition() { |
| erikkallen | 0:886002922b6a | 33 | char * buf = new char[8]; |
| erikkallen | 0:886002922b6a | 34 | char cmd[1] = {3}; |
| erikkallen | 0:886002922b6a | 35 | _mouse.read(5,buf,8); |
| erikkallen | 0:886002922b6a | 36 | _mouse.write(4,cmd,1); |
| erikkallen | 0:886002922b6a | 37 | _xpos = (long)((buf[0] << 24) + (buf[1] << 16) + ( buf[2] << 8) + buf[3]); |
| erikkallen | 0:886002922b6a | 38 | _ypos = (long)((buf[4] << 24) + (buf[5] << 16) + ( buf[6] << 8) + buf[7]); |
| erikkallen | 0:886002922b6a | 39 | wait(0.1); |
| erikkallen | 0:886002922b6a | 40 | } |