Centro de Controle de Motores

Dependencies:   TextLCD mbed

Revision:
4:3bc68a7b299d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gabs.txt	Thu Dec 01 19:39:01 2022 +0000
@@ -0,0 +1,148 @@
+/*******************************************
+Motor de Passo
+*******************************************/
+#include "mbed.h"
+
+// motor de passo
+DigitalOut EN_A(D2);
+DigitalOut IN1_A(D5);
+DigitalOut IN2_A(D4);
+DigitalOut EN_B(A4);
+DigitalOut IN1_B(A0);
+DigitalOut IN2_B(A1);
+
+DigitalOut led(LED1);
+
+InterruptIn enable(PB_6);
+int estado = 0;
+Timer debounce;
+
+// botões retentivos
+DigitalIn dir(D9);
+
+AnalogIn POT(A5);
+float tempo;
+
+void muda_en(){
+        if (debounce.read_ms()>200){
+        estado=!estado;
+    }
+    debounce.reset();
+}
+
+void queda(){
+    debounce.reset();
+}
+
+int main(){    
+    enable.rise(&muda_en);
+    debounce.start();
+    
+    // configurações iniciais
+    EN_A = 0; 
+    EN_B = 0; 
+    IN1_A = 0;
+    IN2_A = 0;
+    IN1_A = 0;
+    IN1_B = 0;
+
+    while(1) {
+        
+        if (estado == 1){
+            tempo = 0.005+(0.05*POT.read());
+        
+            //SENTIDO HORÁRIO     
+            if (dir.read() == 0){
+        
+                // passo 0
+                EN_A = 1;
+                IN1_A = 1;
+                IN2_A = 0;
+                EN_B = 0;
+                IN1_B = 1;
+                IN2_B = 0;
+                wait(tempo);
+                
+                // passo 1
+                EN_A = 0;
+                IN1_A = 0;
+                IN2_A = 1;
+                EN_B = 1;
+                IN1_B = 1;
+                IN2_B = 0;
+                wait(tempo);
+       
+                // passo 2
+                EN_A = 1;
+                IN1_A = 0;
+                IN2_A = 1;
+                EN_B = 0;
+                IN1_B = 0;
+                IN2_B = 1;
+                wait(tempo);
+                
+                // passo 3
+                EN_A = 0;
+                IN1_A = 1;
+                IN2_A = 0;
+                EN_B = 1;
+                IN1_B = 0;
+                IN2_B = 1;
+                wait(tempo);
+            }
+            
+            //SENTIDO ANTI-HORÁRIO
+            else if (dir.read() == 1){ 
+            
+                // passo 0
+                EN_A = 1;
+                IN1_A = 1;
+                IN2_A = 0;
+                EN_B = 0;
+                IN1_B = 1;
+                IN2_B = 0;
+                wait(tempo);
+                
+                // passo 1 ("passo 3")
+                EN_A = 0;
+                IN1_A = 1;
+                IN2_A = 0;
+                EN_B = 1;
+                IN1_B = 0;
+                IN2_B = 1;
+                wait(tempo);
+                
+                // passo 2
+                EN_A = 1;
+                IN1_A = 0;
+                IN2_A = 1;
+                EN_B = 0;
+                IN1_B = 0;
+                IN2_B = 1;
+                wait(tempo);
+               
+                // passo 3 ("passo 1")
+                EN_A = 0;
+                IN1_A = 0;
+                IN2_A = 1;
+                EN_B = 1;
+                IN1_B = 1;
+                IN2_B = 0;
+                wait(tempo);
+             }
+        }
+        
+        else{
+            EN_A = 0;
+            EN_B = 0;
+            IN1_A = 0;
+            IN2_A = 0;
+            IN1_A = 0;
+            IN1_B = 0;
+        }
+    }
+}
+                
+
+            
+