Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of ESE519_Lab3 by
Revision 0:015087d61ca1, committed 2015-10-03
- Comitter:
- jfields
- Date:
- Sat Oct 03 00:02:31 2015 +0000
- Child:
- 1:e79ac0826624
- Commit message:
- first
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
| mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Sat Oct 03 00:02:31 2015 +0000
@@ -0,0 +1,147 @@
+#include "mbed.h"
+
+Serial pc(USBTX,USBRX);
+// functions
+void find_keys();
+Timer t;
+
+// init board
+PwmOut dc_motor(p26);
+PwmOut servo1(p25);
+PwmOut servo2(p24);
+DigitalOut in1(p14); // elevator direction
+DigitalOut in2(p13); // elevator direction
+AnalogIn IRSensor(p16); // read IR sensor
+//AnalogOut test(p18);
+
+// keyboard read
+DigitalIn col1(p20);
+DigitalIn col2(p19);
+DigitalIn col3(p18);
+DigitalOut row1(p30);
+DigitalOut row2(p27);
+
+DigitalOut ind1(LED1);
+DigitalOut ind2(LED2);
+DigitalOut ind3(LED3);
+DigitalOut ind4(LED4);
+
+
+// init vars
+float ADC_Voltage;
+float period = 0.02; // sec
+float dty_dc = 0.75; // PCT [0-100]
+float dty_servo_open = 0.1125; // PCT [3.75-11.25]
+float dty_servo_close = 0.0375; // PCT [3.75-11.25]
+int cur_floor = 1;
+int desired_floor = 1;
+int tperiod;
+
+int main() {
+
+ // set period (constant)
+ dc_motor.period(period);
+ // servo1.period(period);
+ // servo2.period(period);
+
+ // start with closed doors
+ // servo1.write(dty_servo_close);
+ //servo2.write(dty_servo_close);
+
+ // run elevator program
+ while(1) {
+
+
+ // check for key press
+ find_keys();
+
+ // check if need to move
+ if (cur_floor != desired_floor) {
+
+ // determine direction
+ if (cur_floor > desired_floor) { // move down
+ in1 = 0;
+ in2 = 1;
+ }
+ else { // move up
+ in1 = 1;
+ in2 = 0;
+ }
+
+ // start car
+ dc_motor.write(dty_dc);
+
+ // check IR sensors
+
+ while (cur_floor != desired_floor) {
+ // check IR emitter here!
+
+ while(!ADC_Voltage)
+ ADC_Voltage = IRSensor.read();
+
+ t.start();
+
+ while(ADC_Voltage)
+ ADC_Voltage = IRSensor.read();
+
+ t.stop();
+
+ tperiod = 2 * t.read_us();
+
+ t.reset();
+
+ if(tperiod > 9900 && tperiod < 10100)
+ cur_floor = 1;
+ else if(tperiod > 3900 && tperiod < 4100)
+ cur_floor = 2;
+ else if(tperiod > 1900 && tperiod < 2100)
+ cur_floor = 3;
+ else if(tperiod > 1300 && tperiod < 1500)
+ cur_floor = 4;
+ else if(tperiod > 900 && tperiod < 1100)
+ cur_floor = 5;
+
+ //pc.printf("%d", cur_floor);
+ //wait_ms(1000);
+ }
+ }
+
+ // stop car
+ dc_motor.write(0);
+
+ // }
+
+ // open door
+
+ // servo1.write(dty_servo_open);
+ // servo2.write(dty_servo_open);
+
+
+ }
+
+
+}
+
+void find_keys() {
+
+ // check row 1
+ row1 = 0;
+ row2 = 1;
+ if (!col1) {
+ desired_floor = 1;
+ }
+ if (!col2) {
+ desired_floor = 2;
+ }
+ if (!col3) {
+ desired_floor = 3;
+ }
+
+ // check row 2
+ row1 = 1;
+ row2 = 0;
+ if (!col1) {
+ desired_floor = 4;
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sat Oct 03 00:02:31 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/4f6c30876dfa \ No newline at end of file
