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.
main.cpp
- Committer:
- tyleralt
- Date:
- 2015-05-01
- Revision:
- 0:ded79d89abdf
- Child:
- 1:bb1507f0bb64
File content as of revision 0:ded79d89abdf:
#include "mbed.h" #include <vector> #define BUFFER_SIZE 16 #define NUMBER_OF_SLICES 360 #include "Point.h" #include "View.h" //hass sensor interupt InterruptIn hallSensor(p25); //Set Up Timer and ticker Timer rotationTime; Ticker updateLeds; //Declare global vars double slice_time; double rotate_time; int current_slice; bool firstTime; enum DisplayMode {lineDraw, map, eucDraw}; DisplayMode mode; Point pointer; EuclidPoint eucPointer; //the View View display; //serial port for pc and bluetooth Serial pc(USBTX, USBRX); // tx, rx Serial bt(p9, p10);// tx, rx void rotate_sense(){ if (firstTime){ rotationTime.reset(); rotationTime.start(); firstTime = false; display.current_slice = 180; return; } if(display.current_slice < NUMBER_OF_SLICES / 4){ return; } rotate_time = rotationTime.read_us(); rotationTime.reset(); rotationTime.start(); slice_time = (double) rotate_time/NUMBER_OF_SLICES; display.resetCount(); updateLeds.attach_us(&display, &View::nextLedPush, slice_time); } void moveUp(); void moveDown(); void rotateRight(); void rotateLeft(); void moveIn(); void moveOut(); void parseLineMode(char c){ switch(c){ case 'w': pointer.moveOut(); break; case 's': pointer.moveIn(); break; case 'a': pointer.rotateRight(); break; case 'd': pointer.rotateLeft(); break; case 'p': pointer.moveUp(); break; case 'l': pointer.moveDown(); break; default: return; } display.addPoint(pointer); } void parseMapMode(char c){ } void parseEucMode(char c){ bt.printf("parseing EucMode"); switch(c){ case 'w': eucPointer.moveAway(); break; case 's': eucPointer.moveTowards(); break; case 'a': eucPointer.moveLeft(); break; case 'd': eucPointer.moveRight(); break; case 'p': eucPointer.moveUp(); break; case 'l': eucPointer.moveDown(); break; default: return; } Point startPoint = eucPointer.getStartPoint(); Point endPoint = eucPointer.getEndPoint(); bt.printf("\r\n"); bt.printf("points%i , %i , %X \r\n", eucPointer.x, eucPointer.y,eucPointer.z); bt.printf("drawingEucPointer Starting %i , %i , %X \r\n", startPoint.getArraySlice(), startPoint.getPositionDistance(),startPoint.getIdentifyingChar()); bt.printf("drawingEucPointer Ending %i , %i , %X \r\n", endPoint.getArraySlice(), endPoint.getPositionDistance(),endPoint.getIdentifyingChar()); display.addEucPoint(eucPointer); } void parseBt(char c){ if (c == 'm'){ switch (c){ case(lineDraw):{ mode = eucDraw; bt.printf("we are drawing Euclidian"); break; } case(map):{ mode = lineDraw; bt.printf("we are drawing Radians"); break; } case(eucDraw):{ mode = map; bt.printf("we are on a Map"); break; } default: { return; } } return; } if (mode == lineDraw){ parseLineMode(c); } if (mode == map){ parseMapMode(c); } if (mode == eucDraw){ parseEucMode(c); } } int main() { pc.printf("started"); bt.printf("bluetooth started"); mode = eucDraw; firstTime = true; current_slice = 100; display.resetDisplay(); hallSensor.fall(&rotate_sense); while(true) { if (bt.readable()){ parseBt(bt.getc()); } } }