Sz_Insper / Mbed 2 deprecated L6230_Hbridge

Dependencies:   mbed

main.cpp

Committer:
Marcelocostanzo
Date:
2020-10-28
Revision:
4:97d107efa17e
Parent:
3:95a3a1fbc807
Child:
6:d6e4872d38fe

File content as of revision 4:97d107efa17e:

#include "mbed.h"

//---Pinos de enable dos braços----
DigitalOut enable_ch1(PC_10);
DigitalOut enable_ch2(PC_11);
DigitalOut enable_ch3(PC_12);

//---Pinos de canais dos braços----
PwmOut in_ch1(PA_8);
PwmOut in_ch2(PA_9);
PwmOut in_ch3(PA_10);

//---Pino de ADC da X-NUCLEO ----
AnalogIn pot(PB_1);

//---Pino do led da NUCLEO----
DigitalOut myled(LED1);

//---Pino do butao da NUCLEO----
DigitalIn sw(PC_13);

//---Pinos do serial-USB da NUCLEO----
Serial pc(USBTX, USBRX);

//---Prototipo das Funções----
void motor_start(float SPEED, unsigned int MOTOR);
void motor_stop(unsigned int MOTOR);

//---Programa principal-------
int main() 
{
    //---Configura o periodo do PWM----
    in_ch1.period_ms(1);
    in_ch2.period_ms(1);
    in_ch3.period_ms(1);
    
    //---Inicia o PWM com 0% de duty-cicle----
    in_ch1.write(0);
    in_ch2.write(0);
    in_ch3.write(0);
    
    //---Inicia os braços em Z (alta impedancia)----
    enable_ch1 = 2;
    enable_ch2 = 2;
    enable_ch3 = 2;
    
    //---Configura o baudrate da serial para 115200---
    pc.baud(115200);   
            
    pc.printf("Started\r"); //Iniciando
    
    while(1) 
    {
        motor_start(0.5, 1); //Liga o motor 1 com 50% de duty-cicle
        wait_ms(500);
        motor_start(0.5, 2); //Liga o motor 2 com 50% de duty-cicle
        wait_ms(500);
        motor_start(0.5, 3); //Liga o motor 3 com 50% de duty-cicle
        wait_ms(500);
        
        motor_stop(1);  //Desliga o motor 1
        wait_ms(500);
        motor_stop(2);  //Desliga o motor 2
        wait_ms(500);
        motor_stop(3);  //Desliga o motor 3
        wait_ms(500);
    }
}

//---Função de controle dos braços----------
void motor_start(float SPEED, unsigned int MOTOR)
{
    if(MOTOR == 1)
    {
        enable_ch1 = 1;
        in_ch1.write(SPEED);
    }
    
    if(MOTOR == 2)
    {
        enable_ch2 = 1;
        in_ch2.write(SPEED);
    }
    
    if(MOTOR == 3)
    {
        enable_ch3 = 1;
        in_ch3.write(SPEED);
    }
}

//---Função de desligamento dos braços----------
void motor_stop(unsigned int MOTOR)
{
  if(MOTOR == 1)
    {
        enable_ch1 = 2; //alta impedancia - Z
        in_ch1.write(0);
    }
    
    if(MOTOR == 2)
    {
        enable_ch2 = 2; //alta impedancia - Z
        in_ch2.write(0);
    }
    
    if(MOTOR == 3)
    {
        enable_ch3 = 2; //alta impedancia - Z
        in_ch3.write(0);
    }  
}