Tyler Altenhofen / Mbed 2 deprecated TylerPOV

Dependencies:   mbed

Revision:
0:d9730cf42ecc
Child:
1:ea12b9153c51
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Apr 07 22:55:57 2015 +0000
@@ -0,0 +1,92 @@
+#include "mbed.h"
+
+#define BUFFER_SIZE 16
+#define NUMBER_OF_SLICES 90
+
+//DigitalOut Pins
+DigitalOut pushRegister(p23);
+DigitalOut pushBit(p24);
+
+DigitalOut dataArmOne(p15);
+DigitalOut dataArmTwo(p16);
+DigitalOut dataArmThree(p17);
+DigitalOut dataArmFour(p18);
+DigitalOut dataArmFive(p19);
+DigitalOut dataArmSix(p20);
+DigitalOut dataArmSeven(p21);
+DigitalOut dataArmEight(p22);
+
+//Enable Interupt
+InterruptIn hallSensor(p25);
+
+//Set Up Timer
+Timer rotationTime;
+
+//Declare global vars
+int slice_time;
+int rotate_time;
+int current_slice;
+int [NUMBER_OF_SLICES][8][BUFFER_SIZE] slice_data; //[slice][forSepcificArm][eachBit]
+Ticker updateLeds;
+int firstTime;
+
+Serial pc(USBTX, USBRX); // tx, rx
+
+
+//Hall sensor interupt
+void rotate_sense(){
+  if (firstTime){
+    rotationTime.reset();
+    rotationTime.start();
+    firstTime = 0;
+  }
+    rotate_time = rotationTime.read_us();
+    rotationTime.reset();    
+    rotate_interrupt = 1;
+    rotationTime.start();
+    
+    slice_time = rotate_time/NUMBER_OF_SLICES;
+    current_slice = 0;
+    updateLeds.attach(&nextLedPush, slice_time);
+}
+
+void pushData (int [][] bits){
+  for (int i = 0; i < bit [0].length; i ++){
+    dataArmOne = bits [0][i];
+    dataArmTwo = bits [1][i];
+    dataArmThree = bits [2][i];
+    dataArmFour = bits [3][i];
+    dataArmFive = bits [4][i];
+    dataArmSix = bits [5][i];
+    dataArmSeven = bits [6][i];
+    dataArmEight = bits [7][i];
+    
+    clock = 1;
+    clock = 0;
+  }
+}
+
+
+//periodic display interrupt
+void nextLedPush(){
+  pushData(slice_data[current_slice]);
+  pushRegister = 1;
+  pushRegister = 0;
+  current_slice ++;
+}
+
+int main() {
+  firstTime = 1;
+    
+    hallSensor.fall(&rotate_sense);
+    for (int i = 0; i < slice_data [0].length / 2; i ++){
+      slice_data [i][0] = [1,1,1,1,0,0,0,0,1,1,1,0,0,0,1,0];
+    }
+    for (int i = slice_data [0].length / 2; i < slice_data[0].length; i++){
+      slice_data [i][0] = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
+    }
+    
+    while(1) {
+      //TODO: add in the ability to update the buffers 
+    }
+}