Fiona Lin / Mbed OS cap_sense
Committer:
fionalin
Date:
Thu Aug 04 15:14:29 2022 -0400
Revision:
2:d9745be6c253
Parent:
0:4e3ad938564e
hehe forgot to commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fionalin 2:d9745be6c253 1 #include <cstdint>
fionalin 2:d9745be6c253 2 #include <cstdio>
fionalin 0:4e3ad938564e 3 #include <mbed.h>
fionalin 0:4e3ad938564e 4 #include "dis_exp.h"
fionalin 2:d9745be6c253 5 #include "Adafruit_MPR121.h"
fionalin 0:4e3ad938564e 6 #include "stepper.h"
fionalin 0:4e3ad938564e 7
fionalin 2:d9745be6c253 8 DiscreteExperiment::DiscreteExperiment(StepperMotor& motor, Adafruit_MPR121& mpr121,
fionalin 0:4e3ad938564e 9 int32_t n_measure, uint32_t t_measure_us,
fionalin 0:4e3ad938564e 10 int32_t delta_steps, int32_t max_steps)
fionalin 2:d9745be6c253 11 : motor(motor), mpr121(mpr121), n_measure(n_measure),
fionalin 0:4e3ad938564e 12 t_measure_us(t_measure_us), delta_steps(delta_steps),
fionalin 0:4e3ad938564e 13 max_steps(max_steps), steps_taken(0) {}
fionalin 0:4e3ad938564e 14
fionalin 0:4e3ad938564e 15 void DiscreteExperiment::proceed() {
fionalin 2:d9745be6c253 16 const int DISCHARGE_TOLERANCE = 5;
fionalin 0:4e3ad938564e 17 switch (state) {
fionalin 0:4e3ad938564e 18 case State::IDLE:
fionalin 0:4e3ad938564e 19 break;
fionalin 0:4e3ad938564e 20 case State::DONE:
fionalin 0:4e3ad938564e 21 break;
fionalin 0:4e3ad938564e 22 case State::MOVING:
fionalin 0:4e3ad938564e 23 if (move_counter != 0 && steps_taken < max_steps) {
fionalin 0:4e3ad938564e 24 if (move_counter < 0) {
fionalin 0:4e3ad938564e 25 printf("[bug] Oh shit....\n");
fionalin 2:d9745be6c253 26 }
fionalin 0:4e3ad938564e 27 motor.step_positive();
fionalin 2:d9745be6c253 28 wait_us(100);
fionalin 2:d9745be6c253 29 printf("motor stepping now\n");
fionalin 2:d9745be6c253 30 printf("move_counter %d\n", move_counter);
fionalin 2:d9745be6c253 31 printf("steps taken %d\n", steps_taken);
fionalin 0:4e3ad938564e 32 move_counter--;
fionalin 0:4e3ad938564e 33 steps_taken++;
fionalin 0:4e3ad938564e 34 } else {
fionalin 2:d9745be6c253 35 printf("state went to measuring \n");
fionalin 0:4e3ad938564e 36 state = MEASURING;
fionalin 0:4e3ad938564e 37 measu_counter = n_measure;
fionalin 0:4e3ad938564e 38 }
fionalin 0:4e3ad938564e 39 break;
fionalin 0:4e3ad938564e 40 case State::MEASURING:
fionalin 0:4e3ad938564e 41 if (measu_counter != 0) {
fionalin 0:4e3ad938564e 42 if (measu_counter < 0) {
fionalin 0:4e3ad938564e 43 printf("[bug] Oh shit....\n");
fionalin 0:4e3ad938564e 44 }
fionalin 2:d9745be6c253 45 // using channel 11 on adafruit mpr121
fionalin 2:d9745be6c253 46 uint32_t tau = mpr121.filteredData(11);
fionalin 2:d9745be6c253 47
fionalin 2:d9745be6c253 48 data.push_back({steps_taken, tau});
fionalin 0:4e3ad938564e 49 measu_counter--;
fionalin 2:d9745be6c253 50
fionalin 2:d9745be6c253 51 wait_us(DISCHARGE_TOLERANCE*tau);
fionalin 2:d9745be6c253 52 } else if (steps_taken < max_steps) {
fionalin 0:4e3ad938564e 53 state = MOVING;
fionalin 0:4e3ad938564e 54 move_counter = delta_steps;
fionalin 2:d9745be6c253 55 } else {
fionalin 2:d9745be6c253 56 state = DONE;
fionalin 2:d9745be6c253 57 steps_taken = 0; // clears the steps_taken counter so that next measure can run
fionalin 0:4e3ad938564e 58 }
fionalin 0:4e3ad938564e 59 break;
fionalin 0:4e3ad938564e 60 }
fionalin 0:4e3ad938564e 61 }
fionalin 0:4e3ad938564e 62
fionalin 0:4e3ad938564e 63
fionalin 0:4e3ad938564e 64 bool DiscreteExperiment::is_done() {
fionalin 0:4e3ad938564e 65 return state == DONE;
fionalin 0:4e3ad938564e 66 }
fionalin 0:4e3ad938564e 67
fionalin 2:d9745be6c253 68 std::vector<std::tuple<int32_t, uint32_t>>& DiscreteExperiment::report() {
fionalin 0:4e3ad938564e 69 return data;
fionalin 0:4e3ad938564e 70 }
fionalin 0:4e3ad938564e 71
fionalin 0:4e3ad938564e 72 void DiscreteExperiment::start() {
fionalin 0:4e3ad938564e 73 state = MOVING;
fionalin 0:4e3ad938564e 74 move_counter = delta_steps;
fionalin 0:4e3ad938564e 75 }
fionalin 0:4e3ad938564e 76
fionalin 0:4e3ad938564e 77 void DiscreteExperiment::reset() {
fionalin 0:4e3ad938564e 78 state = IDLE;
fionalin 0:4e3ad938564e 79 }