.

Dependencies:   Servo mbed

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?

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