Operates two RC servos moving in windshield wiper-like fashion while simultaneously running a DC motor in forward and reverse in sequence with the servos.

Dependencies:   Motor Servo mbed

Committer:
mamaleoni
Date:
Thu Feb 26 13:41:45 2015 +0000
Revision:
0:34bcf10d435c
no changes made

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mamaleoni 0:34bcf10d435c 1 /*************************************************************
mamaleoni 0:34bcf10d435c 2 PROGRAM NAME: SY202 mbed Lab 07 Part C
mamaleoni 0:34bcf10d435c 3
mamaleoni 0:34bcf10d435c 4 DESCRIPTION: The following program operates two RC servo
mamaleoni 0:34bcf10d435c 5 motors moving in windshield wiper-like fashion
mamaleoni 0:34bcf10d435c 6 while simultaneously powering a DC motor in
mamaleoni 0:34bcf10d435c 7 forward and reverse.
mamaleoni 0:34bcf10d435c 8
mamaleoni 0:34bcf10d435c 9 CREATED BY: MIDN 3/C Jordan DiPaola
mamaleoni 0:34bcf10d435c 10
mamaleoni 0:34bcf10d435c 11 Library provided by mbed.org
mamaleoni 0:34bcf10d435c 12
mamaleoni 0:34bcf10d435c 13 SOURCES: SY202 Lecture presentations and mbed cookbook for
mamaleoni 0:34bcf10d435c 14 general code structure
mamaleoni 0:34bcf10d435c 15 *************************************************************/
mamaleoni 0:34bcf10d435c 16
mamaleoni 0:34bcf10d435c 17 /**********required includes and initial declarations**********/
mamaleoni 0:34bcf10d435c 18
mamaleoni 0:34bcf10d435c 19 //required includes with motor declarations
mamaleoni 0:34bcf10d435c 20 #include "mbed.h"
mamaleoni 0:34bcf10d435c 21 #include "Motor.h"
mamaleoni 0:34bcf10d435c 22
mamaleoni 0:34bcf10d435c 23 //Motor declaration
mamaleoni 0:34bcf10d435c 24 Motor dcmotor(p23, p24, p25);
mamaleoni 0:34bcf10d435c 25
mamaleoni 0:34bcf10d435c 26 //required includes with servo declarations
mamaleoni 0:34bcf10d435c 27 #include "Servo.h"
mamaleoni 0:34bcf10d435c 28
mamaleoni 0:34bcf10d435c 29 //serial declaration
mamaleoni 0:34bcf10d435c 30 Serial pc(USBTX, USBRX);
mamaleoni 0:34bcf10d435c 31 Servo myServo1(p21);
mamaleoni 0:34bcf10d435c 32 Servo myServo2(p22);
mamaleoni 0:34bcf10d435c 33
mamaleoni 0:34bcf10d435c 34 /**********main function**********/
mamaleoni 0:34bcf10d435c 35
mamaleoni 0:34bcf10d435c 36 int main()
mamaleoni 0:34bcf10d435c 37 { //calibrate both servos for PW of
mamaleoni 0:34bcf10d435c 38 //0.0018 and a full range of
mamaleoni 0:34bcf10d435c 39 //motion approximately 180 degrees
mamaleoni 0:34bcf10d435c 40 myServo1.calibrate(0.0009, 90);
mamaleoni 0:34bcf10d435c 41 myServo2.calibrate(0.0009, 90);
mamaleoni 0:34bcf10d435c 42
mamaleoni 0:34bcf10d435c 43 //declare initial servo positions
mamaleoni 0:34bcf10d435c 44 myServo1 = 0.0;
mamaleoni 0:34bcf10d435c 45 myServo2 = 1.0;
mamaleoni 0:34bcf10d435c 46
mamaleoni 0:34bcf10d435c 47 //initialize servo position values and motor speed
mamaleoni 0:34bcf10d435c 48 float pos1 = 1.0;
mamaleoni 0:34bcf10d435c 49 float pos2 = 0.0;
mamaleoni 0:34bcf10d435c 50 float i = 0.2;
mamaleoni 0:34bcf10d435c 51
mamaleoni 0:34bcf10d435c 52 while(1) {
mamaleoni 0:34bcf10d435c 53 //for the servos in forward
mamaleoni 0:34bcf10d435c 54 //and the motor running forward
mamaleoni 0:34bcf10d435c 55 while(pos1 >= 0 && pos2 <= 1) {
mamaleoni 0:34bcf10d435c 56
mamaleoni 0:34bcf10d435c 57 pos1 -= 0.0025;
mamaleoni 0:34bcf10d435c 58 pos2 += 0.0025;
mamaleoni 0:34bcf10d435c 59
mamaleoni 0:34bcf10d435c 60 myServo1 = pos1;
mamaleoni 0:34bcf10d435c 61 myServo2 = pos2;
mamaleoni 0:34bcf10d435c 62
mamaleoni 0:34bcf10d435c 63 dcmotor.speed(i);
mamaleoni 0:34bcf10d435c 64 //time increments to result
mamaleoni 0:34bcf10d435c 65 //in 5 sec total for this sequence
mamaleoni 0:34bcf10d435c 66 wait(0.0125);
mamaleoni 0:34bcf10d435c 67
mamaleoni 0:34bcf10d435c 68 }
mamaleoni 0:34bcf10d435c 69 //for the servos in reverse
mamaleoni 0:34bcf10d435c 70 //and the motor running reverse
mamaleoni 0:34bcf10d435c 71 while(pos1 <= 1 && pos2 >= 0) {
mamaleoni 0:34bcf10d435c 72 pos1 += 0.0025;
mamaleoni 0:34bcf10d435c 73 pos2 -= 0.0025;
mamaleoni 0:34bcf10d435c 74
mamaleoni 0:34bcf10d435c 75 myServo1 = pos1;
mamaleoni 0:34bcf10d435c 76 myServo2 = pos2;
mamaleoni 0:34bcf10d435c 77
mamaleoni 0:34bcf10d435c 78 dcmotor.speed(i * (-1.0));
mamaleoni 0:34bcf10d435c 79 //time increments to result
mamaleoni 0:34bcf10d435c 80 //in 5 sec total for this sequence
mamaleoni 0:34bcf10d435c 81 wait(0.0125);
mamaleoni 0:34bcf10d435c 82 }
mamaleoni 0:34bcf10d435c 83 //increment the motor speed
mamaleoni 0:34bcf10d435c 84 //before next while-loop-sequence
mamaleoni 0:34bcf10d435c 85 if(i <= 1) {
mamaleoni 0:34bcf10d435c 86 i = i + 0.1;
mamaleoni 0:34bcf10d435c 87 }
mamaleoni 0:34bcf10d435c 88 }
mamaleoni 0:34bcf10d435c 89 }