Brendon Ky / Mbed 2 deprecated cs_335_speedometer

Dependencies:   mbed mbed-rtos

Committer:
bky
Date:
Tue Dec 01 02:05:33 2020 +0000
Revision:
10:8d86e59fb408
Parent:
9:b7e8d0372f53
Child:
11:dd860c2e12ec
implemented timer and velocity calculations

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 10:8d86e59fb408 6
bky 10:8d86e59fb408 7 # define NUM_HOLES 32
bky 10:8d86e59fb408 8 # define CIRCUMFRENCE_CM 48.6946861
bky 9:b7e8d0372f53 9
bky 9:b7e8d0372f53 10 # define LIGHT_SENSOR_PIN p15
bky 10:8d86e59fb408 11 # define FLASH_THRESHOLD 0.93
bky 9:b7e8d0372f53 12
bky 9:b7e8d0372f53 13
bky 9:b7e8d0372f53 14 AnalogIn lightSensorVoltage(LIGHT_SENSOR_PIN);
bky 9:b7e8d0372f53 15 Serial pc(USBTX, USBRX);
bky 0:d724bf9c4031 16
bky 0:d724bf9c4031 17 DigitalOut myled(LED1);
bky 0:d724bf9c4031 18
bky 10:8d86e59fb408 19 int lastFlash = 0;
bky 10:8d86e59fb408 20 float prevVoltReading = 0.0;
bky 10:8d86e59fb408 21 float currVoltReading = 0.0;
bky 10:8d86e59fb408 22 float rotationsPerMili = 0.0;
bky 9:b7e8d0372f53 23
bky 9:b7e8d0372f53 24 void sendFloat(float value) {
bky 9:b7e8d0372f53 25 for (int i=0; i<4; i++)
bky 9:b7e8d0372f53 26 pc.putc(*(((char*) &value)+i));
bky 9:b7e8d0372f53 27 }
bky 9:b7e8d0372f53 28
bky 0:d724bf9c4031 29 int main() {
bky 10:8d86e59fb408 30 Timer timer;
bky 10:8d86e59fb408 31 timer.start();
bky 10:8d86e59fb408 32 int currTime = 0;
bky 10:8d86e59fb408 33 int prevTime = 0;
bky 10:8d86e59fb408 34
bky 10:8d86e59fb408 35 float velocity = 0;
bky 10:8d86e59fb408 36
bky 7:12eed49f95fc 37 while(1) {
bky 10:8d86e59fb408 38 currVoltReading = lightSensorVoltage.read();
bky 10:8d86e59fb408 39 if(prevVoltReading < FLASH_THRESHOLD && currVoltReading >= FLASH_THRESHOLD) {
bky 10:8d86e59fb408 40 currTime = timer.read_ms();
bky 10:8d86e59fb408 41 rotationsPerMili = (currTime - prevTime) / NUM_HOLES;
bky 10:8d86e59fb408 42
bky 10:8d86e59fb408 43 prevTime = currTime;
bky 10:8d86e59fb408 44 velocity = CIRCUMFRENCE_CM * rotationsPerMili * 1000;
bky 10:8d86e59fb408 45 }
bky 10:8d86e59fb408 46
bky 10:8d86e59fb408 47 prevVoltReading = currVoltReading;
bky 10:8d86e59fb408 48
bky 10:8d86e59fb408 49 sendFloat(velocity);
bky 10:8d86e59fb408 50 wait(0.05);
bky 7:12eed49f95fc 51 }
bky 10:8d86e59fb408 52 }