Brendon Ky / Mbed 2 deprecated cs_335_speedometer

Dependencies:   mbed mbed-rtos

Committer:
bky
Date:
Tue Dec 01 04:47:11 2020 +0000
Revision:
12:cb9118a081fa
Parent:
11:dd860c2e12ec
Child:
13:a1a9f2282f15
respawn point set

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bky 10:8d86e59fb408 1 # include "mbed.h"
bky 10:8d86e59fb408 2 # include "Timer.h"
bky 9:b7e8d0372f53 3
bky 10:8d86e59fb408 4 # include <stdlib.h>
bky 10:8d86e59fb408 5 # include <time.h>
bky 11:dd860c2e12ec 6 # include <limits>
bky 11:dd860c2e12ec 7 # include <queue>
bky 10:8d86e59fb408 8
bky 10:8d86e59fb408 9 # define NUM_HOLES 32
bky 10:8d86e59fb408 10 # define CIRCUMFRENCE_CM 48.6946861
bky 9:b7e8d0372f53 11
bky 9:b7e8d0372f53 12 # define LIGHT_SENSOR_PIN p15
bky 11:dd860c2e12ec 13 # define FLASH_THRESHOLD 0.97
bky 9:b7e8d0372f53 14
bky 9:b7e8d0372f53 15
bky 9:b7e8d0372f53 16 AnalogIn lightSensorVoltage(LIGHT_SENSOR_PIN);
bky 9:b7e8d0372f53 17 Serial pc(USBTX, USBRX);
bky 0:d724bf9c4031 18
bky 0:d724bf9c4031 19 DigitalOut myled(LED1);
bky 0:d724bf9c4031 20
bky 10:8d86e59fb408 21 int lastFlash = 0;
bky 10:8d86e59fb408 22 float prevVoltReading = 0.0;
bky 10:8d86e59fb408 23 float currVoltReading = 0.0;
bky 11:dd860c2e12ec 24 float miliPerRotation = std::numeric_limits<float>::max();
bky 11:dd860c2e12ec 25
bky 11:dd860c2e12ec 26 //float getAverage(queue<float> q) {
bky 11:dd860c2e12ec 27 //printf("g");
bky 11:dd860c2e12ec 28 // float sum = 0;
bky 11:dd860c2e12ec 29 // while(!q.empty()) {
bky 11:dd860c2e12ec 30 //printf("h");
bky 11:dd860c2e12ec 31 // sum += q.front();
bky 11:dd860c2e12ec 32 // q.pop();
bky 11:dd860c2e12ec 33 // }
bky 11:dd860c2e12ec 34 //
bky 11:dd860c2e12ec 35 // return sum / q.size();
bky 11:dd860c2e12ec 36 //}
bky 9:b7e8d0372f53 37
bky 9:b7e8d0372f53 38 void sendFloat(float value) {
bky 9:b7e8d0372f53 39 for (int i=0; i<4; i++)
bky 9:b7e8d0372f53 40 pc.putc(*(((char*) &value)+i));
bky 9:b7e8d0372f53 41 }
bky 9:b7e8d0372f53 42
bky 0:d724bf9c4031 43 int main() {
bky 10:8d86e59fb408 44 Timer timer;
bky 10:8d86e59fb408 45 timer.start();
bky 10:8d86e59fb408 46 int currTime = 0;
bky 10:8d86e59fb408 47 int prevTime = 0;
bky 10:8d86e59fb408 48
bky 10:8d86e59fb408 49 float velocity = 0;
bky 10:8d86e59fb408 50
bky 11:dd860c2e12ec 51 sendFloat(0);
bky 7:12eed49f95fc 52 while(1) {
bky 10:8d86e59fb408 53 currVoltReading = lightSensorVoltage.read();
bky 11:dd860c2e12ec 54 //printf("volt %f\n", currVoltReading);
bky 11:dd860c2e12ec 55 if(currVoltReading - prevVoltReading > 0.02) {
bky 10:8d86e59fb408 56 currTime = timer.read_ms();
bky 11:dd860c2e12ec 57 //printf("currTime %i\n", currTime);
bky 11:dd860c2e12ec 58 //printf("prevTime %i\n", prevTime);
bky 11:dd860c2e12ec 59 miliPerRotation = (currTime - prevTime) * NUM_HOLES;
bky 11:dd860c2e12ec 60 //printf("time diff %i\n", currTime - prevTime);
bky 11:dd860c2e12ec 61 //printf("MPRs %f\n", miliPerRotation);
bky 10:8d86e59fb408 62
bky 10:8d86e59fb408 63 prevTime = currTime;
bky 11:dd860c2e12ec 64 velocity = CIRCUMFRENCE_CM * 1000 / miliPerRotation;
bky 10:8d86e59fb408 65 }
bky 12:cb9118a081fa 66 sendFloat(velocity);
bky 11:dd860c2e12ec 67 //printf("velocity %f\n", velocity);
bky 10:8d86e59fb408 68 prevVoltReading = currVoltReading;
bky 12:cb9118a081fa 69 wait(0.05);
bky 7:12eed49f95fc 70 }
bky 10:8d86e59fb408 71 }