Aula de programação C – 12

12. PRÁTICA 12: IMPLEMENTAÇÃO SUBROTINAS PARA CONTROLE DO MOTOR

Referencial Teórico: Operadores de atribuição; Laço While; Funções/Subrotinas.

Objetivo: Controlar o estado de funcionamento e rotação de um motor, por meio da subrotinas de programação.

Materiais: Utilizar botão presente na placa, potenciômetro ligado à entrada 1, motor de corrente contínua ligado à saída A e fonte de alimentação.

12.1 Arquivo Principal

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

void main(){

	configura_portas();

	MOTOR_AB_EN = 1;

	configura_conversor();

	while(1){
		ler_sensor();
		if (sensor >= 500) para_ca_motor();
		if (sensor <= 500) para_la_motor();
		if (botao == 1) ligar_motor();
		if (botao == 0) desligar_motor();
	}
}

12.2 Arquivo Secundário

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

void configura_conversor(){
	OpenADC(ADC_FOSC_8
	&ADC_RIGHT_JUST
	&ADC_4_TAD,
	ADC_CH0
	&ADC_INT_OFF
	&ADC_VREFPLUS_VDD
	&ADC_VREFMINUS_VSS,
	ADC_1ANA);
}

unsigned long sensor;

void ler_sensor(){
	SetChanADC(ADC_CH0);
	ConvertADC();
	while(BusyADC());
	sensor = ReadADC();
}

void ligar_motor();
void para_ca_motor();
void para_la_motor();
void ligar_por_motor();
void desligar_motor();
void freiar_motor();
void invereter_motor();

void ligar_motor(){
	MTR1_EN = 1;
}

void para_ca_motor(){
	MTR1_CW = 1;
	MTR1_CC = 0;
}

void para_la_motor(){
	MTR1_CW = 0;
	MTR1_CC = 1;
}

void ligar_por_motor(){
	MTR1_EN = 1;
	espere_por(10);
	MTR1_EN = 0;
}

void desligar_motor(){
	MTR1_EN = 0;
}

void freiar_motor(){
	MTR1_CW = 1;
	MTR1_CC = 1;
	espere_por(10);
	MTR1_CW = 0;
	MTR1_CC = 0;
	espere_por(10);
}

void invereter_motor(){
	MTR1_CW = ~MTR1_CW;
	MTR1_CC = ~MTR1_CC;
}