Ascensor: -ultrasonido -motorres

Dependencies:   DebouncedIn HCSR04 mbed

Committer:
aftorob
Date:
Thu Jun 07 18:53:31 2018 +0000
Revision:
0:4f72e674f36d
v1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aftorob 0:4f72e674f36d 1 #include "mbed.h"
aftorob 0:4f72e674f36d 2 #include "DebouncedIn.h"
aftorob 0:4f72e674f36d 3 #include "hcsr04.h"
aftorob 0:4f72e674f36d 4
aftorob 0:4f72e674f36d 5 DigitalIn B_stop(PTC8); //Boton de paro de emergencia
aftorob 0:4f72e674f36d 6 DigitalIn B_close(PTC9); //Boton “Cerrar” de la cabina
aftorob 0:4f72e674f36d 7 DigitalIn B_open(PTA13); //Boton “Abrir” de la cabina
aftorob 0:4f72e674f36d 8
aftorob 0:4f72e674f36d 9 DigitalIn B_c1(PTB1); //Boton "1" de la cabina
aftorob 0:4f72e674f36d 10 DigitalIn B_c2(PTB0); //Boton "2" de la cabina
aftorob 0:4f72e674f36d 11 DigitalIn B_c3(PTA5); //Boton "3" de la cabina
aftorob 0:4f72e674f36d 12
aftorob 0:4f72e674f36d 13 DigitalIn B_p1(PTB2); //Boton piso 1
aftorob 0:4f72e674f36d 14 DigitalIn B_p3(PTC1); //Boton piso 3
aftorob 0:4f72e674f36d 15 DigitalIn B_p2u(PTB3); //Boton piso 2 arriba
aftorob 0:4f72e674f36d 16 DigitalIn B_p2d(PTC2); //Boton piso 2 abajo
aftorob 0:4f72e674f36d 17
aftorob 0:4f72e674f36d 18 PwmOut S_1(PTD2); //Servomotor piso 1
aftorob 0:4f72e674f36d 19 PwmOut S_2(PTD0); //Servomotor piso 2
aftorob 0:4f72e674f36d 20 PwmOut S_3(PTD5); //Servomotor piso 3
aftorob 0:4f72e674f36d 21
aftorob 0:4f72e674f36d 22 PwmOut Motor_en(PTA12); //Motor enable
aftorob 0:4f72e674f36d 23 DigitalOut Motor_up(PTD4); //Motor arriba
aftorob 0:4f72e674f36d 24 DigitalOut Motor_down(PTA4); //Motor abajo
aftorob 0:4f72e674f36d 25
aftorob 0:4f72e674f36d 26 DigitalOut Trigger(PTD3); //Trigger Ultrasonido
aftorob 0:4f72e674f36d 27 DigitalIn Echo(PTD1); //Echo ultrasonido
aftorob 0:4f72e674f36d 28 DigitalOut myled(LED1); //monitor trigger
aftorob 0:4f72e674f36d 29 DigitalOut myled2(LED2); //monitor echo
aftorob 0:4f72e674f36d 30
aftorob 0:4f72e674f36d 31 Serial pc(PTA2, PTA1);
aftorob 0:4f72e674f36d 32
aftorob 0:4f72e674f36d 33 int distance = 0;
aftorob 0:4f72e674f36d 34 int correction = 0;
aftorob 0:4f72e674f36d 35 Timer sonar;
aftorob 0:4f72e674f36d 36
aftorob 0:4f72e674f36d 37 int sensordist(void);
aftorob 0:4f72e674f36d 38 void comp(int dmeasured);
aftorob 0:4f72e674f36d 39
aftorob 0:4f72e674f36d 40 int main(){
aftorob 0:4f72e674f36d 41 sonar.reset();
aftorob 0:4f72e674f36d 42 sonar.start();
aftorob 0:4f72e674f36d 43 while(Echo == 2){};
aftorob 0:4f72e674f36d 44 myled=0;
aftorob 0:4f72e674f36d 45 sonar.stop();
aftorob 0:4f72e674f36d 46 correction = sonar.read_us();
aftorob 0:4f72e674f36d 47
aftorob 0:4f72e674f36d 48 while(true){
aftorob 0:4f72e674f36d 49
aftorob 0:4f72e674f36d 50 int d = sensordist();
aftorob 0:4f72e674f36d 51 comp(d);
aftorob 0:4f72e674f36d 52 wait_ms(50);
aftorob 0:4f72e674f36d 53
aftorob 0:4f72e674f36d 54 while((B_p2u == 0)){
aftorob 0:4f72e674f36d 55 pc.printf("u");
aftorob 0:4f72e674f36d 56 Motor_up = 1;
aftorob 0:4f72e674f36d 57 Motor_down = 0;
aftorob 0:4f72e674f36d 58 Motor_en.period_ms(50);
aftorob 0:4f72e674f36d 59 Motor_en.pulsewidth_us(4000);
aftorob 0:4f72e674f36d 60 }
aftorob 0:4f72e674f36d 61 while((B_p2d == 0)){
aftorob 0:4f72e674f36d 62 pc.printf("d");
aftorob 0:4f72e674f36d 63 Motor_up = 0;
aftorob 0:4f72e674f36d 64 Motor_down = 1;
aftorob 0:4f72e674f36d 65 Motor_en.period_ms(50);
aftorob 0:4f72e674f36d 66 Motor_en.pulsewidth_us(1000);
aftorob 0:4f72e674f36d 67 }
aftorob 0:4f72e674f36d 68 if ((B_p2u == 1) && (B_p2d == 1)){
aftorob 0:4f72e674f36d 69 pc.printf("p");
aftorob 0:4f72e674f36d 70 Motor_up = 0;
aftorob 0:4f72e674f36d 71 Motor_down = 0;
aftorob 0:4f72e674f36d 72 }
aftorob 0:4f72e674f36d 73
aftorob 0:4f72e674f36d 74 wait_ms(500);
aftorob 0:4f72e674f36d 75
aftorob 0:4f72e674f36d 76 /*if((B_p1 == 0) || (B_c1 == 0)){
aftorob 0:4f72e674f36d 77 pc.printf("1");
aftorob 0:4f72e674f36d 78 wait(1);
aftorob 0:4f72e674f36d 79 pc.printf("u");
aftorob 0:4f72e674f36d 80
aftorob 0:4f72e674f36d 81
aftorob 0:4f72e674f36d 82 }
aftorob 0:4f72e674f36d 83 if((B_p2d == 0) || (B_c2 == 0) || (B_p2u == 0)){
aftorob 0:4f72e674f36d 84 pc.printf("2");
aftorob 0:4f72e674f36d 85 wait(1);
aftorob 0:4f72e674f36d 86 pc.printf("p");
aftorob 0:4f72e674f36d 87
aftorob 0:4f72e674f36d 88
aftorob 0:4f72e674f36d 89 }
aftorob 0:4f72e674f36d 90 if((B_p3 == 0) || (B_c3 == 0)){
aftorob 0:4f72e674f36d 91 pc.printf("3");
aftorob 0:4f72e674f36d 92 wait(1);
aftorob 0:4f72e674f36d 93 pc.printf("d");
aftorob 0:4f72e674f36d 94
aftorob 0:4f72e674f36d 95
aftorob 0:4f72e674f36d 96 }
aftorob 0:4f72e674f36d 97 if((B_open == 0)){
aftorob 0:4f72e674f36d 98 pc.printf("4");
aftorob 0:4f72e674f36d 99 wait(1);
aftorob 0:4f72e674f36d 100 }
aftorob 0:4f72e674f36d 101 if((B_close == 0)){
aftorob 0:4f72e674f36d 102 pc.printf("5");
aftorob 0:4f72e674f36d 103 wait(1);
aftorob 0:4f72e674f36d 104 }
aftorob 0:4f72e674f36d 105 if((B_stop == 0)){
aftorob 0:4f72e674f36d 106 pc.printf("6");
aftorob 0:4f72e674f36d 107 wait(1);
aftorob 0:4f72e674f36d 108
aftorob 0:4f72e674f36d 109 }
aftorob 0:4f72e674f36d 110 */
aftorob 0:4f72e674f36d 111 }
aftorob 0:4f72e674f36d 112
aftorob 0:4f72e674f36d 113
aftorob 0:4f72e674f36d 114 }
aftorob 0:4f72e674f36d 115
aftorob 0:4f72e674f36d 116
aftorob 0:4f72e674f36d 117
aftorob 0:4f72e674f36d 118 int sensordist(void){
aftorob 0:4f72e674f36d 119 Trigger = 1;
aftorob 0:4f72e674f36d 120 myled = 1;
aftorob 0:4f72e674f36d 121 myled2 = 0;
aftorob 0:4f72e674f36d 122 sonar.reset();
aftorob 0:4f72e674f36d 123 wait_us(10.0);
aftorob 0:4f72e674f36d 124 Trigger = 0;
aftorob 0:4f72e674f36d 125 myled = 0;
aftorob 0:4f72e674f36d 126 while (Echo==0) {};
aftorob 0:4f72e674f36d 127 myled2=Echo;
aftorob 0:4f72e674f36d 128 sonar.start();
aftorob 0:4f72e674f36d 129 while (Echo==1) {};
aftorob 0:4f72e674f36d 130 sonar.stop();
aftorob 0:4f72e674f36d 131 distance = (sonar.read_us()-correction)/58.0;
aftorob 0:4f72e674f36d 132 myled2 = 0;
aftorob 0:4f72e674f36d 133 return distance;
aftorob 0:4f72e674f36d 134 }
aftorob 0:4f72e674f36d 135
aftorob 0:4f72e674f36d 136 void comp(int dmeasured){
aftorob 0:4f72e674f36d 137 if((dmeasured <= 5)){
aftorob 0:4f72e674f36d 138 pc.printf("9");
aftorob 0:4f72e674f36d 139 }
aftorob 0:4f72e674f36d 140 else if ((dmeasured > 5 && dmeasured <= 10)){
aftorob 0:4f72e674f36d 141 pc.printf("8");
aftorob 0:4f72e674f36d 142 }
aftorob 0:4f72e674f36d 143 else if ((dmeasured > 10 && dmeasured <= 15)){
aftorob 0:4f72e674f36d 144 pc.printf("7");
aftorob 0:4f72e674f36d 145 }
aftorob 0:4f72e674f36d 146 else if ((dmeasured > 15 && dmeasured <= 20)){
aftorob 0:4f72e674f36d 147 pc.printf("6");
aftorob 0:4f72e674f36d 148 }
aftorob 0:4f72e674f36d 149 else if ((dmeasured > 20 && dmeasured <= 25)){
aftorob 0:4f72e674f36d 150 pc.printf("5");
aftorob 0:4f72e674f36d 151 }
aftorob 0:4f72e674f36d 152 else if ((dmeasured > 25 && dmeasured <= 30)){
aftorob 0:4f72e674f36d 153 pc.printf("4");
aftorob 0:4f72e674f36d 154 }
aftorob 0:4f72e674f36d 155 else if ((dmeasured > 30 && dmeasured <= 35)){
aftorob 0:4f72e674f36d 156 pc.printf("3");
aftorob 0:4f72e674f36d 157 }
aftorob 0:4f72e674f36d 158 else if ((dmeasured > 35 && dmeasured <= 40)){
aftorob 0:4f72e674f36d 159 pc.printf("2");
aftorob 0:4f72e674f36d 160 }
aftorob 0:4f72e674f36d 161 else if ((dmeasured > 40 && dmeasured <= 46)){
aftorob 0:4f72e674f36d 162 pc.printf("1");
aftorob 0:4f72e674f36d 163 }
aftorob 0:4f72e674f36d 164 else{
aftorob 0:4f72e674f36d 165 pc.printf("0");
aftorob 0:4f72e674f36d 166 }
aftorob 0:4f72e674f36d 167 }
aftorob 0:4f72e674f36d 168
aftorob 0:4f72e674f36d 169
aftorob 0:4f72e674f36d 170
aftorob 0:4f72e674f36d 171