Isabelle Murollo
/
Projeto_CCM_Maquinas_MotorPasso
Centro de Controle de Motores
Revision 4:3bc68a7b299d, committed 24 months ago
- Comitter:
- isabellemm
- Date:
- Thu Dec 01 19:39:01 2022 +0000
- Parent:
- 3:2b261e3c05db
- Commit message:
- SIMPLES
Changed in this revision
--- /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