a simple code for elevator

Dependencies:   PinDetect mbed Servo

Committer:
kemken
Date:
Mon Jun 04 13:51:43 2012 +0000
Revision:
0:85829f7bbe62

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kemken 0:85829f7bbe62 1 /*
kemken 0:85829f7bbe62 2 * PROGRAM RESPONSIBLE FOR open/close door.
kemken 0:85829f7bbe62 3 * ^^^^^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^
kemken 0:85829f7bbe62 4 *
kemken 0:85829f7bbe62 5 * FILE NAME: speed.cpp
kemken 0:85829f7bbe62 6 * USAGE: program that control the speed of servo motor.
kemken 0:85829f7bbe62 7 */
kemken 0:85829f7bbe62 8
kemken 0:85829f7bbe62 9
kemken 0:85829f7bbe62 10 /*
kemken 0:85829f7bbe62 11 * including the wanted library files.
kemken 0:85829f7bbe62 12 */
kemken 0:85829f7bbe62 13 #include "mbed.h"
kemken 0:85829f7bbe62 14 #include "speed.h"
kemken 0:85829f7bbe62 15 #include "Servo.h"
kemken 0:85829f7bbe62 16
kemken 0:85829f7bbe62 17 /*--------------------------*\
kemken 0:85829f7bbe62 18 * defineding the variables*
kemken 0:85829f7bbe62 19 \*--------------------------*/
kemken 0:85829f7bbe62 20 float varying_speed;
kemken 0:85829f7bbe62 21 float speed_now;
kemken 0:85829f7bbe62 22 int delta_time;
kemken 0:85829f7bbe62 23
kemken 0:85829f7bbe62 24 Ticker motor_timer;/* using ticker class which repeatedly call a function*/
kemken 0:85829f7bbe62 25 Servo motor_speed(p26); // Servo PinName (pin)
kemken 0:85829f7bbe62 26
kemken 0:85829f7bbe62 27 void motor (float speed, int time) { // void FunctionName (speed between 0-1, time in mS)
kemken 0:85829f7bbe62 28 // function responsible of increasing or decreasing the speed of the elevator softly
kemken 0:85829f7bbe62 29 if (time) {
kemken 0:85829f7bbe62 30 varying_speed= (speed - speed_now)/float (time);
kemken 0:85829f7bbe62 31 delta_time=time;
kemken 0:85829f7bbe62 32 /*---- Print message: shows motor speed at this point ------------------------------------*/
kemken 0:85829f7bbe62 33 printf("Motor going to speed %f over %f seconds\n",speed,float(time)/1000);
kemken 0:85829f7bbe62 34 } else {
kemken 0:85829f7bbe62 35 motor_speed = speed;
kemken 0:85829f7bbe62 36 /*---- Print message: shows motor speed at this point ------------------------------------*/
kemken 0:85829f7bbe62 37 printf("Motor at speed %f now\n",speed);
kemken 0:85829f7bbe62 38 speed_now=speed;
kemken 0:85829f7bbe62 39 }
kemken 0:85829f7bbe62 40 }
kemken 0:85829f7bbe62 41
kemken 0:85829f7bbe62 42 void motor_update (void) { // function responsible of checking the speed is within servo rang (0-1)
kemken 0:85829f7bbe62 43 if (delta_time) {
kemken 0:85829f7bbe62 44
kemken 0:85829f7bbe62 45 speed_now = speed_now + varying_speed; // event at reverst direction, this formela is removing the minus (all the result is positive)
kemken 0:85829f7bbe62 46 /* putting the speed in rang between 0 to 1 */
kemken 0:85829f7bbe62 47 if (speed_now>1.0) {
kemken 0:85829f7bbe62 48 speed_now =1;
kemken 0:85829f7bbe62 49 }
kemken 0:85829f7bbe62 50 if (speed_now<0.0) {
kemken 0:85829f7bbe62 51 speed_now=0;
kemken 0:85829f7bbe62 52 }
kemken 0:85829f7bbe62 53 motor_speed=speed_now;
kemken 0:85829f7bbe62 54 delta_time--; // decrease the time by 1
kemken 0:85829f7bbe62 55 }
kemken 0:85829f7bbe62 56 }
kemken 0:85829f7bbe62 57
kemken 0:85829f7bbe62 58 void motor_start (void) {// a ticker function for the LED doors.
kemken 0:85829f7bbe62 59 speed_now = 0.5;
kemken 0:85829f7bbe62 60 motor_speed=speed_now; // stop the motor
kemken 0:85829f7bbe62 61 delta_time=0; // at 0S time
kemken 0:85829f7bbe62 62 motor_timer.attach(&motor_update,0.001);// repeatedly call "motor_update" function.
kemken 0:85829f7bbe62 63 }