Aula de programação C – 15

15. PRÁTICA 15: CONTROLE DE SERVO MOTOR COM BOTÃO – FOR/DELAY

Referencial Teórico: PWM por Sofware; Laço FOR, Variáveis.

Objetivo: Controlar o funcionamento de um servo motor, utilizando técnica de interrupção por tempo.

Materiais: Utilizar botão presente na placa, servo motor ligado à saída A e fonte de alimentação.

15.1 Arquivo Principal

#include "iniciog.h"
#include "pratica.h"

void main(){

	configura_portas();
	habilita_ponteh();
	MTR1_CW = 1;
	MTR2_CW = 1;

	configura_relogio();

	while(1){
		if (botao == 1) servo180();
		if (botao == 0) servo0();
	}
}

15.2 Arquivo Secundário

// acrescentar ao iniciog.h ou arquivo pratica.h

void habilita_ponteh(){
	MOTOR_AB_EN = 1;
	MTR1_EN = 1;
	MTR2_EN = 1;
}

void servo0();
void servo90();
void servo180();

int t = 0;

void servo0(){
	MTR1_CC = 1;
        //1,0ms
        for (t = 0; t < 800; t++)
        {
		MTR1_CC = 1;
        }
        for (t = 0; t < 15600; t++)
        {
		MTR1_CC = 0;
        }
}

void servo90(){
	MTR1_CC = 1;
        //1,5ms
        for (t = 0; t < 1200; t++)
        {
		MTR1_CC = 1;
        }
        for (t = 0; t < 15200; t++)
        {
		MTR1_CC = 0;
        }
}

void servo180(){
	MTR1_CC = 1;
        //2,0ms
        for (t = 0; t < 1600; t++)
        {
		MTR1_CC = 1;
        }
        for (t = 0; t < 15100; t++)
        {
		MTR1_CC = 0;
        }
}