Centro de Controle de Motores

Dependencies:   TextLCD mbed

Committer:
isabellemm
Date:
Thu Dec 01 19:39:01 2022 +0000
Revision:
4:3bc68a7b299d
SIMPLES

Who changed what in which revision?

UserRevisionLine numberNew contents of line
isabellemm 4:3bc68a7b299d 1 /*******************************************
isabellemm 4:3bc68a7b299d 2 Motor de Passo
isabellemm 4:3bc68a7b299d 3 *******************************************/
isabellemm 4:3bc68a7b299d 4 #include "mbed.h"
isabellemm 4:3bc68a7b299d 5
isabellemm 4:3bc68a7b299d 6 Serial envia(PC_10, PC_11);
isabellemm 4:3bc68a7b299d 7 Serial pc(USBTX, USBRX);
isabellemm 4:3bc68a7b299d 8
isabellemm 4:3bc68a7b299d 9 // variáveis
isabellemm 4:3bc68a7b299d 10 int estado = 0;
isabellemm 4:3bc68a7b299d 11 float tempo;
isabellemm 4:3bc68a7b299d 12 char desligar = 'a';
isabellemm 4:3bc68a7b299d 13 char cte = 'b';
isabellemm 4:3bc68a7b299d 14
isabellemm 4:3bc68a7b299d 15 // motor de passo
isabellemm 4:3bc68a7b299d 16 DigitalOut EN_A(D2);
isabellemm 4:3bc68a7b299d 17 DigitalOut IN1_A(D5);
isabellemm 4:3bc68a7b299d 18 DigitalOut IN2_A(D4);
isabellemm 4:3bc68a7b299d 19 DigitalOut EN_B(A4);
isabellemm 4:3bc68a7b299d 20 DigitalOut IN1_B(A0);
isabellemm 4:3bc68a7b299d 21 DigitalOut IN2_B(A1);
isabellemm 4:3bc68a7b299d 22
isabellemm 4:3bc68a7b299d 23 // entradas
isabellemm 4:3bc68a7b299d 24 InterruptIn ena_all(D11);
isabellemm 4:3bc68a7b299d 25 InterruptIn enable(PB_6);
isabellemm 4:3bc68a7b299d 26 DigitalIn dir(D9);
isabellemm 4:3bc68a7b299d 27 AnalogIn POT(A5);
isabellemm 4:3bc68a7b299d 28
isabellemm 4:3bc68a7b299d 29 // debouncing
isabellemm 4:3bc68a7b299d 30 Timer debounce;
isabellemm 4:3bc68a7b299d 31
isabellemm 4:3bc68a7b299d 32
isabellemm 4:3bc68a7b299d 33 void muda_en(){
isabellemm 4:3bc68a7b299d 34 if (debounce.read_ms()>200){
isabellemm 4:3bc68a7b299d 35 estado=!estado;
isabellemm 4:3bc68a7b299d 36 }
isabellemm 4:3bc68a7b299d 37 debounce.reset();
isabellemm 4:3bc68a7b299d 38 }
isabellemm 4:3bc68a7b299d 39
isabellemm 4:3bc68a7b299d 40
isabellemm 4:3bc68a7b299d 41 void muda_all(){
isabellemm 4:3bc68a7b299d 42 envia.printf("%c", desligar);
isabellemm 4:3bc68a7b299d 43 pc.printf("%c", desligar);
isabellemm 4:3bc68a7b299d 44 estado = 0;
isabellemm 4:3bc68a7b299d 45 debounce.reset();
isabellemm 4:3bc68a7b299d 46 }
isabellemm 4:3bc68a7b299d 47
isabellemm 4:3bc68a7b299d 48 int main(){
isabellemm 4:3bc68a7b299d 49 enable.rise(&muda_en);
isabellemm 4:3bc68a7b299d 50 ena_all.rise(&muda_all);
isabellemm 4:3bc68a7b299d 51 debounce.start();
isabellemm 4:3bc68a7b299d 52 envia.baud(115200);
isabellemm 4:3bc68a7b299d 53 pc.baud(115200);
isabellemm 4:3bc68a7b299d 54
isabellemm 4:3bc68a7b299d 55 // configurações iniciais
isabellemm 4:3bc68a7b299d 56 EN_A = 0;
isabellemm 4:3bc68a7b299d 57 EN_B = 0;
isabellemm 4:3bc68a7b299d 58 IN1_A = 0;
isabellemm 4:3bc68a7b299d 59 IN2_A = 0;
isabellemm 4:3bc68a7b299d 60 IN1_A = 0;
isabellemm 4:3bc68a7b299d 61 IN1_B = 0;
isabellemm 4:3bc68a7b299d 62
isabellemm 4:3bc68a7b299d 63 while(1) {
isabellemm 4:3bc68a7b299d 64 //envia.printf("%c", cte);
isabellemm 4:3bc68a7b299d 65 pc.printf("%c", cte);
isabellemm 4:3bc68a7b299d 66 envia.putc('b');
isabellemm 4:3bc68a7b299d 67
isabellemm 4:3bc68a7b299d 68 if (estado == 1){
isabellemm 4:3bc68a7b299d 69 tempo = 0.005+(0.050*POT.read());
isabellemm 4:3bc68a7b299d 70
isabellemm 4:3bc68a7b299d 71 //SENTIDO HORÁRIO
isabellemm 4:3bc68a7b299d 72 if (dir.read() == 0){
isabellemm 4:3bc68a7b299d 73
isabellemm 4:3bc68a7b299d 74 // passo 0
isabellemm 4:3bc68a7b299d 75 EN_A = 1;
isabellemm 4:3bc68a7b299d 76 IN1_A = 1;
isabellemm 4:3bc68a7b299d 77 IN2_A = 0;
isabellemm 4:3bc68a7b299d 78 EN_B = 0;
isabellemm 4:3bc68a7b299d 79 IN1_B = 1;
isabellemm 4:3bc68a7b299d 80 IN2_B = 0;
isabellemm 4:3bc68a7b299d 81 wait(tempo);
isabellemm 4:3bc68a7b299d 82
isabellemm 4:3bc68a7b299d 83 // passo 1
isabellemm 4:3bc68a7b299d 84 EN_A = 0;
isabellemm 4:3bc68a7b299d 85 IN1_A = 0;
isabellemm 4:3bc68a7b299d 86 IN2_A = 1;
isabellemm 4:3bc68a7b299d 87 EN_B = 1;
isabellemm 4:3bc68a7b299d 88 IN1_B = 1;
isabellemm 4:3bc68a7b299d 89 IN2_B = 0;
isabellemm 4:3bc68a7b299d 90 wait(tempo);
isabellemm 4:3bc68a7b299d 91
isabellemm 4:3bc68a7b299d 92 // passo 2
isabellemm 4:3bc68a7b299d 93 EN_A = 1;
isabellemm 4:3bc68a7b299d 94 IN1_A = 0;
isabellemm 4:3bc68a7b299d 95 IN2_A = 1;
isabellemm 4:3bc68a7b299d 96 EN_B = 0;
isabellemm 4:3bc68a7b299d 97 IN1_B = 0;
isabellemm 4:3bc68a7b299d 98 IN2_B = 1;
isabellemm 4:3bc68a7b299d 99 wait(tempo);
isabellemm 4:3bc68a7b299d 100
isabellemm 4:3bc68a7b299d 101 // passo 3
isabellemm 4:3bc68a7b299d 102 EN_A = 0;
isabellemm 4:3bc68a7b299d 103 IN1_A = 1;
isabellemm 4:3bc68a7b299d 104 IN2_A = 0;
isabellemm 4:3bc68a7b299d 105 EN_B = 1;
isabellemm 4:3bc68a7b299d 106 IN1_B = 0;
isabellemm 4:3bc68a7b299d 107 IN2_B = 1;
isabellemm 4:3bc68a7b299d 108 wait(tempo);
isabellemm 4:3bc68a7b299d 109 }
isabellemm 4:3bc68a7b299d 110
isabellemm 4:3bc68a7b299d 111 //SENTIDO ANTI-HORÁRIO
isabellemm 4:3bc68a7b299d 112 else if (dir.read() == 1){
isabellemm 4:3bc68a7b299d 113
isabellemm 4:3bc68a7b299d 114 // passo 0
isabellemm 4:3bc68a7b299d 115 EN_A = 1;
isabellemm 4:3bc68a7b299d 116 IN1_A = 1;
isabellemm 4:3bc68a7b299d 117 IN2_A = 0;
isabellemm 4:3bc68a7b299d 118 EN_B = 0;
isabellemm 4:3bc68a7b299d 119 IN1_B = 1;
isabellemm 4:3bc68a7b299d 120 IN2_B = 0;
isabellemm 4:3bc68a7b299d 121 wait(tempo);
isabellemm 4:3bc68a7b299d 122
isabellemm 4:3bc68a7b299d 123 // passo 1 ("passo 3")
isabellemm 4:3bc68a7b299d 124 EN_A = 0;
isabellemm 4:3bc68a7b299d 125 IN1_A = 1;
isabellemm 4:3bc68a7b299d 126 IN2_A = 0;
isabellemm 4:3bc68a7b299d 127 EN_B = 1;
isabellemm 4:3bc68a7b299d 128 IN1_B = 0;
isabellemm 4:3bc68a7b299d 129 IN2_B = 1;
isabellemm 4:3bc68a7b299d 130 wait(tempo);
isabellemm 4:3bc68a7b299d 131
isabellemm 4:3bc68a7b299d 132 // passo 2
isabellemm 4:3bc68a7b299d 133 EN_A = 1;
isabellemm 4:3bc68a7b299d 134 IN1_A = 0;
isabellemm 4:3bc68a7b299d 135 IN2_A = 1;
isabellemm 4:3bc68a7b299d 136 EN_B = 0;
isabellemm 4:3bc68a7b299d 137 IN1_B = 0;
isabellemm 4:3bc68a7b299d 138 IN2_B = 1;
isabellemm 4:3bc68a7b299d 139 wait(tempo);
isabellemm 4:3bc68a7b299d 140
isabellemm 4:3bc68a7b299d 141 // passo 3 ("passo 1")
isabellemm 4:3bc68a7b299d 142 EN_A = 0;
isabellemm 4:3bc68a7b299d 143 IN1_A = 0;
isabellemm 4:3bc68a7b299d 144 IN2_A = 1;
isabellemm 4:3bc68a7b299d 145 EN_B = 1;
isabellemm 4:3bc68a7b299d 146 IN1_B = 1;
isabellemm 4:3bc68a7b299d 147 IN2_B = 0;
isabellemm 4:3bc68a7b299d 148 wait(tempo);
isabellemm 4:3bc68a7b299d 149 }
isabellemm 4:3bc68a7b299d 150 }
isabellemm 4:3bc68a7b299d 151
isabellemm 4:3bc68a7b299d 152 else{
isabellemm 4:3bc68a7b299d 153 EN_A = 0;
isabellemm 4:3bc68a7b299d 154 EN_B = 0;
isabellemm 4:3bc68a7b299d 155 IN1_A = 0;
isabellemm 4:3bc68a7b299d 156 IN2_A = 0;
isabellemm 4:3bc68a7b299d 157 IN1_A = 0;
isabellemm 4:3bc68a7b299d 158 IN1_B = 0;
isabellemm 4:3bc68a7b299d 159 }
isabellemm 4:3bc68a7b299d 160 }
isabellemm 4:3bc68a7b299d 161 }