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.
Dependencies: mbed
main.cpp@0:6a267a6ae479, 2021-03-17 (annotated)
- 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?
| User | Revision | Line number | New 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 |