.

Dependencies:   Servo mbed

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?

UserRevisionLine numberNew 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 }