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 pc(USBTX, USBRX);
isabellemm 4:3bc68a7b299d 7 Serial micro(p9, p10);
isabellemm 4:3bc68a7b299d 8
isabellemm 4:3bc68a7b299d 9 char M2_on [2] = "A";
isabellemm 4:3bc68a7b299d 10 char M2_off [2] = "B";
isabellemm 4:3bc68a7b299d 11 //char M2_hor [2] = "A0";
isabellemm 4:3bc68a7b299d 12 //char M2_anti [2] = "A1";
isabellemm 4:3bc68a7b299d 13
isabellemm 4:3bc68a7b299d 14 // motor de passo
isabellemm 4:3bc68a7b299d 15 DigitalOut EN_A(D2);
isabellemm 4:3bc68a7b299d 16 DigitalOut IN1_A(D5);
isabellemm 4:3bc68a7b299d 17 DigitalOut IN2_A(D4);
isabellemm 4:3bc68a7b299d 18 DigitalOut EN_B(A4);
isabellemm 4:3bc68a7b299d 19 DigitalOut IN1_B(A0);
isabellemm 4:3bc68a7b299d 20 DigitalOut IN2_B(A1);
isabellemm 4:3bc68a7b299d 21
isabellemm 4:3bc68a7b299d 22 DigitalOut led(LED1);
isabellemm 4:3bc68a7b299d 23
isabellemm 4:3bc68a7b299d 24 InterruptIn enable(PB_6);
isabellemm 4:3bc68a7b299d 25 int estado = 0;
isabellemm 4:3bc68a7b299d 26 Timer debounce;
isabellemm 4:3bc68a7b299d 27
isabellemm 4:3bc68a7b299d 28 // botões retentivos
isabellemm 4:3bc68a7b299d 29 DigitalIn dir(D9);
isabellemm 4:3bc68a7b299d 30
isabellemm 4:3bc68a7b299d 31 AnalogIn POT(A5);
isabellemm 4:3bc68a7b299d 32 float tempo;
isabellemm 4:3bc68a7b299d 33
isabellemm 4:3bc68a7b299d 34 void muda_en(){
isabellemm 4:3bc68a7b299d 35 if (debounce.read_ms()>200){
isabellemm 4:3bc68a7b299d 36 estado=!estado;
isabellemm 4:3bc68a7b299d 37 }
isabellemm 4:3bc68a7b299d 38 debounce.reset();
isabellemm 4:3bc68a7b299d 39 }
isabellemm 4:3bc68a7b299d 40
isabellemm 4:3bc68a7b299d 41 void queda(){
isabellemm 4:3bc68a7b299d 42 debounce.reset();
isabellemm 4:3bc68a7b299d 43 }
isabellemm 4:3bc68a7b299d 44
isabellemm 4:3bc68a7b299d 45 int main(){
isabellemm 4:3bc68a7b299d 46 enable.rise(&muda_en);
isabellemm 4:3bc68a7b299d 47 debounce.start();
isabellemm 4:3bc68a7b299d 48
isabellemm 4:3bc68a7b299d 49 // configurações iniciais
isabellemm 4:3bc68a7b299d 50 EN_A = 0;
isabellemm 4:3bc68a7b299d 51 EN_B = 0;
isabellemm 4:3bc68a7b299d 52 IN1_A = 0;
isabellemm 4:3bc68a7b299d 53 IN2_A = 0;
isabellemm 4:3bc68a7b299d 54 IN1_A = 0;
isabellemm 4:3bc68a7b299d 55 IN1_B = 0;
isabellemm 4:3bc68a7b299d 56
isabellemm 4:3bc68a7b299d 57 while(1) {
isabellemm 4:3bc68a7b299d 58
isabellemm 4:3bc68a7b299d 59 if (estado == 1){
isabellemm 4:3bc68a7b299d 60 //scanf("%1s", M2_on);
isabellemm 4:3bc68a7b299d 61 printf("%1s\n",M2_on);
isabellemm 4:3bc68a7b299d 62 tempo = 0.005+(0.05*POT.read());
isabellemm 4:3bc68a7b299d 63
isabellemm 4:3bc68a7b299d 64 //SENTIDO HORÁRIO
isabellemm 4:3bc68a7b299d 65 if (dir.read() == 0){
isabellemm 4:3bc68a7b299d 66
isabellemm 4:3bc68a7b299d 67 // passo 0
isabellemm 4:3bc68a7b299d 68 EN_A = 1;
isabellemm 4:3bc68a7b299d 69 IN1_A = 1;
isabellemm 4:3bc68a7b299d 70 IN2_A = 0;
isabellemm 4:3bc68a7b299d 71 EN_B = 0;
isabellemm 4:3bc68a7b299d 72 IN1_B = 1;
isabellemm 4:3bc68a7b299d 73 IN2_B = 0;
isabellemm 4:3bc68a7b299d 74 wait(tempo);
isabellemm 4:3bc68a7b299d 75
isabellemm 4:3bc68a7b299d 76 // passo 1
isabellemm 4:3bc68a7b299d 77 EN_A = 0;
isabellemm 4:3bc68a7b299d 78 IN1_A = 0;
isabellemm 4:3bc68a7b299d 79 IN2_A = 1;
isabellemm 4:3bc68a7b299d 80 EN_B = 1;
isabellemm 4:3bc68a7b299d 81 IN1_B = 1;
isabellemm 4:3bc68a7b299d 82 IN2_B = 0;
isabellemm 4:3bc68a7b299d 83 wait(tempo);
isabellemm 4:3bc68a7b299d 84
isabellemm 4:3bc68a7b299d 85 // passo 2
isabellemm 4:3bc68a7b299d 86 EN_A = 1;
isabellemm 4:3bc68a7b299d 87 IN1_A = 0;
isabellemm 4:3bc68a7b299d 88 IN2_A = 1;
isabellemm 4:3bc68a7b299d 89 EN_B = 0;
isabellemm 4:3bc68a7b299d 90 IN1_B = 0;
isabellemm 4:3bc68a7b299d 91 IN2_B = 1;
isabellemm 4:3bc68a7b299d 92 wait(tempo);
isabellemm 4:3bc68a7b299d 93
isabellemm 4:3bc68a7b299d 94 // passo 3
isabellemm 4:3bc68a7b299d 95 EN_A = 0;
isabellemm 4:3bc68a7b299d 96 IN1_A = 1;
isabellemm 4:3bc68a7b299d 97 IN2_A = 0;
isabellemm 4:3bc68a7b299d 98 EN_B = 1;
isabellemm 4:3bc68a7b299d 99 IN1_B = 0;
isabellemm 4:3bc68a7b299d 100 IN2_B = 1;
isabellemm 4:3bc68a7b299d 101 wait(tempo);
isabellemm 4:3bc68a7b299d 102 }
isabellemm 4:3bc68a7b299d 103
isabellemm 4:3bc68a7b299d 104 //SENTIDO ANTI-HORÁRIO
isabellemm 4:3bc68a7b299d 105 else if (dir.read() == 1){
isabellemm 4:3bc68a7b299d 106 // passo 0
isabellemm 4:3bc68a7b299d 107 EN_A = 1;
isabellemm 4:3bc68a7b299d 108 IN1_A = 1;
isabellemm 4:3bc68a7b299d 109 IN2_A = 0;
isabellemm 4:3bc68a7b299d 110 EN_B = 0;
isabellemm 4:3bc68a7b299d 111 IN1_B = 1;
isabellemm 4:3bc68a7b299d 112 IN2_B = 0;
isabellemm 4:3bc68a7b299d 113 wait(tempo);
isabellemm 4:3bc68a7b299d 114
isabellemm 4:3bc68a7b299d 115 // passo 1 ("passo 3")
isabellemm 4:3bc68a7b299d 116 EN_A = 0;
isabellemm 4:3bc68a7b299d 117 IN1_A = 1;
isabellemm 4:3bc68a7b299d 118 IN2_A = 0;
isabellemm 4:3bc68a7b299d 119 EN_B = 1;
isabellemm 4:3bc68a7b299d 120 IN1_B = 0;
isabellemm 4:3bc68a7b299d 121 IN2_B = 1;
isabellemm 4:3bc68a7b299d 122 wait(tempo);
isabellemm 4:3bc68a7b299d 123
isabellemm 4:3bc68a7b299d 124 // passo 2
isabellemm 4:3bc68a7b299d 125 EN_A = 1;
isabellemm 4:3bc68a7b299d 126 IN1_A = 0;
isabellemm 4:3bc68a7b299d 127 IN2_A = 1;
isabellemm 4:3bc68a7b299d 128 EN_B = 0;
isabellemm 4:3bc68a7b299d 129 IN1_B = 0;
isabellemm 4:3bc68a7b299d 130 IN2_B = 1;
isabellemm 4:3bc68a7b299d 131 wait(tempo);
isabellemm 4:3bc68a7b299d 132
isabellemm 4:3bc68a7b299d 133 // passo 3 ("passo 1")
isabellemm 4:3bc68a7b299d 134 EN_A = 0;
isabellemm 4:3bc68a7b299d 135 IN1_A = 0;
isabellemm 4:3bc68a7b299d 136 IN2_A = 1;
isabellemm 4:3bc68a7b299d 137 EN_B = 1;
isabellemm 4:3bc68a7b299d 138 IN1_B = 1;
isabellemm 4:3bc68a7b299d 139 IN2_B = 0;
isabellemm 4:3bc68a7b299d 140 wait(tempo);
isabellemm 4:3bc68a7b299d 141 }
isabellemm 4:3bc68a7b299d 142 }
isabellemm 4:3bc68a7b299d 143
isabellemm 4:3bc68a7b299d 144 else{
isabellemm 4:3bc68a7b299d 145 EN_A = 0;
isabellemm 4:3bc68a7b299d 146 EN_B = 0;
isabellemm 4:3bc68a7b299d 147 IN1_A = 0;
isabellemm 4:3bc68a7b299d 148 IN2_A = 0;
isabellemm 4:3bc68a7b299d 149 IN1_A = 0;
isabellemm 4:3bc68a7b299d 150 IN1_B = 0;
isabellemm 4:3bc68a7b299d 151 printf("%1s\n",M2_off);
isabellemm 4:3bc68a7b299d 152 }
isabellemm 4:3bc68a7b299d 153 }
isabellemm 4:3bc68a7b299d 154 }
isabellemm 4:3bc68a7b299d 155
isabellemm 4:3bc68a7b299d 156
isabellemm 4:3bc68a7b299d 157