OzerDrive / Mbed 2 deprecated mbed_blinky

Dependencies:   mbed Motor

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?

UserRevisionLine numberNew 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/