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.
Dependencies: HCSR04 HIDScope PID mbed
main.cpp@0:d3f432c5fb55, 2015-11-03 (annotated)
- Committer:
- emiedema
- Date:
- Tue Nov 03 14:42:26 2015 +0000
- Revision:
- 0:d3f432c5fb55
More awesomeness!
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| emiedema | 0:d3f432c5fb55 | 1 | #include "mbed.h" |
| emiedema | 0:d3f432c5fb55 | 2 | #include "PID.h" |
| emiedema | 0:d3f432c5fb55 | 3 | #include "hcsr04.h" |
| emiedema | 0:d3f432c5fb55 | 4 | //#include "HIDScope.h" |
| emiedema | 0:d3f432c5fb55 | 5 | |
| emiedema | 0:d3f432c5fb55 | 6 | //HIDScope scope(2); |
| emiedema | 0:d3f432c5fb55 | 7 | |
| emiedema | 0:d3f432c5fb55 | 8 | HCSR04 sensor(D2, D3); |
| emiedema | 0:d3f432c5fb55 | 9 | float distance = 0; |
| emiedema | 0:d3f432c5fb55 | 10 | |
| emiedema | 0:d3f432c5fb55 | 11 | PwmOut speedPin(D5); |
| emiedema | 0:d3f432c5fb55 | 12 | DigitalOut dirPin(D4); |
| emiedema | 0:d3f432c5fb55 | 13 | |
| emiedema | 0:d3f432c5fb55 | 14 | const float dt = 0.001; |
| emiedema | 0:d3f432c5fb55 | 15 | PID controller(-5, 0, 0.00001, dt); |
| emiedema | 0:d3f432c5fb55 | 16 | Ticker controlLoop; |
| emiedema | 0:d3f432c5fb55 | 17 | //Ticker scopeTicker; |
| emiedema | 0:d3f432c5fb55 | 18 | |
| emiedema | 0:d3f432c5fb55 | 19 | void control() { |
| emiedema | 0:d3f432c5fb55 | 20 | // scope.set(0,distance); |
| emiedema | 0:d3f432c5fb55 | 21 | controller.setProcessValue(distance); |
| emiedema | 0:d3f432c5fb55 | 22 | controller.setSetPoint(20); |
| emiedema | 0:d3f432c5fb55 | 23 | double speed = controller.compute(); |
| emiedema | 0:d3f432c5fb55 | 24 | // scope.set(1,speed); |
| emiedema | 0:d3f432c5fb55 | 25 | if (speed > 0) { |
| emiedema | 0:d3f432c5fb55 | 26 | dirPin.write(1); |
| emiedema | 0:d3f432c5fb55 | 27 | speedPin.write(speed); |
| emiedema | 0:d3f432c5fb55 | 28 | } else { |
| emiedema | 0:d3f432c5fb55 | 29 | dirPin.write(0); |
| emiedema | 0:d3f432c5fb55 | 30 | speedPin.write(speed * -1); |
| emiedema | 0:d3f432c5fb55 | 31 | } |
| emiedema | 0:d3f432c5fb55 | 32 | } |
| emiedema | 0:d3f432c5fb55 | 33 | |
| emiedema | 0:d3f432c5fb55 | 34 | int main() |
| emiedema | 0:d3f432c5fb55 | 35 | { |
| emiedema | 0:d3f432c5fb55 | 36 | controller.setInputLimits(5, 50); |
| emiedema | 0:d3f432c5fb55 | 37 | controller.setOutputLimits(-1,1); |
| emiedema | 0:d3f432c5fb55 | 38 | controller.setBias(0); |
| emiedema | 0:d3f432c5fb55 | 39 | controller.setMode(AUTO_MODE); |
| emiedema | 0:d3f432c5fb55 | 40 | |
| emiedema | 0:d3f432c5fb55 | 41 | // scopeTicker.attach_us(&scope, &HIDScope::send, 2e4); |
| emiedema | 0:d3f432c5fb55 | 42 | controlLoop.attach(&control, dt); |
| emiedema | 0:d3f432c5fb55 | 43 | while (true) { |
| emiedema | 0:d3f432c5fb55 | 44 | distance = sensor.distance(); |
| emiedema | 0:d3f432c5fb55 | 45 | } |
| emiedema | 0:d3f432c5fb55 | 46 | } |