Vous êtes sur la page 1sur 21

FACULDADE SUMAR

BACHARELADO EM CINCIA DA COMPUTAO

ATIVIDADE DE LABORATRIO DE PROGRAMAO I

Filipe Augusto Santos Chaves


1421631
Cincia da Computao
3Semestre

CALCULADORA EM JAVA

So Paulo
2015
.

SUMRIO

1 INTRODUO ...........................................................................................................
12
2 DESENVOLVIMENTO..................................................................................................
14
3 CONCLUSO

...........................................................................................................

27

INTRODUO

A presente atividade tem como proposito apresentar uma calculadora sem


bugs e com todas as aplicaes que uma calculadora, normal, apresenta. A
calculadora foi feita em linguagem java utilizando a IDE NetBeans.
No incio a calculadora apresentava alguns bugs, mas me dediquei, pesquisei
foi possvel corrigir esses erros. O que mais implicou no desenvolvimento da
atividade foi a falta de conhecimento na linguagem java, pois estava me dedicando
apenas na linguagem C. No entanto, a calculadora funciona normalmente e os bugs
foram corrigidos.
A calculadora apresenta vinte seis botes, sendo 10 botes numricos
(0,1,2,3,4,5,6,7,8,9), 9 botes representam expresses matemticas (soma,
subtrao, diviso, multiplicao, potncia, Raiz quadrada, Inverso, oposto, igual), 3
botes para apagar dados (Backspace, Clear, All Clear), 3 botes para controle dos
nmeros que sero armazenados na memria [MS( Guardar na memria), MR (Retorna
memria) e MC (Limpa a memria) ].

DESENVOLVIMENTO
A respeitvel atividade apresentada foi iniciada na primeira semana de
outubro, porm, por alguns problemas, foi na terceira semana que conclui a
atividade. Basicamente, fiz o projeto todo em um nico dia (27/10/2015) e no dia
seguinte finalizei corrigindo alguns bugs e nos dias finais fiz a parte da
documentao.
Bom, iniciei tratando dos funcionamentos dos botes numricos e em seguida
das operaes matemticas mais simples e depois as mais complexas, por ltimo
finalizei tratando dos botes MS, MR e MC.

Funcionamentos dos botes


Dos botes numricos:
Os botes que representam os nmeros inteiros de 0 a 9.
Foi aplicado a seguinte logica:

temp = jt_tela.getText();-- Vai pegar o que tem no visor(no caso a tela) e


armazenar na varivel temp que do tipo string.

temp = temp + "7";-- Vai adicionar o que tem no visor mais o nmero 7 ( que foi
usado como exemplo

jt_tela.setText(temp);-- Aqui ir mostrar na tela o temp atualizado, ou seja, com


o nmeros digitado anteriormente mais o 7 que foi adicionado recentemente.

Dos botes de expresses matemticas mais simples:


Tomaremos como exemplo a expresso de adio
1 passo:

operacao = '+'; --Varivel ira guardar o sinal + para quando o usurio aperta o
boto de = cair em um switch e fazer a operao.

n1 = Float.parseFloat(jt_tela.getText());-- Armazena em na varivel N1 o


nmero que estiver na tela e passar de string para o tipo float.

jt_tela.setText("");-- Depois limpa a tela para ser digitado o prximo nmero


2passo:
Quando o usurio aperta o prximo boto e o sinal de igual.

n2 = Float.parseFloat(jt_tela.getText()); -- Aqui o usurio apertou o segundo


nmero que foi armazenado na varivel n2 e foi passado, automaticamente para o
tipo float.

switch(operacao){ O switch foi utilizado, pois a mais de uma expresso


matemtica na calculadora

case '+':-- Se o boto + foi apertado, foi armazenado na varivel operao o sinal
de mais.

resultado = n1 + n2; -- Com os valores armazenados nas duas variveis,


foi criado outra varivel para receber o resultado dos dois nmeros conforme a
expresso escolhida.
break;
}

jt_tela.setText(String.valueOf(resultado));-- Mostrar na tela o resultado da


expresso.
Dos botes de expresses matemticas mais complexas:
Tomaremos como exemplo a expresso de potncia

n1 = Float.parseFloat(jt_tela.getText());-- Armazenado em na varivel n1 o


valor da tela e passa para o tipo float para ser feito o clculo, pois como uma string
no possvel fazer o clculo.
.

resultado = n1*n1;-- O com valor armazenado em uma varivel e estando como


tipo float possvel fazer o calculo,e que foi feito e foi armazenado o resultado na
varivel resultado.

jt_tela.setText(String.valueOf(resultado));-- Depois de ser feito o clculo ser


inserido na tela o valor armazenado na varivel resultado.
Dos botes MS, MR e MC
Primeiramente preciso saber o que esses botes fazem.
MS -- Quando voc tiver um valor e quiser guard-lo, voc usa este boto. Quando voc quiser
somar um valor ao valor armazenado no MS s aperta-lo novamente que ir s com o nmero
armazenado o novo nmero.

MR -- d a voc o valor guardado na memria. Cada vez que voc aperta este boto, ele traz o
valor armazenado anteriormente.

MC -- Apaga o valor armazenado na memria.


Vamos l:
O usurio quer armazenar o valor na memria, ento ele aperta o MS.

memoria = Double.parseDouble(jt_tela.getText());-- Apertando o boto


automaticamente ir armazenar na varivel memoria.

somamemoria = somamemoria + memoria Com o valor armazenado na


varivel memoria, caso o usurio aperte novamente o MS ir somar em outra
varivel somamemoria.
Aps ser armazenado o valor na memria, o usurio quer ver o valor. Ento ele
aperta o MR.

jt_tela.setText(String.valueOf(somamemoria)); -- Automaticamente, ir
aparecer na tela o valor armazenado e convertendo o valor para uma string
Caso o usurio queira apagar o valor armazenado ele apertar o boto MC

memoria=0; -- Zera o valor, ou seja, muda o valor da memria por zero


.

somamemoria=0; -- Zera o valor, ou seja, muda o valor da memria por zero

Dos botes com funo de apagar o que estiver na tela


O usurio apertando o boto backspace

String str = jt_tela.getText(); -- Foi criado uma varivel str, que ir receber o
valor na tela.

StringBuilder w = new StringBuilder(str); -- A classe stringbuilder permite criar


ou manipular dados de uma strig, preciso utilizar esse mtodo para construir o
boto backspace.

str = String.valueOf( w.deleteCharAt(str.length() - 1) ); -- A varivel str ser


igual o valor recebido na tela menos um caracter

jt_tela.setText(str);-- mostrar o valor da varivel str em tela.

Os cdigos utilizados nos botes


VARIAVELQUAISQUER.jt_tela.setText("");-- Bom, esse cdigo insere o valor
da varivel na tela jt_tela.

VARIAVELQUAISQUER = Double.parseDouble(jt_tela.getText());-- Esse


cdigo recebe para a varivel QUAISQUER um valor inserido. Nesse caso, a
varivel er uma string e foi passado para o tipo double.

INICIO

LIGA CHAVE GERAL

NVEL EST
NORMAL?

SIM

NO
NVEL EST
BAIXO?

NO

SIM
LIGA VLVULA

NVEL EST
ALTO?

NO

SIM
DESLIGA VLVULA
FIM

FIGURA 2: Fluxograma do processo. Aps a ativao da chave geral h a


verificao de como est o nvel se este estiver normal o programa vai para o final.
Caso contrario o programa verifica se o nvel est baixo, se sim a vlvula ativada.
Caso contrario o programa verifica se o nvel est alto se sim a vlvula desligada.
Caso contraria, o programa ir para o final. Esta verificao dever ser feita a todo
tempo.

Partindo-se do fluxograma foi possvel a realizao do programa no Ldmicro.


Este software possui uma biblioteca de componentes que engloba desde contatos
normalmente aberto e fechado (NA e NF) at contadores, temporizadores (Santos,
2006) e controle do tipo PWM (Ahmed, 1999). A figura 3 abaixo mostra a biblioteca
de componentes do Ldmicro.

Figura 3: Biblioteca de componentes do software Ldmicro. Aqui podemos localizar


uma gama razovel de componentes, eles podem variar desde contatos at chaves,
temporizadas e controle PWM.
A lgica obtida para o funcionamento do automatismo de controle de nvel foi
relativamente simples, sendo que os nicos componentes de controle que devero
ser utilizados sero os contatos NA (normalmente abertos) os contatos NF
(normalmente fechados) e sadas comuns (Santos, 2006) Vemos na figura 4 o
programa feito no Ldmicro, nota-se tambm que foi necessrio o uso de memrias
.

10

internas do microcontrolador (Flores, 2005). As sadas e entradas do sistema devem


ser endereadas de forma coerente com as sadas e entradas do microcontrolador,
estes endereos podem ser encontrados nos datasheets dos microcontroladores
(Marques, 2004). No caso do software Ldmicro as entradas de dados so sempre
denominadas de X seguidas de algum numero ou texto, j as sadas so
denominadas de Y tambm seguidas de nmeros ou textos. A relao entre as
sadas e entradas do software com as sadas e entrada do microcontrolador pode
ser vista na Tabela 1. Outra vantagem deste software est no fato de podermos
simular a situao. Ou seja, antes de conectarmos qualquer componente ao circuito
possvel a verificao da lgica de programao no prprio software. Est
ferramenta muito til, j a simulao ser um primeiro teste relacionado com o
funcionamento da lgica.

Figura 4: Software de controle feito no Ldmicro. Vemos que s com o uso de


contatos NA, NF e sadas normais foi possvel realizarmos a programao,
respeitando a lgica proposta.Temos tambm o endereamento utilizado (Tabela 1).
O R1 indica o uso de um endereo interno de memria (Flores, 2005).
Depois de feitas a programao e a simulao hora de compilarmos
(Pereira, 2005). O processo de compilao consiste em convertermos uma
linguagem de programao de alto nvel, conhecida tambm como linguagem de

11

usurio, no nosso caso o LADDER, em linguagem de baixo nvel, linguagem de


mquina ou hexadecimal (Pereira, 2005).
Tabela 1: Relao entre as entradas e sadas (E/S) do microcontrolador com as
entradas e sadas programadas no Ldmicro e estruturas externas (sensores,
atuadores e indicadores) .RA e RB indicam as portas utilizadas do microcontrolador
(Pereira, 2005).
E/S

E/S

Estrutura a ser

Microcontrolador
RA2 - Pino 1
RA4 - Pino 3
RB4 - Pino 10
RB6 - Pino 12
RA1 - Pino 18

Software Ldmicro
Xalto
Xbaixo
YLED1
YLED2
Ysolenoide

controlada
Sensor de nvel alto
Sensor de nvel baixo
Indica entrada de liquido
Indica nvel normal
Controla a entrada

O processo de compilao ir gerar um arquivo hexadecimal que poder ser


gravado no microcontrolador. Para que a gravao possa ocorrer necessrio que
se tenha um software de gravao, este software nica e exclusivamente utilizado
para que sejam feitos a comunicao do computador com o microcontrolador e o
envio do cdigo hexadecimal para o microcontrolador, neste trabalho foi utilizado o
Icprog (Gtronica, 2007). Alm do software para gravao e tambm necessrio um
hardware de gravao (Pereira, 2005). Este hardware nada mais que um circuito
eletrnico capaz de fazer a comunicao fsica entre o microcontrolador e o
computador, este processo pode ser visto na figura 5. Um exemplo de circuito
eletrnico de gravao para microcontroladores PIC16f628 pode ser visto na figura
6, estes circuitos so facilmente encontrados em lojas especializadas.

12

Figura 5: Temos o processo de transferncia do arquivo em hexadecimal para o


microcontrolador. O hardware de gravao o circuito eletrnico capaz de realizar a
interface entre computador e microcontrolador. E o software de gravao o
responsvel pelo envio do arquivo hexadecimal.

Figura 6: Exemplo de placa de circuito para gravao de microcontroladores


PIC16f628. Esta placa utilizada na comunicao entre o computador e o
microcontrolador.
Aps o microcontrolador estar programado ele j est praticamente apto a
executar a funo de controlar o enchimento automtico do recipiente com liquido.
Porm antes disso faz-se necessrio a criao de um circuito eletrnico de
acionamento e proteo para o microcontrolador (drivers de potencia).

2.2 Descrio do Hardware.


O hardware de controle do automatismo tem duas funes bsicas, controlar
os componentes de sada e entrada de informaes e proteger o microcontrolador
de altas correntes e tenses, j que esse normalmente trabalha com tenses e
correntes relativamente baixas (Pereira, 2005).

13

O que ir controlar todo o processo ser o microcontrolador. O


processamento do programa feito na estrutura interna do mesmo que composta
por diversos perifricos (Pereira, 2005).
Quando um sinal enviado a porta de entrada de um microcontrolador este
ir processar a informao e ligar est ao programa. Aps a lgica ter sido
executada o microcontrolador enviar para uma de suas sadas um sinal, agora
processado, que ter a funo especifica determinada pelo programa.
Um exemplo para este processo pode ser visto no presente trabalho. Quando
o liquido se encontra em um nvel abaixo do esperado o sensor de nvel baixo ir
enviar um sinal para a entrada do microcontrolador especificada no programa, este
sinal ser processado. Em seguida o microcontrolador enviar um sinal processado
a sada que foi previamente determinada. Neste caso o sinal de sada servir para
ativar a vlvula solenide.
O hardware aqui proposto ir exatamente servir para interfacear as portas
de entrada e sada do microcontrolador com os sensores, sinalizadores e vlvula
solenide.

VCC
D

R2
R3
R2
R3

18

17

16

15

VSS 5

S1

PIC16F628 14 V

13
13

12

11

10

T1

R1

C1
Xtal

C2

VCC

DD

RL
VCC

R1

RL
R1

14

Figura 7: Circuito eletrnico utilizado para controlar os dispositivos de entrada e


sada do sistema.
O circuito eletrnico pode ser dividido em quatro grupos, so eles: O
microcontrolador, os circuitos de entrada de dados, os circuitos de sadas de dados
e o oscilador.
O microcontrolador pode ser considerado o crebro do circuito, j que ele
que executar as informaes programadas. A escolha da pinagem a ser utilizada
deve estar de acordo com o endereamento dado no programa. A figura 8 abaixo
ilustra a pinagem do microcontrolador PIC16F628.
Figura 8: Descrio da pinagem do microcontrolador PIC16F62X, classe que
engloba o PIC16F628 . As entradas e sadas so representadas por RA e RB (ver
Anexo A).
Os circuitos de entrada so aqueles que recebero o sinal dos sensores de
nvel. Os pinos utilizados para este fim foram o pino 1 e o pino 3 (ver figura 7). O
circuito bsico de entrada pode ser visto na figura 9. Temos dois resistores, sendo
que o R1 utilizado como limitador de corrente, e o R2 utilizado para forar a
entrada a zero quando no temos nvel alto (Capuano, 2006).
Quando algum dos sensores for ativado haver o envio de pulso para este
circuito que por sua vez permitir que o sinal entre com um valor adequado no
microcontrolador. O dimensionamento de R1 e R2 devem ser feitos baseados no
valor do pulso que ser enviado pelos sensores (Capuano, 2006). O circuito tem
assim um papel controlar a intensidade de corrente que o microcontrolador ir
receber..
.

15

.
R2

R3

Figura 9: Circuito de proteo da entrada do microcontrolador. Quando algum dos


sensores for acionado um pulso ser enviado a este circuito que ter a funo de
limitar a corrente que entrar no microcontrolador. Os valores de R1 e R2 so
dimensionados a partir do valor da amplitude do pulso.
Os circuitos de sada serviro para acionar a solenide a as sinalizaes.
Assim como as entradas dos microcontroladores s devem receber correntes
relativamente baixas. As sadas enviam pulsos de sinal muito baixo. Esses sinais
normalmente no so suficientes para acionar os componentes de sada. Por isso, o
uso de circuitos eletrnicos de sada se faz necessrio. Foram utilizados neste
trabalho dois tipos de circuito de sada. O circuito utilizado no acionamento do
solenide (figura 10) deve-se ao fato desta ter uma tenso de ativao relativamente
alta (referencia). O mesmo se observou na sinalizao, como os componentes
possuem altos valores de tenso de trabalho fez-se necessrio o uso do circuito de
controle de potencia (figura 11). Ambos os circuitos de controle foram feitos
utilizando transistores trabalhando como chave (Marques, 2004).
VCC

S1

R1

T1

Figura 10: Circuito de acionamento da vlvula solenide. Quando um pulso


enviado a sada do microcontrolador a polarizao do transistor ocorre causando o
.

16

fechamento da bobina do rel e por conseqncia a vlvula solenide ativada. T1


o transistor, D o diodo de proteo, R1 o resistor de polarizao de base e S1
a bobina da vlvula solenide.
VCC

RL

R1

Figura 11: Circuito de acionamento da sinalizao. Quando um pulso enviado a


sada do microcontrolador a polarizao do transistor ocorre fazendo com que o
fluxo de corrente acione a sinalizao. O resistor R1 de polarizao e o resistor RL
o limitador de corrente do LED.

O circuito oscilador utilizado nos microcontroladores para gerar o


sincronismo nos processos internos maiores, detalhes consultar Pereira, 2005. O
modelo bsico de um oscilador pode ser visto abaixo (figura 12) ele composto por
dois capacitores C! e C2 e um cristal oscilador.
C1

Xtal

C2

17

Figura 12: Circuito bsico de oscilao. Este circuito utilizado para gerar
sincronismo entre as diversas funes internas do microcontrolador.
Com o circuito eletrnico de controle montado basta que sejam feitas a
interligao com os sensores, atuadores e sinalizadores juntamente com o recipiente
para que o sistema possa ser testado. A figura 13 mostra um diagrama geral de
como ser a disposio dos componentes no recipiente. Vemos que todos os
componentes de controle esto ligados no circuito eletrnico.

Sensor de nvel alto:


Quando ativado a
vlvula solenide
desativada.

Sensor de nvel baixo:


Quando ativado a
vlvula solenide
ativada.

Vlvula solenide: Utilizada


para controlar a entrada de
liquido
Sinalizao: Indicam
quando o recipiente
est em nvel normal
ou se enchendo.

RECIPIENTE
Sada de liquido
Circuito
eletrnico
18

Figura 13: Diagrama esquemtico da ligao dos componentes no recipiente.


Vemos que os sensores, atuadores e sinalizadores esto interligados no circuito
eletrnico de controle.

CONCLUSO
A automao industrial e residencial vem cada vez mais se tornado
parte do nosso dia-a-dia.

A cada instante surgem novos e sofisticados

sistemas de automao que visam facilitar as nossos tarefas tanto no trabalho


como em casa.
O presente trabalho props uma soluo prtica e fcil para a
automao de um sistema de controle de nvel, tendo como controlador o
.

19

circuito integrado PIC16F628. A escolha deste circuito foi feita devido a ele
possuir grande aceitao na indstria e no comercio.
O sistema consiste de um recipiente que deve ser enchido
automaticamente com um liquido qualquer. Para foram utilizados dois
sensores de nvel, sendo um de nvel alto e outro de nvel baixo, uma vlvula
solenide e um sistema de sinalizao.
Quando o sensor de nvel baixo for ativado um sinal ser enviado para
o microcontrolador, que por sua vez far com que a vlvula atue, liberando a
entrada de liquido no recipiente. Quando o sensor de nvel alto for acionado a
vlvula ser desligada fazendo com que o liquido para de entrar.
Tendo como base as simulaes realizadas, temos que o sistema
realizado pode ser usado de forma adequada para realizao do controle de
nvel de liquido.

REFERNCIAS BIBLIORFICAS
Ahmed, A. Eletrnica de Potncia, So Paulo: Person Education, 1999.
Bonacorso, N. G. Noll, V. Automao Eletropneumatica, 9 ed. So Paulo: rica,
2006.
Capuano, G. F. e Idoeta, I. V. Elementos de Eletrnica Digital, 38 ed. So Paulo:
rica, 2006.
.

20

Flores, A. Matinez, E. Programacin Del PIC 16F876A Con Software LDmicro


para elaboracin de un PLC. UNEFA- Ncleo Maracay. 2006.
Georgini, M. Automao Aplicada: Descrio e Implementao de Sistemas
Seqenciais com PLC, 8 ed., So Paulo: rica, 2007.
Gtronica, IC-PROG: Manual de Configurao e Programao, Disponvel em:
<http://shop.gtronica.com/download/programadores/IC-prog%20conf%20e
%20prog.pdf> Acesso em 04 de Dezembro de 2007.
Marques, B. E. A. Cruz, E. C. A. et al, Dispositivos Semicondutores: Diodos e
transistores, 9 ed. So Paulo: rica, 2004.
Natale, F. Automao Industrial, 8 ed. So Paulo: rica, 2006.
Pereira, F. Microcontroladores PIC: Programao em C, 4 ed. So Paulo: rica,
2005.
Santos, W. E. e Silveira, P. R. Automao e Controle Discreto, 7 ed. So Paulo:
rica, 2006.
Thomazini, D. e Albuquerque, P. U. B. Sensores Industriais: Fundamentos e
Aplicaes, 3 ed. So Paulo, rica, 2007.

21