Acionando outros componentes pela porta paralela
Dando sequência à integração de componentes via porta paralela, depois de ver que os acionamentos dos Leds é possível, e que, até mesmo de forma sequencial existe um funcionamento lógico para ser seguido, só depende do usuário/programador, decidir o que fazer com a tensão que sai de um dos pinos da porta paralela.
Por meio dessa tensão, e utilizando recursos de eletrônica de potência é possível o ligar e desligar equipamentos eletro/eletrônicos como motores, lâmpadas, fechaduras elétricas e até mesmo controlar braços robóticos, temporizadores e muito mais.
Em uma variação do código utilizado para o acionamento dos Leds que esta postado em Integração via Porta Paralela - parte 1, pode-se conseguir um acionamento de um relé 5V onde faz-se uma lâmpada ligar e desligar.
Para elaboração do projeto é necessário um módulo relé arduino, uma lâmpada, um cabo paralelo, um computador com porta paralela e uma fonte externa para alimentar o relé, devido falta de uma saída com essa tensão na porta utilizada.
fonte: próprio autor
Código fonte utilizado compilado no DevC++
#include <stdio.h> // Biblioteca Standard Input/Output
#include <stdlib.h>
#include <conio.h> // Biblioteca necessária para o uso da função getch();
#include <windows.h> // Biblioteca necessária para o carregamento da inpout32.dll
#include <time.h>
#define LPT1 0x378
/*Inpout32*/
//Declaração dos ponteiros para função.
typedef short _stdcall (*inpfuncPtr)(short portaddr);
typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);
int main()
{
//system ("color 18");
printf("\n\t\tDATA : %s HORA: %s\n\n",__DATE__,__TIME__);
HINSTANCE hLib; //Instância para a DLL inpout32.dll.
inpfuncPtr inportb; //Instância para a função Imp32().
oupfuncPtr outportb; //Instância para a função Out32().
/*Inpout32*/
//Carrega a DLL na memória.
hLib = LoadLibrary("inpout32.dll");
if(hLib == NULL)
{
printf("\n\aErro. O arquivo inpout32.DLL nao foi encontrado.\nO programa vai terminar apos digitar qualquer tecla.");
return-1;
}
inportb = (inpfuncPtr) GetProcAddress(hLib, "Inp32");
if(inportb == NULL)
{
printf("\n\aErro. Erro ao endereçar a função Inp32.");
}
//Obtém o endereço da função Out32 contida na DLL.
outportb = (oupfuncPtr) GetProcAddress(hLib, "Out32");
if(outportb == NULL)
{
printf("\n\aErro. Erro ao endereçar a função Out32.");
return-1;
}
/*Inpout32*/
//Interface//
{
printf("=============================================================\n");
//Programa de Controle//
char teclado=' ';
puts("\n\tAcionamento de controle de equipamentos externos.");
printf("\n=============================================================\n");
puts("Ligar ou desligar equipamentos acoplados na porta paralela.\nAperte as teclas referentes a eles:\n");
puts("L - LIGA LAMPADA ");
puts("D - DESLIGA LAMPADA ");
puts("\n\n\n(**Quando quiser SAIR o programa digite S.**)");
puts("(***==========================================mecatronizar.blogspot.com.br***)");
teclado=getch();
while(teclado!='p')
{
switch(teclado)
{
case 'L':
outportb(0x378,1); /* A função que manda um byte para a porta paralela no caso o número 1 ou 0000 0001 em binário*/
//system ("colorc8");
break;
case 'D':
outportb(0x378,0X00); /* Novamente a função que manda um dado a porta paralela*/
//system ("color e8");
break;
case 'S':
exit(0);
}
teclado=getch();
}
outportb(0x378,0);
FreeLibrary (hLib);
}
return 0;
}
//fim do else pertencente ao if que testa se carregou a dll
//fim da função main e do programa
Esquema de ligação
Logo abaixo tem uma sugestão de esquema de ligação da lâmpada para o funcionamento do chaveamento da rede com o relé.
fonte: próprio autor
Vale lembrar que com esses procedimentos e as potências dimensionadas de maneira correta é possível a ligação e acionamento de qualquer dispositivo.
Caso seja necessário o projeto completo encontra-se nesse LINK.
Bons estudos!








