E=MC
/
e=mc
.
main.cpp@2:30ebae0d3e17, 2015-02-27 (annotated)
- Committer:
- ericoneill
- Date:
- Fri Feb 27 00:53:21 2015 +0000
- Revision:
- 2:30ebae0d3e17
- Parent:
- 1:8e5821dec0f7
- Child:
- 3:7eaf505f811e
timing edges
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ericoneill | 0:d328ecb3fbb1 | 1 | #include "mbed.h" |
ericoneill | 0:d328ecb3fbb1 | 2 | |
ericoneill | 0:d328ecb3fbb1 | 3 | DigitalOut myled(LED1); |
ericoneill | 0:d328ecb3fbb1 | 4 | PwmOut servo(PTA5); |
ericoneill | 0:d328ecb3fbb1 | 5 | PwmOut motor(PTA4); |
ericoneill | 0:d328ecb3fbb1 | 6 | Serial pc(USBTX, USBRX); // tx, rx |
ericoneill | 1:8e5821dec0f7 | 7 | DigitalIn din(PTA13); |
ericoneill | 1:8e5821dec0f7 | 8 | Timer t; |
ericoneill | 0:d328ecb3fbb1 | 9 | |
ericoneill | 0:d328ecb3fbb1 | 10 | void motor_sweep() { |
ericoneill | 0:d328ecb3fbb1 | 11 | for(float p = 0.0; p<.0025; p+=.0001){ |
ericoneill | 0:d328ecb3fbb1 | 12 | motor.pulsewidth(p); |
ericoneill | 0:d328ecb3fbb1 | 13 | if(p == 0.0 || p == 1.0 || p == .0007){ |
ericoneill | 0:d328ecb3fbb1 | 14 | wait(2); |
ericoneill | 0:d328ecb3fbb1 | 15 | } |
ericoneill | 0:d328ecb3fbb1 | 16 | wait(.1); |
ericoneill | 0:d328ecb3fbb1 | 17 | } |
ericoneill | 0:d328ecb3fbb1 | 18 | } |
ericoneill | 0:d328ecb3fbb1 | 19 | |
ericoneill | 0:d328ecb3fbb1 | 20 | void servo_sweep(){ |
ericoneill | 0:d328ecb3fbb1 | 21 | for(float p = 0.001; p<0.002; p+=0.0001){ |
ericoneill | 0:d328ecb3fbb1 | 22 | servo.pulsewidth(p); |
ericoneill | 0:d328ecb3fbb1 | 23 | wait(0.5); |
ericoneill | 0:d328ecb3fbb1 | 24 | } |
ericoneill | 0:d328ecb3fbb1 | 25 | } |
ericoneill | 0:d328ecb3fbb1 | 26 | |
ericoneill | 0:d328ecb3fbb1 | 27 | int main() { |
ericoneill | 0:d328ecb3fbb1 | 28 | servo.period(0.005); |
ericoneill | 0:d328ecb3fbb1 | 29 | motor.period(.0025); |
ericoneill | 1:8e5821dec0f7 | 30 | int previous_val = -1; |
ericoneill | 1:8e5821dec0f7 | 31 | |
ericoneill | 1:8e5821dec0f7 | 32 | t.start(); |
ericoneill | 2:30ebae0d3e17 | 33 | int lastchange = 0; |
ericoneill | 0:d328ecb3fbb1 | 34 | while(1){ |
ericoneill | 1:8e5821dec0f7 | 35 | if(din) { |
ericoneill | 2:30ebae0d3e17 | 36 | if(previous_val != 1){ |
ericoneill | 2:30ebae0d3e17 | 37 | int current_time = t.read_ms(); |
ericoneill | 2:30ebae0d3e17 | 38 | int interval = current_time - lastchange; |
ericoneill | 2:30ebae0d3e17 | 39 | lastchange = current_time; |
ericoneill | 2:30ebae0d3e17 | 40 | pc.printf("light to dark time : %d\n\r", interval); |
ericoneill | 2:30ebae0d3e17 | 41 | previous_val = 1; |
ericoneill | 1:8e5821dec0f7 | 42 | } |
ericoneill | 1:8e5821dec0f7 | 43 | myled = 1; |
ericoneill | 2:30ebae0d3e17 | 44 | //pc.printf("dark"); |
ericoneill | 1:8e5821dec0f7 | 45 | } else { |
ericoneill | 2:30ebae0d3e17 | 46 | if(previous_val != 0){ |
ericoneill | 2:30ebae0d3e17 | 47 | int current_time = t.read_ms(); |
ericoneill | 2:30ebae0d3e17 | 48 | int interval = current_time - lastchange; |
ericoneill | 2:30ebae0d3e17 | 49 | lastchange = current_time; |
ericoneill | 2:30ebae0d3e17 | 50 | pc.printf("dark to light time : %d\n\r", interval); |
ericoneill | 2:30ebae0d3e17 | 51 | previous_val = 0; |
ericoneill | 2:30ebae0d3e17 | 52 | } |
ericoneill | 1:8e5821dec0f7 | 53 | myled = 0; |
ericoneill | 2:30ebae0d3e17 | 54 | //pc.printf("light"); |
ericoneill | 1:8e5821dec0f7 | 55 | } |
ericoneill | 1:8e5821dec0f7 | 56 | wait(.2f); |
ericoneill | 2:30ebae0d3e17 | 57 | |
ericoneill | 2:30ebae0d3e17 | 58 | char choice = pc.getc(); |
ericoneill | 2:30ebae0d3e17 | 59 | pc.putc(choice); |
ericoneill | 2:30ebae0d3e17 | 60 | switch(choice){ |
ericoneill | 0:d328ecb3fbb1 | 61 | case '0': |
ericoneill | 0:d328ecb3fbb1 | 62 | motor.pulsewidth(0.0); |
ericoneill | 2:30ebae0d3e17 | 63 | pc.printf("0% \n\r"); |
ericoneill | 0:d328ecb3fbb1 | 64 | break; |
ericoneill | 0:d328ecb3fbb1 | 65 | case '1': |
ericoneill | 0:d328ecb3fbb1 | 66 | motor.pulsewidth(.0025); |
ericoneill | 2:30ebae0d3e17 | 67 | pc.printf("100% \n\r"); |
ericoneill | 0:d328ecb3fbb1 | 68 | break; |
ericoneill | 0:d328ecb3fbb1 | 69 | case '3': |
ericoneill | 0:d328ecb3fbb1 | 70 | motor.pulsewidth(.0025*.3); |
ericoneill | 2:30ebae0d3e17 | 71 | pc.printf("30% \n\r"); |
ericoneill | 0:d328ecb3fbb1 | 72 | break; |
ericoneill | 0:d328ecb3fbb1 | 73 | case '5': |
ericoneill | 0:d328ecb3fbb1 | 74 | motor.pulsewidth(.0025*.5); |
ericoneill | 2:30ebae0d3e17 | 75 | pc.printf("50% \n\r"); |
ericoneill | 0:d328ecb3fbb1 | 76 | break; |
ericoneill | 0:d328ecb3fbb1 | 77 | default: |
ericoneill | 0:d328ecb3fbb1 | 78 | motor.pulsewidth(.0025*.3); |
ericoneill | 2:30ebae0d3e17 | 79 | pc.printf("default\n\r"); |
ericoneill | 0:d328ecb3fbb1 | 80 | break; |
ericoneill | 0:d328ecb3fbb1 | 81 | } |
ericoneill | 2:30ebae0d3e17 | 82 | |
ericoneill | 0:d328ecb3fbb1 | 83 | //servo_sweep(); |
ericoneill | 0:d328ecb3fbb1 | 84 | //motor_sweep(); |
ericoneill | 0:d328ecb3fbb1 | 85 | //motor.pulsewidth(.0025); |
ericoneill | 0:d328ecb3fbb1 | 86 | } |
ericoneill | 0:d328ecb3fbb1 | 87 | } |