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@12:cb9118a081fa, 2020-12-01 (annotated)
- 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?
| 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 | 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 | } | 
