E=MC
/
e=mc
.
main.cpp@3:7eaf505f811e, 2015-02-27 (annotated)
- Committer:
- ericoneill
- Date:
- Fri Feb 27 02:18:17 2015 +0000
- Revision:
- 3:7eaf505f811e
- Parent:
- 2:30ebae0d3e17
- Child:
- 4:263bddc51c0f
interrupts
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 | 3:7eaf505f811e | 7 | |
ericoneill | 3:7eaf505f811e | 8 | // encoder setup and variables |
ericoneill | 3:7eaf505f811e | 9 | InterruptIn interrupt(PTA13); |
ericoneill | 3:7eaf505f811e | 10 | int previous_val = -1; |
ericoneill | 1:8e5821dec0f7 | 11 | Timer t; |
ericoneill | 0:d328ecb3fbb1 | 12 | |
ericoneill | 0:d328ecb3fbb1 | 13 | |
ericoneill | 0:d328ecb3fbb1 | 14 | void servo_sweep(){ |
ericoneill | 0:d328ecb3fbb1 | 15 | for(float p = 0.001; p<0.002; p+=0.0001){ |
ericoneill | 0:d328ecb3fbb1 | 16 | servo.pulsewidth(p); |
ericoneill | 0:d328ecb3fbb1 | 17 | wait(0.5); |
ericoneill | 0:d328ecb3fbb1 | 18 | } |
ericoneill | 0:d328ecb3fbb1 | 19 | } |
ericoneill | 3:7eaf505f811e | 20 | void fallInterrupt(){ |
ericoneill | 3:7eaf505f811e | 21 | pc.printf("fall"); |
ericoneill | 3:7eaf505f811e | 22 | } |
ericoneill | 3:7eaf505f811e | 23 | void riseInterrupt(){ |
ericoneill | 3:7eaf505f811e | 24 | pc.printf("rise"); |
ericoneill | 3:7eaf505f811e | 25 | } |
ericoneill | 3:7eaf505f811e | 26 | |
ericoneill | 0:d328ecb3fbb1 | 27 | int main() { |
ericoneill | 0:d328ecb3fbb1 | 28 | servo.period(0.005); |
ericoneill | 0:d328ecb3fbb1 | 29 | motor.period(.0025); |
ericoneill | 3:7eaf505f811e | 30 | interrupt.fall(&fallInterrupt); |
ericoneill | 3:7eaf505f811e | 31 | interrupt.rise(&riseInterrupt); |
ericoneill | 3:7eaf505f811e | 32 | |
ericoneill | 1:8e5821dec0f7 | 33 | |
ericoneill | 1:8e5821dec0f7 | 34 | t.start(); |
ericoneill | 2:30ebae0d3e17 | 35 | int lastchange = 0; |
ericoneill | 3:7eaf505f811e | 36 | while(1){/* |
ericoneill | 1:8e5821dec0f7 | 37 | if(din) { |
ericoneill | 2:30ebae0d3e17 | 38 | if(previous_val != 1){ |
ericoneill | 2:30ebae0d3e17 | 39 | int current_time = t.read_ms(); |
ericoneill | 2:30ebae0d3e17 | 40 | int interval = current_time - lastchange; |
ericoneill | 2:30ebae0d3e17 | 41 | lastchange = current_time; |
ericoneill | 2:30ebae0d3e17 | 42 | pc.printf("light to dark time : %d\n\r", interval); |
ericoneill | 2:30ebae0d3e17 | 43 | previous_val = 1; |
ericoneill | 1:8e5821dec0f7 | 44 | } |
ericoneill | 1:8e5821dec0f7 | 45 | myled = 1; |
ericoneill | 2:30ebae0d3e17 | 46 | //pc.printf("dark"); |
ericoneill | 1:8e5821dec0f7 | 47 | } else { |
ericoneill | 2:30ebae0d3e17 | 48 | if(previous_val != 0){ |
ericoneill | 2:30ebae0d3e17 | 49 | int current_time = t.read_ms(); |
ericoneill | 2:30ebae0d3e17 | 50 | int interval = current_time - lastchange; |
ericoneill | 2:30ebae0d3e17 | 51 | lastchange = current_time; |
ericoneill | 2:30ebae0d3e17 | 52 | pc.printf("dark to light time : %d\n\r", interval); |
ericoneill | 2:30ebae0d3e17 | 53 | previous_val = 0; |
ericoneill | 2:30ebae0d3e17 | 54 | } |
ericoneill | 1:8e5821dec0f7 | 55 | myled = 0; |
ericoneill | 2:30ebae0d3e17 | 56 | //pc.printf("light"); |
ericoneill | 1:8e5821dec0f7 | 57 | } |
ericoneill | 3:7eaf505f811e | 58 | //wait(.2f); |
ericoneill | 3:7eaf505f811e | 59 | */ |
ericoneill | 2:30ebae0d3e17 | 60 | |
ericoneill | 2:30ebae0d3e17 | 61 | char choice = pc.getc(); |
ericoneill | 2:30ebae0d3e17 | 62 | pc.putc(choice); |
ericoneill | 2:30ebae0d3e17 | 63 | switch(choice){ |
ericoneill | 0:d328ecb3fbb1 | 64 | case '0': |
ericoneill | 0:d328ecb3fbb1 | 65 | motor.pulsewidth(0.0); |
ericoneill | 2:30ebae0d3e17 | 66 | pc.printf("0% \n\r"); |
ericoneill | 0:d328ecb3fbb1 | 67 | break; |
ericoneill | 0:d328ecb3fbb1 | 68 | case '1': |
ericoneill | 0:d328ecb3fbb1 | 69 | motor.pulsewidth(.0025); |
ericoneill | 2:30ebae0d3e17 | 70 | pc.printf("100% \n\r"); |
ericoneill | 0:d328ecb3fbb1 | 71 | break; |
ericoneill | 0:d328ecb3fbb1 | 72 | case '3': |
ericoneill | 0:d328ecb3fbb1 | 73 | motor.pulsewidth(.0025*.3); |
ericoneill | 2:30ebae0d3e17 | 74 | pc.printf("30% \n\r"); |
ericoneill | 0:d328ecb3fbb1 | 75 | break; |
ericoneill | 0:d328ecb3fbb1 | 76 | case '5': |
ericoneill | 0:d328ecb3fbb1 | 77 | motor.pulsewidth(.0025*.5); |
ericoneill | 2:30ebae0d3e17 | 78 | pc.printf("50% \n\r"); |
ericoneill | 0:d328ecb3fbb1 | 79 | break; |
ericoneill | 0:d328ecb3fbb1 | 80 | default: |
ericoneill | 0:d328ecb3fbb1 | 81 | motor.pulsewidth(.0025*.3); |
ericoneill | 2:30ebae0d3e17 | 82 | pc.printf("default\n\r"); |
ericoneill | 0:d328ecb3fbb1 | 83 | break; |
ericoneill | 0:d328ecb3fbb1 | 84 | } |
ericoneill | 3:7eaf505f811e | 85 | |
ericoneill | 0:d328ecb3fbb1 | 86 | //servo_sweep(); |
ericoneill | 0:d328ecb3fbb1 | 87 | //motor_sweep(); |
ericoneill | 0:d328ecb3fbb1 | 88 | //motor.pulsewidth(.0025); |
ericoneill | 0:d328ecb3fbb1 | 89 | } |
ericoneill | 0:d328ecb3fbb1 | 90 | } |