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.
Diff: main.cpp
- 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
+ }
+}