a simple code for elevator

Dependencies:   PinDetect mbed Servo

Revision:
0:85829f7bbe62
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/speed.cpp	Mon Jun 04 13:51:43 2012 +0000
@@ -0,0 +1,63 @@
+/*
+ * PROGRAM RESPONSIBLE FOR open/close door.
+ * ^^^^^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^
+ *
+ * FILE NAME: speed.cpp
+ * USAGE: program that control the speed of servo motor.
+ */
+
+
+/*
+* including the wanted library files.
+*/
+#include "mbed.h"
+#include "speed.h"
+#include "Servo.h"
+
+/*--------------------------*\
+ *  defineding the variables*
+\*--------------------------*/
+float varying_speed;
+float speed_now;
+int  delta_time;
+
+Ticker motor_timer;/* using ticker class which repeatedly call a function*/
+Servo motor_speed(p26); //     Servo PinName (pin)
+
+void motor (float speed, int time) { // void FunctionName (speed between 0-1, time in mS)
+// function responsible of increasing or decreasing the speed of the elevator softly
+    if (time) {
+        varying_speed= (speed - speed_now)/float (time);
+        delta_time=time;
+        /*---- Print message: shows motor speed at this point ------------------------------------*/
+        printf("Motor going to speed %f over %f seconds\n",speed,float(time)/1000);
+    } else {
+        motor_speed = speed;
+        /*---- Print message: shows motor speed at this point ------------------------------------*/
+        printf("Motor at speed %f now\n",speed);
+        speed_now=speed;
+    }
+}
+
+void motor_update (void) { // function responsible of checking the speed is within servo rang (0-1)
+    if (delta_time) {
+
+        speed_now = speed_now + varying_speed; // event at reverst direction, this formela is removing the minus (all the result is positive)
+        /* putting the speed in rang between 0 to 1 */
+        if (speed_now>1.0) {
+            speed_now =1;
+        }
+        if (speed_now<0.0) {
+            speed_now=0;
+        }
+        motor_speed=speed_now;
+        delta_time--; // decrease the time by 1
+    }
+}
+
+void motor_start (void) {// a ticker function for the LED doors.
+    speed_now = 0.5;
+    motor_speed=speed_now; // stop the motor
+    delta_time=0;          // at 0S time
+    motor_timer.attach(&motor_update,0.001);// repeatedly call "motor_update" function.
+}
\ No newline at end of file