Fiona Lin / Mbed OS cap_sense
Revision:
2:d9745be6c253
Parent:
0:4e3ad938564e
--- a/dis_exp.cpp	Tue Jul 12 13:02:25 2022 -0400
+++ b/dis_exp.cpp	Thu Aug 04 15:14:29 2022 -0400
@@ -1,19 +1,19 @@
+#include <cstdint>
+#include <cstdio>
 #include <mbed.h>
 #include "dis_exp.h"
-#include "capsense.h"
+#include "Adafruit_MPR121.h"
 #include "stepper.h"
 
-DiscreteExperiment::DiscreteExperiment(StepperMotor& motor, CapSense& capsense, 
+DiscreteExperiment::DiscreteExperiment(StepperMotor& motor, Adafruit_MPR121& mpr121, 
                                        int32_t n_measure, uint32_t t_measure_us, 
                                        int32_t delta_steps, int32_t max_steps)
-    : motor(motor), capsense(capsense), n_measure(n_measure),
+    : motor(motor), mpr121(mpr121), n_measure(n_measure),
       t_measure_us(t_measure_us), delta_steps(delta_steps), 
       max_steps(max_steps), steps_taken(0) {}
     
 void DiscreteExperiment::proceed() {
-    
-    bool measured = false;
-
+    const int DISCHARGE_TOLERANCE = 5;
     switch (state) {
         case State::IDLE:
             break;
@@ -23,10 +23,16 @@
             if (move_counter != 0 && steps_taken < max_steps) {
                 if (move_counter < 0) {
                     printf("[bug] Oh shit....\n");
+                }
                 motor.step_positive();
+                wait_us(100);
+                printf("motor stepping now\n");
+                printf("move_counter %d\n", move_counter);
+                printf("steps taken %d\n", steps_taken);
                 move_counter--;
                 steps_taken++;
             } else {
+                printf("state went to measuring \n");
                 state = MEASURING;
                 measu_counter = n_measure;
             }
@@ -36,19 +42,22 @@
                 if (measu_counter < 0) {
                     printf("[bug] Oh shit....\n");
                 }
-                while (!measured) {
-                    measured = capsense.try_measure();
-                }
-                data.push_back({steps_taken, capsense.read_measurement()});
+                // using channel 11 on adafruit mpr121
+                uint32_t tau = mpr121.filteredData(11);
+
+                data.push_back({steps_taken, tau});
                 measu_counter--;
-            } else {
+
+                wait_us(DISCHARGE_TOLERANCE*tau);
+            } else if (steps_taken < max_steps) {
                 state = MOVING;
                 move_counter = delta_steps;
+            } else {
+                state = DONE;
+                steps_taken = 0; // clears the steps_taken counter so that next measure can run
             }
             break;
     }
-    }
-            
 }
 
 
@@ -56,7 +65,7 @@
     return state == DONE;
 }
 
-std::vector<std::tuple<int32_t, long>>& DiscreteExperiment::report() {
+std::vector<std::tuple<int32_t, uint32_t>>& DiscreteExperiment::report() {
     return data;
 }