Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@13:a1a9f2282f15, 2020-12-01 (annotated)
- Committer:
- bky
- Date:
- Tue Dec 01 05:17:25 2020 +0000
- Revision:
- 13:a1a9f2282f15
- Parent:
- 12:cb9118a081fa
- Child:
- 14:8ceaa97cc85c
Unchanged velocity now is understood to be 0
Who changed what in which revision?
| User | Revision | Line number | New 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 | 13:a1a9f2282f15 | 49 | float currVelocity = 0; |
| bky | 13:a1a9f2282f15 | 50 | float prevVelocity = 0; |
| bky | 10:8d86e59fb408 | 51 | |
| bky | 11:dd860c2e12ec | 52 | sendFloat(0); |
| bky | 7:12eed49f95fc | 53 | while(1) { |
| bky | 10:8d86e59fb408 | 54 | currVoltReading = lightSensorVoltage.read(); |
| bky | 13:a1a9f2282f15 | 55 | |
| bky | 13:a1a9f2282f15 | 56 | prevVelocity = currVelocity; |
| bky | 13:a1a9f2282f15 | 57 | |
| bky | 11:dd860c2e12ec | 58 | //printf("volt %f\n", currVoltReading); |
| bky | 11:dd860c2e12ec | 59 | if(currVoltReading - prevVoltReading > 0.02) { |
| bky | 10:8d86e59fb408 | 60 | currTime = timer.read_ms(); |
| bky | 11:dd860c2e12ec | 61 | //printf("currTime %i\n", currTime); |
| bky | 11:dd860c2e12ec | 62 | //printf("prevTime %i\n", prevTime); |
| bky | 11:dd860c2e12ec | 63 | miliPerRotation = (currTime - prevTime) * NUM_HOLES; |
| bky | 11:dd860c2e12ec | 64 | //printf("time diff %i\n", currTime - prevTime); |
| bky | 11:dd860c2e12ec | 65 | //printf("MPRs %f\n", miliPerRotation); |
| bky | 10:8d86e59fb408 | 66 | |
| bky | 10:8d86e59fb408 | 67 | prevTime = currTime; |
| bky | 13:a1a9f2282f15 | 68 | currVelocity = CIRCUMFRENCE_CM * 1000 / miliPerRotation; |
| bky | 10:8d86e59fb408 | 69 | } |
| bky | 13:a1a9f2282f15 | 70 | |
| bky | 13:a1a9f2282f15 | 71 | if(currVelocity != 0 && currVelocity == prevVelocity) { |
| bky | 13:a1a9f2282f15 | 72 | currVelocity = 0; |
| bky | 13:a1a9f2282f15 | 73 | } |
| bky | 13:a1a9f2282f15 | 74 | |
| bky | 13:a1a9f2282f15 | 75 | sendFloat(currVelocity); |
| bky | 13:a1a9f2282f15 | 76 | |
| bky | 11:dd860c2e12ec | 77 | //printf("velocity %f\n", velocity); |
| bky | 10:8d86e59fb408 | 78 | prevVoltReading = currVoltReading; |
| bky | 12:cb9118a081fa | 79 | wait(0.05); |
| bky | 7:12eed49f95fc | 80 | } |
| bky | 10:8d86e59fb408 | 81 | } |
