17 de abril de 2013

De volta a ativa....

Depois de algum tempo (bom um longo tempo na verdade não é mesmo!?) estou aqui novamente para alegria de muitos acadêmicos desesperados da minha doce Engenharia.

As atualizações aqui no blog serão aleatórias ainda, mas pretendo deixa-las organizadas de alguma forma.

Aqui como você já sabe irá encontrar alguns trabalhos bacanas realizados ao longo do tempo na faculdade de engenharia de controle e automação da Sociesc Joinville  E caso apareçam duvidas no decorrer da leitura peço a você que me encaminhe um e-mail para que na medida do possível possa estar auxiliando no seu entendimento.

Sendo assim deixo aberto o espaço para quaisquer criticas e sugestões, afinal de contas todos nós temos o direito de não aceitar tudo o que nos é oferecido. 

E o mais importante de tudo que é DUVIDAR de tudo o que nos é passado. Esta é a melhor forma de aprendizado.

10 de outubro de 2010

Programa Controle de LEDs atraves de porta paralela!!!

#include //biblioteca necessaria para entrada de dados de usuario
#include //biblioteca necessaria para o comando getch ()
#include // Biblioteca necessária para o carregamento da inpout32.dll

//Inpout32
//Declaração dos ponteiros para função.
typedef short _stdcall (*PtrInp)(short EndPorta);
typedef void _stdcall (*PtrOut)(short EndPorta, short datum);
HINSTANCE hLib; //Instância para a DLL inpout32.dll.
PtrInp inportB; //Instância para a função Imp32().
PtrOut outportB; //Instância para a função Out32().
//Inpout32


int main()
{

//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.");
getch();
}
else {//Todo o programa só será executado apenas se a dll for carregada.

//Obtém o endereço da função Inp32 contida na DLL.
inportB = (PtrInp) 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 = (PtrOut) GetProcAddress(hLib, "Out32");
if(outportB == NULL)
{
printf("\n\aErro. Erro ao endereçar a função Out32.");
}

//Inpout32
char teclado=' '; //declaração de variaveis



//interação com usuarios
printf (" Software para controle de LEDs atraves de porta paralela!\n\n");
printf (" Selecione uma das opcoes abaixo:");
printf ("\n\n LED 1 : 1\n LED 2 : 2\n LED 3 : 3\n Rele: 4\n LED 5 : 5\n LED 6 : 6\n LED 7 : 7\n");
printf( "\n\n Zerar todos os LEDs: 0\n");
printf( " Sair do programa: s\n\n ");
teclado = getch (); //função em que o usuario não precisa dar enter para leitura dos dados
while (teclado != 's' ) //enquanto teclado diferente de s executa a tarefa abaixo
{ switch (teclado)
{ case '0':
outportB(0x778,0); //zera todos os LEDs
break;
case '1':
outportB(0x778,1); // acende LED 1
break;
case '2':
outportB(0x378,2); // acende LED 2
break;
case '3':
outportB(0x378,4);
break;
case '4':
outportB(0x378,8); // aciona o rele
break;
case '5':
outportB(0x378,16);
break;
case '6':
outportB(0x378,32);
break;
case '7':
outportB(0x378,64);
break;
case '8':
outportB(0x378,128);
break;
default: // comando necessario caso o usuario digite uma opção invalida
printf (" Opção invalida!!! \n Digite outra letra.\n ");
break;
}
teclado=getch();
}
}
}

28 de setembro de 2010

VHDL --- Primeiros Trabalhos I

Estamos ai novamente... Este é um algoritmo de VHDL para fazer um contador digital, é o principio de funcionamento de um relogio digital que vou postar aki nos proximos dias...... porem ainda não sei se funciona pois to sem o software para poder testar... mas na proxima quinta ja consigo testa-lo na facul... ai vai ficar mais tranquilo.... qualquer coisa eu venho aki e atualizo o post para conserta-lo...

contador 60


library ieee;
use ieee.std_logic_1164.all;
entity contador60 is
      port ( clock, enable : in bit;
                unidade :out integer range 0 to 9;
                dezena :out integer range 0 to 5;
                tc :out bit);
end contador60;

architecture circuito of contador60 is
begin
        process (clock) -- responde ao clock
        variable uni :integer range 0 to 9;
        variable dez :integer range 0 to 5;
        begin
                if (clock = '1' and clk'event) then
                   if enable = '1' then
                     if (uni<9) and (dez = 0) then
                         uni := uni + 1;
                     elsif (uni = 9) then
                              uni := '0';
                             dez := '0';
                          elsif (dez = 1) and (uni < 5) then
                                  dez := dez + 1;
                              elsif (dez = 5) and (uni = 9) then
                                       uni := '0';
                                      dez := '0';
                                      tc := '1';
                 end if
           end if
           unidade <= uni;
           dezena <= dez;

  end process;
end circuito;

30 de junho de 2010

Runge-Kutta ordem 4

Boa tarde Galera!!!

bom quero neste post atualizar o metodo de runge kutta, pois o primeiro que postei estava faltando algumas linhas de comando e outras linhas estavam incorretas... entao quero agradecer aos meus amigos da eng eletrica q ajudaram a corrigir o codigo!!!
ate onde testei o metodo funciona para qualquer funcao.

syms x y
f  = input ('Entre com a equação: ');
x0 = input ('Entre com o valor inicial para x: ');
xf = input ('entre com o valor final para x');
y0 = input ('Entre com o valor inicial y: ');
h  = input ('Entre com o passo desejado: ');
n  = (xf - x0)/h;

for i= 1:n
    k1 = h * subs(f,{x,y}, {x0,y0});
    k2 = h * subs(f,{x,y},{x0 + h/2, y0 +k1/2});
    k3 = h * subs(f,{x,y},{x0 + h/2, y0 +k2/2});
    k4 = h * subs(f,{x,y},{x0 + h, y0 +k3});
    ya= y0+ (1/6) * (k1+(2*k2)+(2*k3)+k4);
    x0 = x0 + h;
    y0 = ya;
    fprintf('y%.0f= %.10f.\n',n,ya)
   
end


Entao esta ai... agora certinhu... este projeto valeu 10 pro prof de cal numerico, e espero que ajude vcs...

beijinhus
adoro vcs

4 de junho de 2010

Metodo de Newton Raphson


Hoje vou postar aqui o primeiro trabalho de calculo numerico que fiz sobre o metodo de newton raphson, como estava aprendendo a usar o matlab a estrutura ficou extenção e sem muita opção de escolha pro usuario quanto as funções porem acredito que posso ajudar a galera que esta começando o estudo de calculo numerico pra entender como se faz o algoritmo... so lembrando nao copie e cole apenas pra ganhar nota... assim vc estara enganando a vc mesmo...

 % metodo_newton_raphson 2.0

    disp('Para FUNÇÃO   x^2 + x - 6     digite: 1');
    disp('Para FUNÇÃO   x^5 - 2x        digite: 2');
    disp('Para FUNÇÃO   x^2 + 15        digite: 3');
    disp('Para SAIR digite: 0');
    disp(' ');
  
    % interação com o usuario:
    oper = input('Digite o numero correspondente a funcao: ');
    a0 = input('   Entre com o limite inferior da funcao: ');
    b0 = input('   Entre com o limite superior da funcao: ');
    a  = input('   Entre com o numero de iteracoes a serem feitas: ' );
    b = 0;
    c = 0;
  
    % media dos limites:
    x = (a0 + b0)/2 ;
 
 
    if  oper==1 %funçao x^2+x-6
             n=0;
             while n
             form1 = x^3 - 2*x^2 - 3*x + 10;
             form2 = 3*x^2 - 4*x -3 ;
             raiz = x - (form1/form2);
             x = raiz;
             n = n+1;
                if n==a
                % disp ('raiz aproximada da função'); raiz;
                str = ['O valor aproximado da raiz é ' num2str(raiz)];
                disp(' ');
                disp (str);
                disp(' ');
                disp(' ');
                disp(' ');
                end
             end
 
    else if oper == 2 %x^5 - 2x
             n=0;
             while n
             form12 = x^5 - 2*x;
             form22 = 5* x^4 - 2;
             raiz2 = x - (form12/form22);
             x = raiz2;
             n = n+1;
                if n==a
                str = ['O valor aproximado da raiz é ' num2str(raiz2)];
                disp(' ');
                disp (str);
                disp(' ');
                disp(' ');
                disp(' ');
                end
             end
     else if oper == 3 %x^2 + 15
           
             n=0;
             while n
             form13 = x^2 + 15;
             form23 = 2* x;
             raiz3 = x - (form13/form23);
             x = raiz3;
             n = n+1;
                if n==a
                str = ['O valor aproximado da raiz é ' num2str(raiz3)];
                disp(' ');
                disp (str);
                disp(' ');
                disp(' ');
                disp(' ');
                end
             end
          end
        end
    end

beijo pra vcs
otimo feriado galera
adoro muitoo