a simple code for elevator
Dependencies: PinDetect mbed Servo
LED.cpp@0:85829f7bbe62, 2012-06-04 (annotated)
- Committer:
- kemken
- Date:
- Mon Jun 04 13:51:43 2012 +0000
- Revision:
- 0:85829f7bbe62
Who changed what in which revision?
User | Revision | Line number | New 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: LED.cpp |
kemken | 0:85829f7bbe62 | 6 | * USAGE: program that control 16 LED's that indicate the position of the doors. |
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 "LED.h" |
kemken | 0:85829f7bbe62 | 15 | #include "main.h" |
kemken | 0:85829f7bbe62 | 16 | |
kemken | 0:85829f7bbe62 | 17 | /*--------------------------*\ |
kemken | 0:85829f7bbe62 | 18 | * defineding the variables* |
kemken | 0:85829f7bbe62 | 19 | \*--------------------------*/ |
kemken | 0:85829f7bbe62 | 20 | int floor_level; |
kemken | 0:85829f7bbe62 | 21 | int LED_order; |
kemken | 0:85829f7bbe62 | 22 | |
kemken | 0:85829f7bbe62 | 23 | DigitalOut latch(p8); // control a digital output pin.. |
kemken | 0:85829f7bbe62 | 24 | |
kemken | 0:85829f7bbe62 | 25 | SPI spi(p5, p6, p7); // SPI bus master; mosi, miso, sclk. |
kemken | 0:85829f7bbe62 | 26 | Ticker door_timer; /* using ticker class which repeatedly call a function*/ |
kemken | 0:85829f7bbe62 | 27 | |
kemken | 0:85829f7bbe62 | 28 | void open_close_doors ( int f) { // a function that defined the number of elements and selecting a floor |
kemken | 0:85829f7bbe62 | 29 | floor_level=f; // for selecting the wanted floor (0, 1) |
kemken | 0:85829f7bbe62 | 30 | LED_order=28; // max. number of the elements |
kemken | 0:85829f7bbe62 | 31 | } |
kemken | 0:85829f7bbe62 | 32 | |
kemken | 0:85829f7bbe62 | 33 | void doors (void) { // a function responsible of turning the LEDs on/off |
kemken | 0:85829f7bbe62 | 34 | if (LED_order) { |
kemken | 0:85829f7bbe62 | 35 | spi.write(door_light[floor_level][--LED_order]); //Write to the SPI Slave; Send the command. |
kemken | 0:85829f7bbe62 | 36 | latch=1;// Deselect the device |
kemken | 0:85829f7bbe62 | 37 | latch=0;// Select the device by seting chip select low |
kemken | 0:85829f7bbe62 | 38 | if (LED_order==0) // when the LED order reach 0, a new event will be called (timeout) |
kemken | 0:85829f7bbe62 | 39 | new_event(timeout); |
kemken | 0:85829f7bbe62 | 40 | } |
kemken | 0:85829f7bbe62 | 41 | } |
kemken | 0:85829f7bbe62 | 42 | |
kemken | 0:85829f7bbe62 | 43 | void doors_start (void) {// a ticker function for the LED doors. |
kemken | 0:85829f7bbe62 | 44 | spi.format(16,0); |
kemken | 0:85829f7bbe62 | 45 | latch =0;// Select the device by seting chip select low |
kemken | 0:85829f7bbe62 | 46 | spi.write(0xFFFF); //Write to the SPI Slave; Send (0xFFFF)the command. |
kemken | 0:85829f7bbe62 | 47 | latch=1;// Deselect the device |
kemken | 0:85829f7bbe62 | 48 | latch=0; |
kemken | 0:85829f7bbe62 | 49 | LED_order=0; |
kemken | 0:85829f7bbe62 | 50 | door_timer.attach(&doors,0.2);// repeatedly call "doors" function. |
kemken | 0:85829f7bbe62 | 51 | } |