Tyler Altenhofen / Mbed 2 deprecated TylerPOV

Dependencies:   mbed

Committer:
tyleralt
Date:
Sun Apr 19 23:03:43 2015 +0000
Revision:
3:1e9b4a4bf177
Parent:
2:554edc4b0cf2
Child:
4:f81b40e04a58
bluetooth loaded up;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tyleralt 0:d9730cf42ecc 1 #include "mbed.h"
tyleralt 1:ea12b9153c51 2 #include <vector>
tyleralt 0:d9730cf42ecc 3 #define BUFFER_SIZE 16
tyleralt 0:d9730cf42ecc 4 #define NUMBER_OF_SLICES 90
tyleralt 0:d9730cf42ecc 5
tyleralt 0:d9730cf42ecc 6 //DigitalOut Pins
tyleralt 0:d9730cf42ecc 7 DigitalOut pushRegister(p23);
tyleralt 0:d9730cf42ecc 8 DigitalOut pushBit(p24);
tyleralt 0:d9730cf42ecc 9
tyleralt 0:d9730cf42ecc 10 DigitalOut dataArmOne(p15);
tyleralt 0:d9730cf42ecc 11 DigitalOut dataArmTwo(p16);
tyleralt 0:d9730cf42ecc 12 DigitalOut dataArmThree(p17);
tyleralt 0:d9730cf42ecc 13 DigitalOut dataArmFour(p18);
tyleralt 0:d9730cf42ecc 14 DigitalOut dataArmFive(p19);
tyleralt 0:d9730cf42ecc 15 DigitalOut dataArmSix(p20);
tyleralt 0:d9730cf42ecc 16 DigitalOut dataArmSeven(p21);
tyleralt 0:d9730cf42ecc 17 DigitalOut dataArmEight(p22);
tyleralt 2:554edc4b0cf2 18 DigitalOut led(LED1);
tyleralt 0:d9730cf42ecc 19
tyleralt 0:d9730cf42ecc 20 //Enable Interupt
tyleralt 0:d9730cf42ecc 21 InterruptIn hallSensor(p25);
tyleralt 0:d9730cf42ecc 22
tyleralt 1:ea12b9153c51 23 //Set Up Timer and ticker
tyleralt 0:d9730cf42ecc 24 Timer rotationTime;
tyleralt 1:ea12b9153c51 25 Ticker updateLeds;
tyleralt 0:d9730cf42ecc 26
tyleralt 0:d9730cf42ecc 27 //Declare global vars
tyleralt 2:554edc4b0cf2 28 double slice_time;
tyleralt 2:554edc4b0cf2 29 double rotate_time;
tyleralt 0:d9730cf42ecc 30 int current_slice;
tyleralt 3:1e9b4a4bf177 31 char slice_data [NUMBER_OF_SLICES][16]; //[slice][specific bit] & with approppriate bit for each arm
tyleralt 2:554edc4b0cf2 32 double firstTime;
tyleralt 0:d9730cf42ecc 33
tyleralt 0:d9730cf42ecc 34 Serial pc(USBTX, USBRX); // tx, rx
tyleralt 3:1e9b4a4bf177 35 Serial bt(p9, p10);// tx, rx
tyleralt 0:d9730cf42ecc 36
tyleralt 0:d9730cf42ecc 37
tyleralt 3:1e9b4a4bf177 38 void pushData (char (*bits) [16]){
tyleralt 3:1e9b4a4bf177 39 for (int i = 0; i < 16; i ++){
tyleralt 3:1e9b4a4bf177 40 dataArmOne = *bits [i] & 0x80;
tyleralt 3:1e9b4a4bf177 41 dataArmTwo = *bits [i] & 0x40;
tyleralt 3:1e9b4a4bf177 42 dataArmThree = *bits [i]& 0x20;
tyleralt 3:1e9b4a4bf177 43 dataArmFour = *bits [i]& 0x10;
tyleralt 3:1e9b4a4bf177 44 dataArmFive = *bits [i] & 0x08;
tyleralt 1:ea12b9153c51 45 //dataArmSix = *bits [5][i];
tyleralt 1:ea12b9153c51 46 //dataArmSeven = *bits [6][i];
tyleralt 1:ea12b9153c51 47 //dataArmEight = *bits [7][i];
tyleralt 1:ea12b9153c51 48
tyleralt 1:ea12b9153c51 49 pushBit = 1;
tyleralt 1:ea12b9153c51 50 pushBit = 0;
tyleralt 1:ea12b9153c51 51 }
tyleralt 1:ea12b9153c51 52 }
tyleralt 1:ea12b9153c51 53
tyleralt 1:ea12b9153c51 54
tyleralt 1:ea12b9153c51 55 //periodic display interrupt
tyleralt 1:ea12b9153c51 56 void nextLedPush(){
tyleralt 1:ea12b9153c51 57 if (current_slice < NUMBER_OF_SLICES){
tyleralt 1:ea12b9153c51 58 pushData(&slice_data[current_slice]);
tyleralt 1:ea12b9153c51 59 pushRegister = 1;
tyleralt 1:ea12b9153c51 60 pushRegister = 0;
tyleralt 1:ea12b9153c51 61 current_slice ++;
tyleralt 2:554edc4b0cf2 62 } else {
tyleralt 2:554edc4b0cf2 63 updateLeds.detach();
tyleralt 1:ea12b9153c51 64 }
tyleralt 1:ea12b9153c51 65 }
tyleralt 1:ea12b9153c51 66
tyleralt 0:d9730cf42ecc 67 //Hall sensor interupt
tyleralt 0:d9730cf42ecc 68 void rotate_sense(){
tyleralt 3:1e9b4a4bf177 69 pc.printf("interupt");
tyleralt 0:d9730cf42ecc 70 if (firstTime){
tyleralt 0:d9730cf42ecc 71 rotationTime.reset();
tyleralt 0:d9730cf42ecc 72 rotationTime.start();
tyleralt 0:d9730cf42ecc 73 firstTime = 0;
tyleralt 3:1e9b4a4bf177 74 pc.printf("first time");
tyleralt 3:1e9b4a4bf177 75 led = !led;
tyleralt 2:554edc4b0cf2 76 return;
tyleralt 2:554edc4b0cf2 77 } else if(current_slice < NUMBER_OF_SLICES / 2){
tyleralt 2:554edc4b0cf2 78 return;
tyleralt 2:554edc4b0cf2 79 }
tyleralt 3:1e9b4a4bf177 80 pc.printf("seconod time \n");
tyleralt 3:1e9b4a4bf177 81 led = !led;
tyleralt 0:d9730cf42ecc 82 rotate_time = rotationTime.read_us();
tyleralt 0:d9730cf42ecc 83 rotationTime.reset();
tyleralt 0:d9730cf42ecc 84 rotationTime.start();
tyleralt 0:d9730cf42ecc 85
tyleralt 2:554edc4b0cf2 86 slice_time = (double) rotate_time/NUMBER_OF_SLICES;
tyleralt 0:d9730cf42ecc 87 current_slice = 0;
tyleralt 2:554edc4b0cf2 88 updateLeds.attach_us(&nextLedPush, slice_time);
tyleralt 0:d9730cf42ecc 89 }
tyleralt 0:d9730cf42ecc 90
tyleralt 0:d9730cf42ecc 91
tyleralt 0:d9730cf42ecc 92 int main() {
tyleralt 3:1e9b4a4bf177 93 pc.printf("started");
tyleralt 0:d9730cf42ecc 94 firstTime = 1;
tyleralt 2:554edc4b0cf2 95 current_slice = 90;
tyleralt 0:d9730cf42ecc 96
tyleralt 3:1e9b4a4bf177 97 hallSensor.fall(&rotate_sense);
tyleralt 2:554edc4b0cf2 98 for (int i = 0; i < 45; i ++){
tyleralt 3:1e9b4a4bf177 99 slice_data [i][0] = 0x80; // bit 0 is high on arm 0
tyleralt 1:ea12b9153c51 100 //{1,1,1,1,0,0,0,0,1,1,1,0,0,0,1,0};
tyleralt 0:d9730cf42ecc 101 }
tyleralt 2:554edc4b0cf2 102 for (int i = 45; i < 90; i++){
tyleralt 3:1e9b4a4bf177 103 slice_data [i][0] = 0x00;
tyleralt 1:ea12b9153c51 104 //{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
tyleralt 0:d9730cf42ecc 105 }
tyleralt 0:d9730cf42ecc 106
tyleralt 0:d9730cf42ecc 107 while(1) {
tyleralt 3:1e9b4a4bf177 108 if (bt.readable()){
tyleralt 3:1e9b4a4bf177 109 pc.printf("%f \n", bt.getc());
tyleralt 3:1e9b4a4bf177 110 pc.printf("read that ish");
tyleralt 3:1e9b4a4bf177 111 //TODO: add in the ability to update the buffers
tyleralt 2:554edc4b0cf2 112
tyleralt 0:d9730cf42ecc 113 }
tyleralt 0:d9730cf42ecc 114 }