Hugo's Programs / Mbed 2 deprecated ULN20031MOTOR

Dependencies:   mbed

Committer:
hugocampos
Date:
Wed Mar 17 01:27:08 2021 +0000
Revision:
0:6a267a6ae479
projeto completo com 1 motor de passo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hugocampos 0:6a267a6ae479 1 /*Autor: Hugo Campos & Marcelo
hugocampos 0:6a267a6ae479 2 Acionamento de 1 motor de passo com ULN2003
hugocampos 0:6a267a6ae479 3 */
hugocampos 0:6a267a6ae479 4
hugocampos 0:6a267a6ae479 5 #include "mbed.h"
hugocampos 0:6a267a6ae479 6 #define velocidade1 2
hugocampos 0:6a267a6ae479 7 #define velocidade2 3
hugocampos 0:6a267a6ae479 8
hugocampos 0:6a267a6ae479 9 DigitalIn bt1 (PC_4); //Botão Motor 1
hugocampos 0:6a267a6ae479 10
hugocampos 0:6a267a6ae479 11 DigitalOut in1_m1 (D13); //Bobina 1
hugocampos 0:6a267a6ae479 12 DigitalOut in2_m1 (D12); //Bobina 2
hugocampos 0:6a267a6ae479 13 DigitalOut in3_m1 (D11); //Bobina 3
hugocampos 0:6a267a6ae479 14 DigitalOut in4_m1 (D10); //Bobina 4
hugocampos 0:6a267a6ae479 15
hugocampos 0:6a267a6ae479 16 InterruptIn FDC1 (PC_2); //Fim de Curso Motor
hugocampos 0:6a267a6ae479 17 InterruptIn FDC2 (PC_3); //Fim de Curso Motor
hugocampos 0:6a267a6ae479 18 DigitalIn BINV (PB_13);//Botão Inversor de de Sentido
hugocampos 0:6a267a6ae479 19 DigitalIn VEL (PB_7);//Botão mudança de Velocidade
hugocampos 0:6a267a6ae479 20
hugocampos 0:6a267a6ae479 21 InterruptIn emergence (PA_15); //Botão de Emergência
hugocampos 0:6a267a6ae479 22 DigitalOut buzzer (PH_1); //Buzzer de Indicação de Emergência
hugocampos 0:6a267a6ae479 23
hugocampos 0:6a267a6ae479 24 // ------------ Declarações de Funções do Programa ------------
hugocampos 0:6a267a6ae479 25 void emergencia(void);
hugocampos 0:6a267a6ae479 26 void fimdecurso1(void);
hugocampos 0:6a267a6ae479 27 void fimdecurso2(void);
hugocampos 0:6a267a6ae479 28
hugocampos 0:6a267a6ae479 29 void step1_X(void);
hugocampos 0:6a267a6ae479 30 void step2_X(void);
hugocampos 0:6a267a6ae479 31 void step3_X(void);
hugocampos 0:6a267a6ae479 32 void step4_X(void);
hugocampos 0:6a267a6ae479 33 void stop_X(void);
hugocampos 0:6a267a6ae479 34
hugocampos 0:6a267a6ae479 35 // ----------- Variavies do Programa ---------------------
hugocampos 0:6a267a6ae479 36 bool FDC_1_ACIONADO = 0;
hugocampos 0:6a267a6ae479 37 bool FDC_2_ACIONADO = 0;
hugocampos 0:6a267a6ae479 38 bool DEU_MERDA = 0;
hugocampos 0:6a267a6ae479 39
hugocampos 0:6a267a6ae479 40 // -------------- Programa Principal ---------------
hugocampos 0:6a267a6ae479 41
hugocampos 0:6a267a6ae479 42 int main()
hugocampos 0:6a267a6ae479 43 {
hugocampos 0:6a267a6ae479 44 emergence.rise (&emergencia); // Botão de Emergência
hugocampos 0:6a267a6ae479 45 FDC1.rise (&fimdecurso1); //Botão de Fim de Curso 1
hugocampos 0:6a267a6ae479 46 FDC2.rise (&fimdecurso2); //Botão de Fim de Curso 2
hugocampos 0:6a267a6ae479 47 while (1)
hugocampos 0:6a267a6ae479 48 {
hugocampos 0:6a267a6ae479 49 if(DEU_MERDA == 0) // IF principal só é acionado se o Botão de Emergência for acionado
hugocampos 0:6a267a6ae479 50 {
hugocampos 0:6a267a6ae479 51 if (bt1 == 0 && BINV == 0 && VEL == 0)
hugocampos 0:6a267a6ae479 52 {
hugocampos 0:6a267a6ae479 53 printf ("\nMotor Acionado Sentido 1 e Velocidade1");
hugocampos 0:6a267a6ae479 54 step1_X();
hugocampos 0:6a267a6ae479 55 wait_ms(velocidade1);
hugocampos 0:6a267a6ae479 56
hugocampos 0:6a267a6ae479 57 step2_X();
hugocampos 0:6a267a6ae479 58 wait_ms (velocidade1);
hugocampos 0:6a267a6ae479 59
hugocampos 0:6a267a6ae479 60 step3_X();
hugocampos 0:6a267a6ae479 61 wait_ms(velocidade1);
hugocampos 0:6a267a6ae479 62
hugocampos 0:6a267a6ae479 63 step4_X();
hugocampos 0:6a267a6ae479 64 wait_ms(velocidade1);
hugocampos 0:6a267a6ae479 65 }
hugocampos 0:6a267a6ae479 66 wait_ms (2);
hugocampos 0:6a267a6ae479 67
hugocampos 0:6a267a6ae479 68 if (bt1 == 0 && BINV == 1 && VEL == 0)
hugocampos 0:6a267a6ae479 69 {
hugocampos 0:6a267a6ae479 70 printf ("\nMotor Acionado Sentido 2 e Velocidade1");
hugocampos 0:6a267a6ae479 71 step4_X();
hugocampos 0:6a267a6ae479 72 wait_ms(velocidade1);
hugocampos 0:6a267a6ae479 73
hugocampos 0:6a267a6ae479 74 step3_X();
hugocampos 0:6a267a6ae479 75 wait_ms(velocidade1);
hugocampos 0:6a267a6ae479 76
hugocampos 0:6a267a6ae479 77 step2_X();
hugocampos 0:6a267a6ae479 78 wait_ms(velocidade1);
hugocampos 0:6a267a6ae479 79
hugocampos 0:6a267a6ae479 80 step1_X();
hugocampos 0:6a267a6ae479 81 wait_ms(velocidade1);
hugocampos 0:6a267a6ae479 82 }
hugocampos 0:6a267a6ae479 83
hugocampos 0:6a267a6ae479 84 if (bt1 == 0 && BINV == 0 && VEL == 1)
hugocampos 0:6a267a6ae479 85 {
hugocampos 0:6a267a6ae479 86 printf ("\nMotor Acionado Sentido 1 e Velocidade 2");
hugocampos 0:6a267a6ae479 87 step1_X();
hugocampos 0:6a267a6ae479 88 wait_ms(velocidade2);
hugocampos 0:6a267a6ae479 89
hugocampos 0:6a267a6ae479 90 step2_X();
hugocampos 0:6a267a6ae479 91 wait_ms(velocidade2);
hugocampos 0:6a267a6ae479 92
hugocampos 0:6a267a6ae479 93 step3_X();
hugocampos 0:6a267a6ae479 94 wait_ms(velocidade2);
hugocampos 0:6a267a6ae479 95
hugocampos 0:6a267a6ae479 96 step4_X();
hugocampos 0:6a267a6ae479 97 wait_ms(velocidade2);
hugocampos 0:6a267a6ae479 98 }
hugocampos 0:6a267a6ae479 99
hugocampos 0:6a267a6ae479 100 if (bt1 == 0 && BINV == 1 && VEL == 1)
hugocampos 0:6a267a6ae479 101 {
hugocampos 0:6a267a6ae479 102 printf ("\nMotor Acionado Sentido 2 e Velocidade 2");
hugocampos 0:6a267a6ae479 103 step4_X();
hugocampos 0:6a267a6ae479 104 wait_ms(velocidade2);
hugocampos 0:6a267a6ae479 105
hugocampos 0:6a267a6ae479 106 step3_X();
hugocampos 0:6a267a6ae479 107 wait_ms(velocidade2);
hugocampos 0:6a267a6ae479 108
hugocampos 0:6a267a6ae479 109 step2_X();
hugocampos 0:6a267a6ae479 110 wait_ms(velocidade2);
hugocampos 0:6a267a6ae479 111
hugocampos 0:6a267a6ae479 112 step1_X();
hugocampos 0:6a267a6ae479 113 wait_ms(velocidade2);
hugocampos 0:6a267a6ae479 114 }
hugocampos 0:6a267a6ae479 115 }//fim deu merda
hugocampos 0:6a267a6ae479 116
hugocampos 0:6a267a6ae479 117 if(DEU_MERDA == 1)
hugocampos 0:6a267a6ae479 118 {
hugocampos 0:6a267a6ae479 119 stop_X();
hugocampos 0:6a267a6ae479 120 printf("\n\rEMERGENCIA");
hugocampos 0:6a267a6ae479 121 }
hugocampos 0:6a267a6ae479 122 if(emergence == 0)
hugocampos 0:6a267a6ae479 123 {
hugocampos 0:6a267a6ae479 124 wait_ms(200);
hugocampos 0:6a267a6ae479 125 if(emergence == 0)
hugocampos 0:6a267a6ae479 126 {
hugocampos 0:6a267a6ae479 127 DEU_MERDA = 0;
hugocampos 0:6a267a6ae479 128 }
hugocampos 0:6a267a6ae479 129 }
hugocampos 0:6a267a6ae479 130 if(FDC_1_ACIONADO == 1)
hugocampos 0:6a267a6ae479 131 {
hugocampos 0:6a267a6ae479 132 stop_X();
hugocampos 0:6a267a6ae479 133 printf("\n\rFim de curso 1");
hugocampos 0:6a267a6ae479 134 wait_ms(1000);
hugocampos 0:6a267a6ae479 135 while(FDC_1_ACIONADO == 1)
hugocampos 0:6a267a6ae479 136 {
hugocampos 0:6a267a6ae479 137 step1_X();
hugocampos 0:6a267a6ae479 138 wait_ms(velocidade1);
hugocampos 0:6a267a6ae479 139 step2_X();
hugocampos 0:6a267a6ae479 140 wait_ms(velocidade1);
hugocampos 0:6a267a6ae479 141 step3_X();
hugocampos 0:6a267a6ae479 142 wait_ms(velocidade1);
hugocampos 0:6a267a6ae479 143 step4_X();
hugocampos 0:6a267a6ae479 144 wait_ms(velocidade1);
hugocampos 0:6a267a6ae479 145 if(FDC1 == 0)
hugocampos 0:6a267a6ae479 146 {
hugocampos 0:6a267a6ae479 147 FDC_1_ACIONADO = 0;
hugocampos 0:6a267a6ae479 148 }
hugocampos 0:6a267a6ae479 149 }
hugocampos 0:6a267a6ae479 150 }
hugocampos 0:6a267a6ae479 151
hugocampos 0:6a267a6ae479 152 if(FDC_2_ACIONADO == 1)
hugocampos 0:6a267a6ae479 153 {
hugocampos 0:6a267a6ae479 154 stop_X();
hugocampos 0:6a267a6ae479 155 printf("\n\rFim de curso 2");
hugocampos 0:6a267a6ae479 156 wait_ms(1000);
hugocampos 0:6a267a6ae479 157 while(FDC_2_ACIONADO == 1)
hugocampos 0:6a267a6ae479 158 {
hugocampos 0:6a267a6ae479 159 step1_X();
hugocampos 0:6a267a6ae479 160 wait_ms(velocidade1);
hugocampos 0:6a267a6ae479 161 step2_X();
hugocampos 0:6a267a6ae479 162 wait_ms(velocidade1);
hugocampos 0:6a267a6ae479 163 step3_X();
hugocampos 0:6a267a6ae479 164 wait_ms(velocidade1);
hugocampos 0:6a267a6ae479 165 step4_X();
hugocampos 0:6a267a6ae479 166 wait_ms(velocidade1);
hugocampos 0:6a267a6ae479 167 if(FDC2 == 0)
hugocampos 0:6a267a6ae479 168 {
hugocampos 0:6a267a6ae479 169 FDC_2_ACIONADO = 0;
hugocampos 0:6a267a6ae479 170 }
hugocampos 0:6a267a6ae479 171 }
hugocampos 0:6a267a6ae479 172 }
hugocampos 0:6a267a6ae479 173 }//fim da while
hugocampos 0:6a267a6ae479 174 }//fim int main
hugocampos 0:6a267a6ae479 175
hugocampos 0:6a267a6ae479 176 void emergencia ()
hugocampos 0:6a267a6ae479 177 {
hugocampos 0:6a267a6ae479 178 DEU_MERDA = 1;
hugocampos 0:6a267a6ae479 179 }
hugocampos 0:6a267a6ae479 180
hugocampos 0:6a267a6ae479 181 void fimdecurso1 ()
hugocampos 0:6a267a6ae479 182 {
hugocampos 0:6a267a6ae479 183 wait_ms(30);
hugocampos 0:6a267a6ae479 184 if(FDC1 == 1)
hugocampos 0:6a267a6ae479 185 {
hugocampos 0:6a267a6ae479 186 FDC_1_ACIONADO = 1;
hugocampos 0:6a267a6ae479 187 }
hugocampos 0:6a267a6ae479 188 }
hugocampos 0:6a267a6ae479 189
hugocampos 0:6a267a6ae479 190 void fimdecurso2 ()
hugocampos 0:6a267a6ae479 191 {
hugocampos 0:6a267a6ae479 192 wait_ms(30);
hugocampos 0:6a267a6ae479 193 if(FDC2 == 1)
hugocampos 0:6a267a6ae479 194 {
hugocampos 0:6a267a6ae479 195 FDC_2_ACIONADO = 1;
hugocampos 0:6a267a6ae479 196 }
hugocampos 0:6a267a6ae479 197 }
hugocampos 0:6a267a6ae479 198
hugocampos 0:6a267a6ae479 199 void step1_X()
hugocampos 0:6a267a6ae479 200 {
hugocampos 0:6a267a6ae479 201 in1_m1 = 1;
hugocampos 0:6a267a6ae479 202 in2_m1 = 0;
hugocampos 0:6a267a6ae479 203 in3_m1 = 0;
hugocampos 0:6a267a6ae479 204 in4_m1 = 0;
hugocampos 0:6a267a6ae479 205 }
hugocampos 0:6a267a6ae479 206
hugocampos 0:6a267a6ae479 207 void step2_X()
hugocampos 0:6a267a6ae479 208 {
hugocampos 0:6a267a6ae479 209 in1_m1 = 0;
hugocampos 0:6a267a6ae479 210 in2_m1 = 1;
hugocampos 0:6a267a6ae479 211 in3_m1 = 0;
hugocampos 0:6a267a6ae479 212 in4_m1 = 0;
hugocampos 0:6a267a6ae479 213 }
hugocampos 0:6a267a6ae479 214
hugocampos 0:6a267a6ae479 215 void step3_X()
hugocampos 0:6a267a6ae479 216 {
hugocampos 0:6a267a6ae479 217 in1_m1 = 0;
hugocampos 0:6a267a6ae479 218 in2_m1 = 0;
hugocampos 0:6a267a6ae479 219 in3_m1 = 1;
hugocampos 0:6a267a6ae479 220 in4_m1 = 0;
hugocampos 0:6a267a6ae479 221 }
hugocampos 0:6a267a6ae479 222
hugocampos 0:6a267a6ae479 223 void step4_X()
hugocampos 0:6a267a6ae479 224 {
hugocampos 0:6a267a6ae479 225 in1_m1 = 0;
hugocampos 0:6a267a6ae479 226 in2_m1 = 0;
hugocampos 0:6a267a6ae479 227 in3_m1 = 0;
hugocampos 0:6a267a6ae479 228 in4_m1 = 1;
hugocampos 0:6a267a6ae479 229 }
hugocampos 0:6a267a6ae479 230
hugocampos 0:6a267a6ae479 231 void stop_X()
hugocampos 0:6a267a6ae479 232 {
hugocampos 0:6a267a6ae479 233 in1_m1 = 0;
hugocampos 0:6a267a6ae479 234 in2_m1 = 0;
hugocampos 0:6a267a6ae479 235 in3_m1 = 0;
hugocampos 0:6a267a6ae479 236 in4_m1 = 0;
hugocampos 0:6a267a6ae479 237 }
hugocampos 0:6a267a6ae479 238