Seat Matrix Code back and seat

Dependencies:   SoftPWM

Fork of Matrix_Test_3 by Ben Walker

Files at this revision

API Documentation at this revision

Comitter:
bwalker001
Date:
Mon Mar 12 00:01:08 2018 +0000
Parent:
0:a4b52dc3fb96
Commit message:
Working, serial output (back1234,seat123456789)

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Wed Mar 07 10:07:30 2018 +0000
+++ b/main.cpp	Mon Mar 12 00:01:08 2018 +0000
@@ -2,8 +2,8 @@
 
 #include "SoftPWM.h"
 
-SPI spi(p23, p24, p25); // mosi, miso, sclk
-DigitalOut cs(p22);
+//SPI spi(p23, p24, p25); // mosi, miso, sclk
+//DigitalOut cs(p22);
 
 AnalogIn   ain(A5);
 
@@ -20,22 +20,82 @@
 SoftPWM  led3(LED3);
 SoftPWM  led4(LED4);
 
-DigitalOut output(D11);
+//DigitalOut output(D11);
+DigitalOut muxPower(D12);
 
 DigitalOut mux0(D2);
 DigitalOut mux1(D1);
 DigitalOut mux2(D0);
 
-DigitalOut col0(D3);
-DigitalOut col1(D4);
+DigitalOut colS0(D3);
+DigitalOut colS1(D4);
+DigitalOut colS2(D5);
+
+DigitalOut colB0(D10);
+DigitalOut colB1(D11);
+
+
+//Seat Row 1,2,3: Grey, White Pink
+//Seat Col 1,2,3: Yellow, Purple, Blue
+
+//Back Row 1,2: Green, Red
+//Back Col 1,2: Pink, Black
 
-float rowreadings[2][2];
-float rowsum[2];
-int sensordata[2][2];
+//Seat: 3x3 matrix of square sensors
+//Back: 2x2 matrix, row 1 (bottom) is 2 square, row 2 (top) is 2 circular
+
+//Mux: rowS1, rowS2, rowS3, rowB1, rowB2
+
+float seatrowreadings[3][3];
+float seatrowsum[3];
+
+float backrowreadings[2][2];
+float backrowsum[2];
+
+int seatdata[3][3];
+int backdata[2][2];
 
 Serial pc(USBTX, USBRX);
 
 // main() runs in its own thread in the OS
+void muxSelect(int input){
+    mux0=input%2;
+    mux1=((int)(input/2))%2;
+    mux2=((int)(input/4))%2;
+    }
+    
+void seatColSelect(int input){
+    if(input==0){
+        colS0=1;
+        colS1=0;
+        colS2=0;
+        }
+            if(input==1){
+        colS0=0;
+        colS1=1;
+        colS2=0;
+        }
+            if(input==2){
+        colS0=0;
+        colS1=0;
+        colS2=1;
+        }
+        
+}
+
+
+void backColSelect(int input){
+    if(input==0){
+        colB0=1;
+        colB1=0;
+        }
+            if(input==1){
+        colB0=0;
+        colB1=1;
+        }
+        
+}
+
 int main()
 {
     led1.period_ms( 1 ); //set up pwm
@@ -44,24 +104,26 @@
     led4.period_ms( 1 );
     pc.baud (115200);
 
-    cs = 1;// Chip must be deselected
+    //cs = 1;// Chip must be deselected
 
     // Setup the spi for 8 bit data, high steady state clock,
     // second edge capture, with a 1MHz clock rate
-    spi.format(8,3);
-    spi.frequency(1000000);
+    //spi.format(8,3);
+    //spi.frequency(1000000);
 
-    cs = 0;// Select the device by seting chip select low
+    /*cs = 0;// Select the device by seting chip select low
     spi.write(0x0A); //write mode
     spi.write(0x2D); // power register
     spi.write(0x02); //enable measurement mode
     cs = 1;// Deselect the device
-
+    */
     //__disable_irq(); //the tick(?) runs every 1ms, and halts everything for 50uS!
+    
+    muxPower=1;
     while(1) {
 
-
-        cs = 0;// Select the device by seting chip select low
+        //wait(0.5);
+        /*cs = 0;// Select the device by seting chip select low
         spi.write(0x0B); //read mode
         spi.write(0x08);     // X axis
         int xacc=spi.write(0x00); //dummy byte to get data
@@ -79,57 +141,137 @@
         int zacc=spi.write(0x00); //dummy byte to get data
         cs = 1;// Deselect the device
 
-
+        */
         //printf("X = 0x%X\n, Y = 0x%X\n, Z = 0x%X\n, ", xacc,yacc,zacc);
 
-        mux0=0;
+        /*mux0=0;
         mux1=0;
-        mux2=0; //select Y0
+        mux2=0; //select Y0*/
+        muxSelect(0);
+        seatColSelect(0);
+        /*col0=1;
+        col1=0; //select col 0*/
+
+        seatrowreadings[0][0]=ain;
 
-        col0=1;
-        col1=0; //select col 0
+        /*col0=0;
+        col1=1; //select col 1*/
+        seatColSelect(1);
+        seatrowreadings[0][1]=ain;
+        
+        seatColSelect(2);
+        seatrowreadings[0][2]=ain;
+        
+        seatrowsum[0]=0.0f;
+        for(int i=0; i<3; i++) {
+            seatrowsum[0]+=seatrowreadings[0][i];
+        }
+
+        for(int i=0; i<3; i++) {
+            seatdata[0][i]=(1-seatrowsum[0])*RESISTOR/seatrowreadings[0][i];
+        }
+        
+        muxSelect(1);
+        /*mux0=1;
+        mux1=0;
+        mux2=0; //select Y0*/
+
+        seatColSelect(0);
+        /*col0=1;
+        col1=0; //select col 0*/
 
-        rowreadings[0][0]=ain;
-
+        seatrowreadings[1][0]=ain;
+    /*
         col0=0;
-        col1=1; //select col 1
-        rowreadings[0][1]=ain;
-        rowsum[0]=0.0f;
+        col1=1; //select col 1*/
+        
+        seatColSelect(1);
+        seatrowreadings[1][1]=ain;
+        
+        seatColSelect(2);
+        seatrowreadings[1][2]=ain;
+        
+        seatrowsum[1]=0.0f;
+        for(int i=0; i<3; i++) {
+            seatrowsum[1]+=seatrowreadings[1][i];
+        }
+
+        for(int i=0; i<3; i++) {
+            seatdata[1][i]=(1-seatrowsum[1])*RESISTOR/seatrowreadings[1][i];
+        }
+
+
+        muxSelect(2);
+        
+        seatColSelect(0);
+        seatrowreadings[2][0]=ain;
+
+        seatColSelect(1);
+        seatrowreadings[2][1]=ain;
+        
+        seatColSelect(2);
+        seatrowreadings[2][2]=ain;
+        
+        seatrowsum[2]=0.0f;
+        for(int i=0; i<3; i++) {
+            seatrowsum[2]+=seatrowreadings[2][i];
+        }
+
+        for(int i=0; i<3; i++) {
+            seatdata[2][i]=(1-seatrowsum[2])*RESISTOR/seatrowreadings[2][i];
+        }
+
+    //seat only //pc.printf("%i,%i,%i,%i,%i,%i,%i,%i,%i\n", seatdata[0][0], seatdata[0][1], seatdata[0][2], seatdata[1][0], seatdata[1][1], seatdata[1][2], seatdata[2][0], seatdata[2][1], seatdata[2][2]);
+    //formatted seat //pc.printf("%i,%i,%i \n%i,%i,%i \n%i,%i,%i\n\n", seatdata[0][0], seatdata[0][1], seatdata[0][2], seatdata[1][0], seatdata[1][1], seatdata[1][2], seatdata[2][0], seatdata[2][1], seatdata[2][2]);
+    
+    
+    
+    
+    muxSelect(3);
+        
+        backColSelect(0);
+        backrowreadings[0][0]=ain;
+
+        backColSelect(1);
+        backrowreadings[0][1]=ain;
+        
+        backrowsum[0]=0.0f;
         for(int i=0; i<2; i++) {
-            rowsum[0]+=rowreadings[0][i];
+            backrowsum[0]+=backrowreadings[0][i];
         }
 
         for(int i=0; i<2; i++) {
-            sensordata[0][i]=(1-rowsum[0])*RESISTOR/rowreadings[0][i];
+            backdata[0][i]=(1-backrowsum[0])*RESISTOR/backrowreadings[0][i];
         }
-        mux0=1;
-        mux1=0;
-        mux2=0; //select Y0
 
-        col0=1;
-        col1=0; //select col 0
 
-        rowreadings[1][0]=ain;
+muxSelect(4);
+        
+        backColSelect(0);
+        backrowreadings[1][0]=ain;
 
-        col0=0;
-        col1=1; //select col 1
-        rowreadings[1][1]=ain;
-        rowsum[1]=0.0f;
+        backColSelect(1);
+        backrowreadings[1][1]=ain;
+        
+        backrowsum[1]=0.0f;
         for(int i=0; i<2; i++) {
-            rowsum[1]+=rowreadings[1][i];
+            backrowsum[1]+=backrowreadings[1][i];
         }
 
         for(int i=0; i<2; i++) {
-            sensordata[1][i]=(1-rowsum[1])*RESISTOR/rowreadings[1][i];
+            backdata[1][i]=(1-backrowsum[1])*RESISTOR/backrowreadings[1][i];
         }
-
-    pc.printf("%i,%i,%i,%i\n", sensordata[0][0], sensordata[0][1], sensordata[1][0], sensordata[1][1]);
-    
-    
-        led1=1.0f-((8000.0f-sensordata[0][0])/500.0f)*((8000.0f-sensordata[0][0])/500.0f)*((8000.0f-sensordata[0][0])/500.0f)/5000.0f;
+        
+  //formatted back //pc.printf("%i,%i \n%i,%i \n\n", backdata[0][0], backdata[0][1], backdata[1][0], backdata[1][1]);
+  
+  //formatted Full //pc.printf("%i,%i \n%i,%i \n\n %i,%i,%i \n%i,%i,%i \n%i,%i,%i\n\n\n", backdata[0][0], backdata[0][1], backdata[1][0], backdata[1][1], seatdata[0][0], seatdata[0][1], seatdata[0][2], seatdata[1][0], seatdata[1][1], seatdata[1][2], seatdata[2][0], seatdata[2][1], seatdata[2][2]);
+   pc.printf("%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i\n", backdata[0][0], backdata[0][1], backdata[1][0], backdata[1][1], seatdata[0][0], seatdata[0][1], seatdata[0][2], seatdata[1][0], seatdata[1][1], seatdata[1][2], seatdata[2][0], seatdata[2][1], seatdata[2][2]);
+ 
+        /*led1=1.0f-((8000.0f-sensordata[0][0])/500.0f)*((8000.0f-sensordata[0][0])/500.0f)*((8000.0f-sensordata[0][0])/500.0f)/5000.0f;
         led2=1.0f-((8000.0f-sensordata[1][0])/500.0f)*((8000.0f-sensordata[1][0])/500.0f)*((8000.0f-sensordata[1][0])/500.0f)/5000.0f;
         led3=1.0f-((8000.0f-sensordata[0][1])/500.0f)*((8000.0f-sensordata[0][1])/500.0f)*((8000.0f-sensordata[0][1])/500.0f)/5000.0f;
         led4=1.0f-((8000.0f-sensordata[1][1])/500.0f)*((8000.0f-sensordata[1][1])/500.0f)*((8000.0f-sensordata[1][1])/500.0f)/5000.0f;
+        */
     //wait(0.5);
     }
 }