Fernando Sakabe / Mbed 2 deprecated Projeto_CCM

Dependencies:   mbed

Revision:
0:cc81b0dd1ded
Child:
1:a5accbc79c11
diff -r 000000000000 -r cc81b0dd1ded main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Oct 31 02:41:59 2022 +0000
@@ -0,0 +1,159 @@
+#include "mbed.h" //Incluea biblioteca mbed
+
+//define quais pinos serão para acionar a IHM
+DigitalOut EN_A (D2);
+DigitalOut IN1_A (D5);
+DigitalOut IN2_A (D4);
+DigitalOut EN_B (A4);
+DigitalOut IN1_B (A0);
+DigitalOut IN2_B (A1);
+
+
+InterruptIn interr(D8); //Define o InterruptIn para identificar os sinais da onda quadrada
+DigitalIn enable (D12); //Botão que liga e desliga projeto
+InterruptIn push(PC_13); //Botão de usuário que muda a direção do motor
+float periodo_seg = 2.0; //Quantidade de tempo em que se define a frequência do motor
+float frequencia = 0; //Frequência do motor
+float Tempo; //Periodo da onda
+int contador=0; //Conta a quantidadde de pulsos no periodo_seg
+Ticker tempo_alto;//Aciona função de calcula_frequencia (calcula a frequencia)
+int horario = 0; //Determina o sentido de rotação do motor em horário ou anti-horário
+
+void muda_direcao() //Função que faz com que o sentido mude de horario para anti-horario e vice e versa
+{
+    if(horario==1) {
+        horario=0;
+    } else {
+        horario=1;
+    }
+}
+void alto() //Função que conta quantas vezes o InterruptIn foi acionado.
+{
+    contador++;
+}
+
+void calcula_frequencia() //Função que calcula a frequencia
+{
+    frequencia=contador/periodo_seg;
+    contador=0;
+}
+
+int main()
+
+{
+    push.rise(&muda_direcao); //ativa a funcao muda direção quando obotão de usuário é acionado
+    interr.rise(&alto); //Ativa a função alto quando há um rise nas ondas
+    tempo_alto.attach(&calcula_frequencia, periodo_seg); //Ativa a funcao calcula a cada passagem de periodo
+
+    EN_A = 0; // Desliga Ponte-H (A)
+    EN_B = 0; // Desliga Ponte-H (B)
+    IN1_A = 0;
+    IN2_A = 0; // Ponte-H (A) Motor 'travado'
+    IN1_A = 0;
+    IN1_B = 0; // Ponte-H (B) Motor 'travado’
+
+    while(1) {
+        Tempo = 1/frequencia; //calcula periodo a partir da frequencia
+        printf("TEMPO = %f FREQUENCIA = %f \n\r", Tempo, frequencia);
+        //Se o botão enable estiver acionado, liga o sistema
+        if(enable) {
+            //Define se o motor rotacionará no sentido horario ou anit-horario
+            switch(horario) {
+                case 0:
+
+                //passo 0
+
+                    EN_A = 1;
+                    IN1_A = 1;
+                    IN2_A = 0;
+                    EN_B = 1;
+                    IN1_B = 1;
+                    IN2_B = 0;
+                    wait(Tempo); //periodo definido anteriormente
+
+                //passo 1
+
+                    EN_A = 1;
+                    IN1_A = 0;
+                    IN2_A = 1;
+                    EN_B = 1;
+                    IN1_B = 1;
+                    IN2_B = 0;
+                    wait(Tempo); //periodo definido anteriormente
+
+                //passo 2 
+
+                    EN_A = 1;
+                    IN1_A = 0;
+                    IN2_A = 1;
+                    EN_B =1 ;
+                    IN1_B = 0;
+                    IN2_B = 1;
+                    wait(Tempo); //periodo definido anteriormente
+
+                //passo 3
+
+                    EN_A = 1;
+                    IN1_A = 1;
+                    IN2_A = 0;
+                    EN_B = 1;
+                    IN1_B = 0;
+                    IN2_B = 1;
+                    wait(Tempo); //periodo definido anteriormente
+
+                    break;
+
+                case 1:
+
+                //passo 3
+
+                    EN_A = 1;
+                    IN1_A = 1;
+                    IN2_A = 0;
+                    EN_B = 1;
+                    IN1_B = 0;
+                    IN2_B = 1;
+                    wait(Tempo); //periodo definido anteriormente
+
+                //passo 2
+
+                    EN_A = 1;
+                    IN1_A = 0;
+                    IN2_A = 1;
+                    EN_B = 1;
+                    IN1_B = 0;
+                    IN2_B = 1;
+                    wait(Tempo); //periodo definido anteriormente
+
+                //passo 1
+
+                    EN_A = 1;
+                    IN1_A = 0;
+                    IN2_A = 1;
+                    EN_B = 1;
+                    IN1_B = 1;
+                    IN2_B = 0;
+                    wait(Tempo); //periodo definido anteriormente
+
+                //passo 0
+
+                    EN_A = 1;
+                    IN1_A = 1;
+                    IN2_A = 0;
+                    EN_B = 1;
+                    IN1_B = 1;
+                    IN2_B = 0;
+                    wait(Tempo); //periodo definido anteriormente
+
+                    break;
+
+            }
+
+        } else {
+            //se botão enable desativado, desativa o EN_A e EN_B
+            EN_A=0;
+            EN_B=0;
+
+        }
+    }
+}