Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Puppy Linux
Por removido
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Angelito Monteiro Goulart em (última atualização em 11/03/2010)   [ 6844 hits ]

Login: angelito, 130409 pontos

Homepage: http://angelitomg.com   


Descrição

Programa com um simples menu onde o usuário pode escolher entre acender ou apagar os leds conectados à porta paralela. Nos comentários do programa segue a dica de como montar o circuito.

[ Download: led.c ]   [ Enviar nova versão ]

Versões atualizadas deste script (NOVO)
Linux user

Publicado por Marcelo Paiva em 05/03/2010

Changelog: Segue pequena alteração para carregar numero decimal e acender leds, vai pedir numero em decimal, apos segue sequencia do programa original com menus 1,2, e 3, se digitar 5 vai acender metade dos leds 15 é igual a 0F em hexa e é igual a 00001111 em binario acendendo leds conforme sequencia binaria, vou tentar mandar fotos, tenho pouco tempo e não sei usar ainda ferramentas do site, enfim o mais importante é que a base do programa é 10 e funciona, consegui sucesso no Mandriva 2009 com Gnome e pacotes essential, agora as fotos que vou tentar mandar são no ubuntu9.10 com buid-essential.

/*
* Acendedor de leds pela porta paralela
* Angelito M. Goulart
* Setembro/2009
*
* Esquema Eletrico
*
* Pino2 -> 470R -> LED1
* Pino3 -> 470R -> LED2
*
* Pode-se usar do pino 2 ate o pino 9 para ligar os LEDs
* GND -> Do pino 18 ao pino 25
*
*/

#include <stdio.h>
#include <sys/io.h>
int main(void)
{
int opcao;
int altdec; //variavel adicionada para armazenar numero decimal a ser enviado para porta
ioperm(0x378,3,1); //inicializa a porta paralela
outb(0x00, 0x378);
do
{
printf ("\n=====Entre número em decimal=====\n");

scanf ("%d", &altdec); //carrega decimal


printf ("\n=====Acendedor de Leds=====\n");
printf (" 1.Acender Leds\n");
printf (" 2.Apagar Leds\n");
printf (" 3.Sair\n\n");
printf (" Selecione uma opcao: ");
scanf ("%d", &opcao);
if (opcao == 1)
{
//seta porta com decimal carregado em altdec
outb(altdec, 0x378); //caso a opcao seja 1, acende todos os leds,alterado para altdec
}
if (opcao == 2)
{
outb(0x00, 0x378); //caso a opcao seja 2, apaga todos os leds
}
}while (opcao != 3);
outb(0x00, 0x378);
return (0);
}

Marcelo Paiva

(versão 2)

 

[ Esconder código-fonte ]

/*
* Acendedor de leds pela porta paralela
* Angelito M. Goulart
* Setembro/2009
*
* Esquema Eletrico
*
* Pino2 -> 470R -> LED1
* Pino3 -> 470R -> LED2
*
* Pode-se usar do pino 2 ate o pino 9 para ligar os LEDs
* GND -> Do pino 18 ao pino 25
*
*/
#include <stdio.h>
#include <sys/io.h>
int main(void)
{
   int opcao;
   ioperm(0x378,3,1); //inicializa a porta paralela
   outb(0x00, 0x378);
   do
   {
       printf ("\n=====Acendedor de Leds=====\n");
       printf (" 1.Acender Leds\n");
       printf (" 2.Apagar Leds\n");
       printf (" 3.Sair\n\n");
       printf (" Selecione uma opcao: ");
       scanf ("%d", &opcao);
       if (opcao == 1)
       {
      outb(0xFF, 0x378); //caso a opcao seja 1, acende todos os leds
       }
       if (opcao == 2)
       {
      outb(0x00, 0x378); //caso a opcao seja 2, apaga todos os leds
       }
   }while (opcao != 3);
   outb(0x00, 0x378);
   return (0);
}

Scripts recomendados
   Script Linux recomendado vetor01.c (programa que envolve vetor, simples)
   Script Linux recomendado Exemplo de gabaritos de função
   Script Linux recomendado Velha reversa
   Script Linux recomendado Par ou ímpar?
   Script Linux recomendado Comando continue

Comentários
[1] Comentário enviado por mpv2505 em 26/02/2010 - 16:31h:

Angelito,
sou iniciante em Linux, parabéns, excelente seu programa consegui executar ele com Mandriva 2009 e codeblocks, mas nao precisa codeblocks, compilei também na linha de comando, excelente, nota 10, liguei 8 leds a paralela com resistor para proteger leds, acende todas e desliga, alterei o programa e fiz entrada com scanf armazendo numero decimal em variavel que coloquei no lugar do numero 0xFF hexa no comando outb, e carreguei ele com numero em decimal acendou as luzes na sequencia conforme numero binario correspondente, esquema dos leds pode ser encontrado em www.rogercom.com.

excelente parabens

Marcelo Paiva
Quilombo Santa Catarina
mpaiva2505@gmail.com


[2] Comentário enviado por mazinsw em 09/03/2010 - 23:56h:

valeu muito obrigado, eu só sabia fazer no Windows, mas agora vou fazer utilizando uma interface gráfica com um botão para cada led, usando GTK+, mas ainda tenho uma duvida como obtenho o valor que está ajustado na porta?

[3] Comentário enviado por angelito em 10/03/2010 - 00:13h:

Otimo. Assim que fizer, se possivel, poste o codigo. :D Compartilhando e aprendendo :D abraço

[4] Comentário enviado por EnzoFerber em 14/03/2010 - 06:55h:

@mazinsw

Cara, acho que com inb() você pega o valor atual da porta.... da uma olhada na função no 'man' ai, muito tempo que não uso, esqueci os argumentos, mais deve ser inb (porta, variavel), algo do tipo... :)

[5] Comentário enviado por removido em 11/11/2010 - 15:33h:

Depois de horas pesquizando em russo, alemão, inglês, italiano... eu acho algo exatamente da forma que eu queria e em português!? Caramba meu! AHAHHAHahahAhaha



Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.