Centro de Controle de Motores

Dependencies:   TextLCD mbed

Files at this revision

API Documentation at this revision

Comitter:
isabellemm
Date:
Thu Dec 01 19:39:01 2022 +0000
Parent:
3:2b261e3c05db
Commit message:
SIMPLES

Changed in this revision

TextLCD.lib Show annotated file Show diff for this revision Revisions of this file
gabs.txt Show annotated file Show diff for this revision Revisions of this file
main.cpp Show diff for this revision Revisions of this file
moto_passo_v2.txt Show annotated file Show diff for this revision Revisions of this file
motor_passo.txt Show annotated file Show diff for this revision Revisions of this file
motor_passp_v3.txt Show annotated file Show diff for this revision Revisions of this file
passo.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TextLCD.lib	Thu Dec 01 19:39:01 2022 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/tohatsp/code/TextLCD/#7fd377de8c67
--- /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;
+        }
+    }
+}
+                
+
+            
+
--- a/main.cpp	Wed Mar 09 14:17:24 2022 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-#include "mbed.h"
-
-DigitalOut led(D13);
-
-int main(void) {
-    while(1) {
-        led = 1; //LED on
-        wait(0.5);
-        led = 0; //LED off
-        wait(0.5);
-    }
-}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/moto_passo_v2.txt	Thu Dec 01 19:39:01 2022 +0000
@@ -0,0 +1,180 @@
+/*******************************************
+Motor de Passo
+*******************************************/
+#include "mbed.h"
+
+Serial envia(PC_10, PC_11);
+Serial pc(USBTX, USBRX);
+
+// variáveis
+int estado = 0;
+float tempo;
+char ligar = 'a';
+char desligar = 'b';
+char men_rec;
+
+// 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);
+
+// entradas
+InterruptIn ena_all(D11);
+InterruptIn enable(PB_6);
+DigitalIn dir(D9);
+AnalogIn POT(A5);
+
+// debouncing
+Timer debounce;
+
+
+void muda_en(){
+    if (debounce.read_ms()>200){
+        estado=!estado;
+    }
+    debounce.reset();
+}
+
+
+void muda_all(){
+    //men_rec = envia.getc();
+    if (debounce.read_ms()>200){
+        if (estado == 1 || men_rec == 'c'){ // ou
+            estado = 0;
+            envia.printf("%c", desligar);
+        }
+        else{
+            estado = 1;
+            envia.printf("%c", ligar);
+        }
+    }
+    debounce.reset();
+}
+
+void queda(){
+    debounce.reset();
+}
+
+void RX_interrupt(){
+    while (envia.readable()){
+        men_rec = envia.getc();
+    }
+}
+
+int main(){    
+    enable.rise(&muda_en);
+    ena_all.rise(&muda_all);
+    debounce.start();
+    envia.baud(9600);
+    envia.attach(&RX_interrupt, Serial::RxIrq);
+    
+    // configurações iniciais
+    EN_A = 0; 
+    EN_B = 0; 
+    IN1_A = 0;
+    IN2_A = 0;
+    IN1_A = 0;
+    IN1_B = 0;
+
+    while(1) {
+        //men_rec = envia.getc();
+        
+        if (estado == 1){
+            if (POT.read()>0.1f){
+                tempo = 0.005+(0.050*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;
+        }
+    }
+}      
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/motor_passo.txt	Thu Dec 01 19:39:01 2022 +0000
@@ -0,0 +1,157 @@
+/*******************************************
+Motor de Passo
+*******************************************/
+#include "mbed.h"
+
+Serial pc(USBTX, USBRX);
+Serial micro(p9, p10);
+
+char M2_on [2] = "A";
+char M2_off [2] = "B";
+//char M2_hor [2] = "A0";
+//char M2_anti [2] = "A1";
+
+// 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){
+            //scanf("%1s", M2_on);
+            printf("%1s\n",M2_on);
+            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;
+            printf("%1s\n",M2_off);
+        }
+    }
+}
+
+               
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/motor_passp_v3.txt	Thu Dec 01 19:39:01 2022 +0000
@@ -0,0 +1,161 @@
+/*******************************************
+Motor de Passo
+*******************************************/
+#include "mbed.h"
+
+Serial envia(PC_10, PC_11);
+Serial pc(USBTX, USBRX);
+
+// variáveis
+int estado = 0;
+float tempo;
+char desligar = 'a';
+char cte = 'b';
+
+// 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);
+
+// entradas
+InterruptIn ena_all(D11);
+InterruptIn enable(PB_6);
+DigitalIn dir(D9);
+AnalogIn POT(A5);
+
+// debouncing
+Timer debounce;
+
+
+void muda_en(){
+    if (debounce.read_ms()>200){
+        estado=!estado;
+    }
+    debounce.reset();
+}
+
+
+void muda_all(){
+    envia.printf("%c", desligar);
+    pc.printf("%c", desligar);
+    estado = 0;
+    debounce.reset();
+}
+
+int main(){    
+    enable.rise(&muda_en);
+    ena_all.rise(&muda_all);
+    debounce.start();
+    envia.baud(115200);
+    pc.baud(115200);
+    
+    // configurações iniciais
+    EN_A = 0; 
+    EN_B = 0; 
+    IN1_A = 0;
+    IN2_A = 0;
+    IN1_A = 0;
+    IN1_B = 0;
+
+    while(1) {
+        //envia.printf("%c", cte);
+        pc.printf("%c", cte);
+        envia.putc('b');
+        
+        if (estado == 1){
+            tempo = 0.005+(0.050*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;
+        }
+    }
+}      
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/passo.cpp	Thu Dec 01 19:39:01 2022 +0000
@@ -0,0 +1,163 @@
+/*******************************************
+Motor de Passo
+*******************************************/
+
+#include "mbed.h"
+
+Serial pc(USBTX, USBRX);
+
+// variáveis
+int estado = 0;
+float tempo;
+char ligado = 'c';
+char desligado = 'd';
+char hor = 'h';
+char antihor = 't';
+
+// 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);
+
+// entradas
+InterruptIn ena_all(D11);
+InterruptIn enable(PB_6);
+DigitalIn dir(D9);
+AnalogIn POT(A5);
+
+// debouncing
+Timer debounce;
+
+
+void muda_en(){
+    if (debounce.read_ms()>200){
+        estado=!estado;
+    }
+    debounce.reset();
+}
+
+
+void muda_all(){
+    //pc.printf("%c", desligar);
+    estado = 0;
+    debounce.reset();
+}
+
+int main(){    
+    enable.rise(&muda_en);
+    ena_all.rise(&muda_all);
+    debounce.start();
+    pc.baud(115200);
+    
+    // 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.002+(0.050*POT.read());
+            //pc.printf("%c", ligado);
+        
+            //SENTIDO HORÁRIO     
+            if (dir.read() == 0){
+                //pc.printf("%c", hor);
+        
+                // 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){ 
+                //pc.printf("%c", antihor);
+            
+                // 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{
+            //pc.printf("%c", desligado);
+            
+            EN_A = 0;
+            EN_B = 0;
+            IN1_A = 0;
+            IN2_A = 0;
+            IN1_A = 0;
+            IN1_B = 0;
+        }
+    }
+}
\ No newline at end of file