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.
main.cpp@8:e0cd3bd2d051, 2019-05-01 (annotated)
- Committer:
- mksaga
- Date:
- Wed May 01 07:52:54 2019 +0000
- Revision:
- 8:e0cd3bd2d051
- Parent:
- 7:dbe5b06987d7
- Child:
- 9:a9d4cb88f0b0
adds support for sensors and valve activation method
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mksaga | 8:e0cd3bd2d051 | 1 | /** |
mksaga | 8:e0cd3bd2d051 | 2 | AUTO-PILLOW : ESE 350 Spring 2019 |
mksaga | 8:e0cd3bd2d051 | 3 | Fatih Ozer and Mohamed Aly |
mksaga | 8:e0cd3bd2d051 | 4 | idea from Dr. Nalaka |
mksaga | 8:e0cd3bd2d051 | 5 | |
mksaga | 8:e0cd3bd2d051 | 6 | last updated: 01 May 2019 |
mksaga | 8:e0cd3bd2d051 | 7 | */ |
mksaga | 8:e0cd3bd2d051 | 8 | |
fatiho | 0:572230252a64 | 9 | #include "mbed.h" |
mksaga | 3:7e158df628f1 | 10 | |
mksaga | 8:e0cd3bd2d051 | 11 | DigitalOut motor_pin_1(p23); |
mksaga | 8:e0cd3bd2d051 | 12 | DigitalOut motor_pin_2(p22); |
mksaga | 8:e0cd3bd2d051 | 13 | DigitalOut motor_enable(p21); |
mksaga | 8:e0cd3bd2d051 | 14 | |
mksaga | 8:e0cd3bd2d051 | 15 | DigitalOut solenoid1(p12); |
mksaga | 8:e0cd3bd2d051 | 16 | DigitalOut solenoid2(p11); |
mksaga | 8:e0cd3bd2d051 | 17 | DigitalOut solenoid3(p7); |
mksaga | 8:e0cd3bd2d051 | 18 | DigitalOut solenoid4(p5); |
mksaga | 8:e0cd3bd2d051 | 19 | |
mksaga | 8:e0cd3bd2d051 | 20 | AnalogIn flexN(p19); |
mksaga | 8:e0cd3bd2d051 | 21 | AnalogIn flexE(p16); |
mksaga | 8:e0cd3bd2d051 | 22 | AnalogIn flexS(p17); |
mksaga | 8:e0cd3bd2d051 | 23 | AnalogIn flexW(p20); |
mksaga | 8:e0cd3bd2d051 | 24 | AnalogIn flexC(p18); |
mksaga | 2:66ab94f69a1a | 25 | |
mksaga | 7:dbe5b06987d7 | 26 | void run_pump(int secs) |
mksaga | 7:dbe5b06987d7 | 27 | { |
mksaga | 7:dbe5b06987d7 | 28 | motor_enable = 1; |
mksaga | 7:dbe5b06987d7 | 29 | motor_pin_1 = 0; |
mksaga | 7:dbe5b06987d7 | 30 | motor_pin_2 = 1; |
mksaga | 7:dbe5b06987d7 | 31 | |
mksaga | 7:dbe5b06987d7 | 32 | int i = 0; |
mksaga | 8:e0cd3bd2d051 | 33 | while(i < secs * 105) { i++; wait_ms(10);}//printf("%d | ", i);} |
mksaga | 7:dbe5b06987d7 | 34 | motor_pin_2 = 0; |
mksaga | 6:8562953f94bf | 35 | } |
mksaga | 6:8562953f94bf | 36 | |
mksaga | 8:e0cd3bd2d051 | 37 | void open_v1() {solenoid1 = 1;} |
mksaga | 8:e0cd3bd2d051 | 38 | void seal_v1() {solenoid1 = 0;} |
mksaga | 8:e0cd3bd2d051 | 39 | |
mksaga | 8:e0cd3bd2d051 | 40 | void open_v2() {solenoid2 = 1;} |
mksaga | 8:e0cd3bd2d051 | 41 | void seal_v2() {solenoid2 = 0;} |
mksaga | 8:e0cd3bd2d051 | 42 | |
mksaga | 8:e0cd3bd2d051 | 43 | void open_v3() {solenoid3 = 1;} |
mksaga | 8:e0cd3bd2d051 | 44 | void seal_v3() {solenoid3 = 0;} |
mksaga | 8:e0cd3bd2d051 | 45 | |
mksaga | 8:e0cd3bd2d051 | 46 | void open_v4() {solenoid4 = 1;} |
mksaga | 8:e0cd3bd2d051 | 47 | void seal_v4() {solenoid4 = 0;} |
mksaga | 8:e0cd3bd2d051 | 48 | |
mksaga | 8:e0cd3bd2d051 | 49 | void activate_v(int id) { |
mksaga | 8:e0cd3bd2d051 | 50 | if (id == 1) { |
mksaga | 8:e0cd3bd2d051 | 51 | seal_v2();seal_v3();seal_v4();open_v1(); |
mksaga | 8:e0cd3bd2d051 | 52 | } else if (id == 2) { |
mksaga | 8:e0cd3bd2d051 | 53 | seal_v1();seal_v3();seal_v4();open_v2(); |
mksaga | 8:e0cd3bd2d051 | 54 | } else if (id == 3) { |
mksaga | 8:e0cd3bd2d051 | 55 | seal_v1();seal_v2();seal_v4();open_v3(); |
mksaga | 8:e0cd3bd2d051 | 56 | } else if (id == 4) { |
mksaga | 8:e0cd3bd2d051 | 57 | seal_v1();seal_v3();seal_v2();open_v4(); |
mksaga | 8:e0cd3bd2d051 | 58 | } |
mksaga | 8:e0cd3bd2d051 | 59 | } |
mksaga | 8:e0cd3bd2d051 | 60 | |
mksaga | 5:3b378e0659e9 | 61 | int main() { |
mksaga | 8:e0cd3bd2d051 | 62 | //run_pump(10); |
mksaga | 8:e0cd3bd2d051 | 63 | float fN; |
mksaga | 8:e0cd3bd2d051 | 64 | float fE; |
mksaga | 8:e0cd3bd2d051 | 65 | float fS; |
mksaga | 8:e0cd3bd2d051 | 66 | float fW; |
mksaga | 8:e0cd3bd2d051 | 67 | float fC; |
mksaga | 8:e0cd3bd2d051 | 68 | |
mksaga | 8:e0cd3bd2d051 | 69 | while(1) { |
mksaga | 8:e0cd3bd2d051 | 70 | /* |
mksaga | 8:e0cd3bd2d051 | 71 | open_v1();wait(1); |
mksaga | 8:e0cd3bd2d051 | 72 | seal_v1();wait(1); |
mksaga | 8:e0cd3bd2d051 | 73 | open_v2();wait(1); |
mksaga | 8:e0cd3bd2d051 | 74 | seal_v2();wait(1); |
mksaga | 8:e0cd3bd2d051 | 75 | open_v3();wait(1); |
mksaga | 8:e0cd3bd2d051 | 76 | seal_v3();wait(1); |
mksaga | 8:e0cd3bd2d051 | 77 | open_v4();wait(1); |
mksaga | 8:e0cd3bd2d051 | 78 | run_pump(5); |
mksaga | 8:e0cd3bd2d051 | 79 | seal_v4();wait(1); |
mksaga | 8:e0cd3bd2d051 | 80 | */ |
mksaga | 8:e0cd3bd2d051 | 81 | /* |
mksaga | 8:e0cd3bd2d051 | 82 | activate_v(1); |
mksaga | 8:e0cd3bd2d051 | 83 | run_pump(5); |
mksaga | 8:e0cd3bd2d051 | 84 | wait(1); |
mksaga | 8:e0cd3bd2d051 | 85 | */ |
mksaga | 8:e0cd3bd2d051 | 86 | |
mksaga | 8:e0cd3bd2d051 | 87 | //activate_v(4); |
mksaga | 8:e0cd3bd2d051 | 88 | /* |
mksaga | 8:e0cd3bd2d051 | 89 | open_v4(); |
mksaga | 8:e0cd3bd2d051 | 90 | wait(1); |
mksaga | 8:e0cd3bd2d051 | 91 | seal_v4(); |
mksaga | 8:e0cd3bd2d051 | 92 | wait(1); |
mksaga | 8:e0cd3bd2d051 | 93 | */ |
mksaga | 8:e0cd3bd2d051 | 94 | |
mksaga | 8:e0cd3bd2d051 | 95 | /* |
mksaga | 8:e0cd3bd2d051 | 96 | fN = flexN.read(); |
mksaga | 8:e0cd3bd2d051 | 97 | fE = flexE.read(); |
mksaga | 8:e0cd3bd2d051 | 98 | fS = flexS.read(); |
mksaga | 8:e0cd3bd2d051 | 99 | fW = flexW.read(); |
mksaga | 8:e0cd3bd2d051 | 100 | fC = flexC.read(); |
mksaga | 8:e0cd3bd2d051 | 101 | //wait(1); |
mksaga | 8:e0cd3bd2d051 | 102 | printf(" %1.2f\n", fN); |
mksaga | 8:e0cd3bd2d051 | 103 | printf("%1.2f %1.2f %1.2f\n", fW, fC, fE); |
mksaga | 8:e0cd3bd2d051 | 104 | printf(" %1.2f\n\n", fS); |
mksaga | 8:e0cd3bd2d051 | 105 | wait_ms(2000); |
mksaga | 8:e0cd3bd2d051 | 106 | */ |
mksaga | 8:e0cd3bd2d051 | 107 | //activate_v(1); |
mksaga | 8:e0cd3bd2d051 | 108 | //while(1) { run_pump(15); } |
mksaga | 8:e0cd3bd2d051 | 109 | |
mksaga | 8:e0cd3bd2d051 | 110 | for (int i=1; i<=4; i++) { |
mksaga | 8:e0cd3bd2d051 | 111 | activate_v(i); |
mksaga | 8:e0cd3bd2d051 | 112 | run_pump(5); |
mksaga | 8:e0cd3bd2d051 | 113 | wait(1); |
mksaga | 8:e0cd3bd2d051 | 114 | } |
mksaga | 8:e0cd3bd2d051 | 115 | |
mksaga | 8:e0cd3bd2d051 | 116 | |
mksaga | 8:e0cd3bd2d051 | 117 | |
mksaga | 8:e0cd3bd2d051 | 118 | } |
mksaga | 8:e0cd3bd2d051 | 119 | |
mksaga | 8:e0cd3bd2d051 | 120 | /* |
mksaga | 8:e0cd3bd2d051 | 121 | wait(5); |
mksaga | 8:e0cd3bd2d051 | 122 | open_v1(); |
mksaga | 8:e0cd3bd2d051 | 123 | run_pump(4); |
mksaga | 8:e0cd3bd2d051 | 124 | seal_v1(); |
mksaga | 8:e0cd3bd2d051 | 125 | run_pump(5); |
mksaga | 8:e0cd3bd2d051 | 126 | */ |
mksaga | 8:e0cd3bd2d051 | 127 | /* |
mksaga | 8:e0cd3bd2d051 | 128 | while(1) { |
mksaga | 8:e0cd3bd2d051 | 129 | solenoid = 1; |
mksaga | 8:e0cd3bd2d051 | 130 | wait(1); |
mksaga | 8:e0cd3bd2d051 | 131 | solenoid = 0; |
mksaga | 8:e0cd3bd2d051 | 132 | wait(1); |
mksaga | 8:e0cd3bd2d051 | 133 | printf("\nhere for barakah\n"); |
mksaga | 8:e0cd3bd2d051 | 134 | } |
mksaga | 8:e0cd3bd2d051 | 135 | */ |
mksaga | 8:e0cd3bd2d051 | 136 | printf("\nhere for barakah\n"); |
mksaga | 8:e0cd3bd2d051 | 137 | } |
mksaga | 8:e0cd3bd2d051 | 138 | |
mksaga | 8:e0cd3bd2d051 | 139 | //https://core-electronics.com.au/tutorials/solenoid-control-with-arduino.html |
mksaga | 8:e0cd3bd2d051 | 140 | //https://itp.nyu.edu/physcomp/labs/motors-and-transistors/dc-motor-control-using-an-h-bridge/ |