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:
- 2:891b3618be4f
- Parent:
- 1:bb1507f0bb64
- Child:
- 5:d7d16cb9c974
File content as of revision 2:891b3618be4f:
#include "mbed.h" #include <vector> #define BUFFER_SIZE 16 #define NUMBER_OF_SLICES 360 #include "Point.h" #include "View.h" #include "Block.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; Block blocks [3]; //serial port for pc and bluetooth Serial pc(USBTX, USBRX); // tx, rx Serial bt(p9, p10);// tx, rx void updateMap(){ display.resetDisplay(); display.addBlock(blocks[0]); display.addBlock(blocks[1]); display.addBlock(blocks[2]); } 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){ switch(c){ case 'w': for (int i = 0; i < 3; i ++){ blocks[i].moveOut(); } updateMap(); break; case 's': for (int i = 0; i < 3; i ++){ blocks[i].moveIn(); } updateMap(); break; case 'a': for (int i = 0; i < 3; i ++){ blocks[i].moveLeft(); } updateMap(); break; case 'd': for (int i = 0; i < 3; i ++){ blocks[i].moveRight(); } updateMap(); break; case 'p': return; case 'l': return; default: return; } } void parseEucMode(char c){ 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.getPoint(); 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'){ display.resetDisplay(); switch (mode){ 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"); updateMap(); break; } default: { return; } } return; } if (mode == lineDraw){ parseLineMode(c); } if (mode == map){ parseMapMode(c); } if (mode == eucDraw){ parseEucMode(c); } } int main() { blocks[0] = Block( 3, 4, 0, 4,6); blocks[1] = Block ( -4, -4, 1 ,4, 3); blocks[2] = Block ( 5, -7, 2 ,5, 4); 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()); } } }