documentação da calculadora java

27
FACULDADE SUMARÉ BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO ATIVIDADE DE LABORATÓRIO DE PROGRAMAÇÃO I Filipe Augusto Santos Chaves 1421631 Ciência da Computação 3°Semestre CALCULADORA EM JAVA . 1

description

explicando os códigos utilizados em uma calculadora virtual feita na linguagem java

Transcript of documentação da calculadora java

Page 1: documentação da calculadora java

FACULDADE SUMARÉ

BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO

ATIVIDADE DE LABORATÓRIO DE PROGRAMAÇÃO I

Filipe Augusto Santos Chaves1421631

Ciência da Computação 3°Semestre

CALCULADORA EM JAVA

São Paulo2015

. 1

Page 2: documentação da calculadora java

SUMÁRIO

1 INTRODUÇÃO .........................................................................................................12

2 DESENVOLVIMENTO.................................................................................................14

3 CONCLUSÃO .........................................................................................................27

. 2

Page 3: documentação da calculadora java

INTRODUÇÃO

A presente atividade tem como proposito apresentar uma calculadora sem

bugs e com todas as aplicações que uma calculadora, normal, apresenta. A

calculadora foi feita em linguagem java utilizando a IDE NetBeans.

No início a calculadora apresentava alguns bugs, mas me dediquei, pesquisei

é foi possível 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 botões, sendo 10 botões numéricos

(0,1,2,3,4,5,6,7,8,9), 9 botões representam expressões matemáticas (soma,

subtração, divisão, multiplicação, potência, Raiz quadrada, Inverso, oposto, igual), 3

botões para apagar dados (Backspace, Clear, All Clear), 3 botões para controle dos

números que serão armazenados na memória [MS(Guardar na memória), MR (Retorna

memória) e MC (Limpa a memória) ].

. 3

Page 4: documentação da calculadora java

DESENVOLVIMENTO

A respeitável atividade apresentada foi iniciada na primeira semana de

outubro, porém, 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

documentação.

Bom, iniciei tratando dos funcionamentos dos botões numéricos e em seguida

das operações matemáticas mais simples e depois as mais complexas, por último

finalizei tratando dos botões MS, MR e MC.

Funcionamentos dos botões

Dos botões numéricos:Os botões que representam os números 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 variável temp que é do tipo string.

temp = temp + "7";-- Vai adicionar o que tem no visor mais o número 7 ( que foi

usado como exemplo

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

o números digitado anteriormente mais o 7 que foi adicionado recentemente.

Dos botões de expressões matemáticas mais simples:Tomaremos como exemplo a expressão de adição

1° passo:

operacao = '+'; --Variável ira guardar o sinal + para quando o usuário aperta o

botão de ‘=’ cair em um switch e fazer a operação.

. 4

Page 5: documentação da calculadora java

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

número que estiver na tela e passar de string para o tipo float.

jt_tela.setText("");-- Depois limpa a tela para ser digitado o próximo número

2°passo:

Quando o usuário aperta o próximo botão e o sinal de igual.

n2 = Float.parseFloat(jt_tela.getText()); -- Aqui o usuário apertou o segundo

número que foi armazenado na variável n2 e foi passado, automaticamente para o

tipo float.

switch(operacao){ O switch foi utilizado, pois a mais de uma expressão

matemática na calculadora

case '+':-- Se o botão + foi apertado, foi armazenado na variável operação o sinal

de mais.

resultado = n1 + n2; -- Com os valores armazenados nas duas variáveis,

foi criado outra variável para receber o resultado dos dois números conforme a

expressão escolhida.

break;

}

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

expressão.

Dos botões de expressões matemáticas mais complexas:Tomaremos como exemplo a expressão de potência

n1 = Float.parseFloat(jt_tela.getText());-- Armazenado em na variável n1 o

valor da tela e passa para o tipo float para ser feito o cálculo, pois como uma string

não é possível fazer o cálculo.

resultado = n1*n1;-- O com valor armazenado em uma variável e estando como

tipo float é possível fazer o calculo,e é que foi feito e foi armazenado o resultado na

variável resultado.

. 5

Page 6: documentação da calculadora java

jt_tela.setText(String.valueOf(resultado));-- Depois de ser feito o cálculo

será inserido na tela o valor armazenado na variável resultado.

Dos botões MS, MR e MC

Primeiramente é preciso saber o que esses botões fazem.

MS -- Quando você tiver um valor e quiser guardá-lo, você usa este botão. Quando você quiser

somar um valor ao valor armazenado no MS é só aperta-lo novamente que irá só com o número

armazenado o novo número.

MR -- dá a você o valor guardado na memória. Cada vez que você aperta este botão, ele traz o

valor armazenado anteriormente.

MC -- Apaga o valor armazenado na memória.

Vamos lá:

O usuário quer armazenar o valor na memória, então ele aperta o MS.

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

automaticamente irá armazenar na variável memoria.

somamemoria = somamemoria + memoria – Com o valor armazenado na

variável memoria, caso o usuário aperte novamente o MS irá somar em outra

variável somamemoria.

Após ser armazenado o valor na memória, o usuário quer ver o valor. Então 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 usuário queira apagar o valor armazenado ele apertará o botão MC

memoria=0; -- Zera o valor, ou seja, muda o valor da memória por zero

somamemoria=0; -- Zera o valor, ou seja, muda o valor da memória por zero

. 6

Page 7: documentação da calculadora java

Dos botões com função de apagar o que estiver na tela

O usuário apertando o botão backspace

String str = jt_tela.getText(); -- Foi criado uma variável 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 método para construir o

botão backspace.

str = String.valueOf( w.deleteCharAt(str.length() - 1) ); -- A variável str será

igual o valor recebido na tela menos um caracter

jt_tela.setText(str);-- mostrará o valor da variável str em tela.

Os códigos utilizados nos botões

VARIAVELQUAISQUER.jt_tela.setText("");-- Bom, esse código insere o valor

da variável na tela jt_tela.

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

código recebe para a variável QUAISQUER um valor inserido. Nesse caso, a

variável erá uma string e foi passado para o tipo double.

. 7

Page 8: documentação da calculadora java

. 8

Page 9: documentação da calculadora java

FIGURA 2: Fluxograma do processo. Após a ativação da chave geral há a

verificação de como está o nível se este estiver normal o programa vai para o final.

Caso contrario o programa verifica se o nível está baixo, se sim a válvula é ativada.

Caso contrario o programa verifica se o nível está alto se sim a válvula é desligada.

Caso contraria, o programa irá para o final. Esta verificação deverá ser feita a todo

tempo.

.

INICIO

LIGA CHAVE GERAL

NÃO

NÃONÍVEL ESTÁ ALTO?

SIM

NÍVEL ESTÁ BAIXO?

SIM

LIGA VÁLVULA

DESLIGA VÁLVULA

FIM

NÍVEL ESTÁ NORMAL?

NÃO

SIM

9

Page 10: documentação da calculadora java

Partindo-se do fluxograma foi possível a realização 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 razoável de componentes, eles podem variar desde contatos até chaves,

temporizadas e controle PWM.

A lógica obtida para o funcionamento do automatismo de controle de nível foi

relativamente simples, sendo que os únicos componentes de controle que deverão

ser utilizados serão os contatos NA (normalmente abertos) os contatos NF

(normalmente fechados) e saídas comuns (Santos, 2006) Vemos na figura 4 o

programa feito no Ldmicro, nota-se também que foi necessário o uso de memórias

. 10

Page 11: documentação da calculadora java

internas do microcontrolador (Flores, 2005). As saídas e entradas do sistema devem

ser endereçadas de forma coerente com as saídas e entradas do microcontrolador,

estes endereços podem ser encontrados nos datasheet´s dos microcontroladores

(Marques, 2004). No caso do software Ldmicro as entradas de dados são sempre

denominadas de “X” seguidas de algum numero ou texto, já as saídas são

denominadas de “Y” também seguidas de números ou textos. A relação entre as

saídas e entradas do software com as saídas e entrada do microcontrolador pode

ser vista na Tabela 1. Outra vantagem deste software está no fato de podermos

simular a situação. Ou seja, antes de conectarmos qualquer componente ao circuito

é possível a verificação da lógica de programação no próprio software. Está

ferramenta é muito útil, já a simulação será um primeiro teste relacionado com o

funcionamento da lógica.

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

contatos NA, NF e saídas normais foi possível realizarmos a programação,

respeitando a lógica proposta.Temos também o endereçamento utilizado (Tabela 1).

O R1 indica o uso de um endereço interno de memória (Flores, 2005).

Depois de feitas a programação e a simulação é hora de compilarmos

(Pereira, 2005). O processo de compilação consiste em convertermos uma

linguagem de programação de alto nível, conhecida também como linguagem de

. 11

Page 12: documentação da calculadora java

usuário, no nosso caso o LADDER, em linguagem de baixo nível, linguagem de

máquina ou hexadecimal (Pereira, 2005).

Tabela 1: Relação entre as entradas e saídas (E/S) do microcontrolador com as

entradas e saídas programadas no Ldmicro e estruturas externas (sensores,

atuadores e indicadores) .RA e RB indicam as portas utilizadas do microcontrolador

(Pereira, 2005).

E/S

Microcontrolador

E/S

Software Ldmicro

Estrutura a ser

controlada

RA2 - Pino 1 Xalto Sensor de nível alto

RA4 - Pino 3 Xbaixo Sensor de nível baixo

RB4 - Pino 10 YLED1 Indica entrada de liquido

RB6 - Pino 12 YLED2 Indica nível normal

RA1 - Pino 18 Ysolenoide Controla a entrada

O processo de compilação irá gerar um arquivo hexadecimal que poderá ser

gravado no microcontrolador. Para que a gravação possa ocorrer é necessário que

se tenha um software de gravação, este software é única e exclusivamente utilizado

para que sejam feitos a comunicação do computador com o microcontrolador e o

envio do código hexadecimal para o microcontrolador, neste trabalho foi utilizado o

Icprog (Gtronica, 2007). Além do software para gravação e também necessário um

hardware de gravação (Pereira, 2005). Este hardware nada mais é que um circuito

eletrônico capaz de fazer a comunicação física entre o microcontrolador e o

computador, este processo pode ser visto na figura 5. Um exemplo de circuito

eletrônico de gravação para microcontroladores PIC16f628 pode ser visto na figura

6, estes circuitos são facilmente encontrados em lojas especializadas.

. 12

Page 13: documentação da calculadora java

Figura 5: Temos o processo de transferência do arquivo em hexadecimal para o

microcontrolador. O hardware de gravação é o circuito eletrônico capaz de realizar a

interface entre computador e microcontrolador. E o software de gravação é o

responsável pelo envio do arquivo hexadecimal.

Figura 6: Exemplo de placa de circuito para gravação de microcontroladores

PIC16f628. Esta placa é utilizada na comunicação entre o computador e o

microcontrolador.

Após o microcontrolador estar programado ele já está praticamente apto a

executar a função de controlar o enchimento automático do recipiente com liquido.

Porém antes disso faz-se necessário a criação de um circuito eletrônico de

acionamento e proteção para o microcontrolador (driver´s de potencia).

. 13

Page 14: documentação da calculadora java

2.2 Descrição do Hardware.

O hardware de controle do automatismo tem duas funções básicas, controlar

os componentes de saída e entrada de informações e proteger o microcontrolador

de altas correntes e tensões, já que esse normalmente trabalha com tensões e

correntes relativamente baixas (Pereira, 2005).

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

processamento do programa é feito na estrutura interna do mesmo que é composta

por diversos periféricos (Pereira, 2005).

Quando um sinal é enviado a porta de entrada de um microcontrolador este

irá processar a informação e ligará está ao programa. Após a lógica ter sido

executada o microcontrolador enviará para uma de suas saídas um sinal, agora

processado, que terá a função especifica determinada pelo programa.

Um exemplo para este processo pode ser visto no presente trabalho. Quando

o liquido se encontra em um nível abaixo do esperado o sensor de nível 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 saída que foi previamente determinada. Neste caso o sinal de saída servirá para

ativar a válvula solenóide.

O hardware aqui proposto irá exatamente servir para “interfacear” as portas

de entrada e saída do microcontrolador com os sensores, sinalizadores e válvula

solenóide.

. 14

Page 15: documentação da calculadora java

Figura 7: Circuito eletrônico utilizado para controlar os dispositivos de entrada e

saída do sistema.

O circuito eletrônico pode ser dividido em quatro grupos, são eles: O

microcontrolador, os circuitos de entrada de dados, os circuitos de saídas de dados

e o oscilador.

O microcontrolador pode ser considerado o “cérebro” do circuito, já que é ele

que executará as informações programadas. A escolha da pinagem a ser utilizada

deve estar de acordo com o endereçamento dado no programa. A figura 8 abaixo

ilustra a pinagem do microcontrolador PIC16F628.

Figura 8: Descrição da pinagem do microcontrolador PIC16F62X, classe que

engloba o PIC16F628 . As entradas e saídas são representadas por RA e RB (ver

Anexo A).

Os circuitos de entrada são aqueles que receberão o sinal dos sensores de

nível. Os pinos utilizados para este fim foram o pino 1 e o pino 3 (ver figura 7). O

circuito básico 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 forçar a

entrada a zero quando não temos nível alto (Capuano, 2006).

. 15

PIC16F628

1

2

3

4

5

6

7

8

9

13

10

11

12

13

14

15

16

17

18

VDDVSS

C1

C2Xtal

S1

T1

D

R1

R1

R1

RL

RL

R2

R2

R3

R3

VCC

VCC

VCC

Page 16: documentação da calculadora java

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..

.

Figura 9: Circuito de proteção da entrada do microcontrolador. Quando algum dos

sensores for acionado um pulso será enviado a este circuito que terá a função de

limitar a corrente que entrará no microcontrolador. Os valores de R1 e R2 são

dimensionados a partir do valor da amplitude do pulso.

Os circuitos de saída servirão para acionar a solenóide a as sinalizações.

Assim como as entradas dos microcontroladores só devem receber correntes

relativamente baixas. As saídas enviam pulsos de sinal muito baixo. Esses sinais

normalmente não são suficientes para acionar os componentes de saída. Por isso, o

uso de circuitos eletrônicos de saída se faz necessário. Foram utilizados neste

trabalho dois tipos de circuito de saída. O circuito utilizado no acionamento do

solenóide (figura 10) deve-se ao fato desta ter uma tensão de ativação relativamente

alta (referencia). O mesmo se observou na sinalização, como os componentes

possuem altos valores de tensão de trabalho fez-se necessário o uso do circuito de

controle de potencia (figura 11). Ambos os circuitos de controle foram feitos

utilizando transistores trabalhando como chave (Marques, 2004).

. 16

R2

R3

S1

T1

D

R1

VCC

Page 17: documentação da calculadora java

Figura 10: Circuito de acionamento da válvula solenóide. Quando um pulso é

enviado a saída do microcontrolador a polarização do transistor ocorre causando o

fechamento da bobina do relé e por conseqüência a válvula solenóide é ativada. T1

é o transistor, D é o diodo de proteção, R1 é o resistor de polarização de base e S1

é a bobina da válvula solenóide.

Figura 11: Circuito de acionamento da sinalização. Quando um pulso é enviado a

saída do microcontrolador a polarização do transistor ocorre fazendo com que o

fluxo de corrente acione a sinalização. O resistor R1 é de polarização 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 básico de um oscilador pode ser visto abaixo (figura 12) ele é composto por

dois capacitores C! e C2 e um cristal oscilador.

. 17

R1

RL

VCC

Page 18: documentação da calculadora java

Figura 12: Circuito básico de oscilação. Este circuito ´utilizado para gerar

sincronismo entre as diversas funções internas do microcontrolador.

Com o circuito eletrônico de controle montado basta que sejam feitas a

interligação 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 disposição dos componentes no recipiente. Vemos que todos os

componentes de controle estão ligados no circuito eletrônico.

. 18

C2Xtal

C1

Válvula solenóide: Utilizada para controlar a entrada de liquido

RECIPIENTE

Saída de liquido

Sensor de nível alto: Quando é ativado a válvula solenóide é desativada.

Sensor de nível baixo: Quando é ativado a válvula solenóide é ativada.

Sinalização: Indicam quando o recipiente está em nível normal ou se enchendo.

Circuito eletrônico

Page 19: documentação da calculadora java

Figura 13: Diagrama esquemático da ligação dos componentes no recipiente. Vemos

que os sensores, atuadores e sinalizadores estão interligados no circuito eletrônico

de controle.

CONCLUSÃO

. 19

Page 20: documentação da calculadora java

A automação industrial e residencial vem cada vez mais se tornado

parte do nosso dia-a-dia. A cada instante surgem novos e sofisticados

sistemas de automação que visam facilitar as nossos tarefas tanto no trabalho

como em casa.

O presente trabalho propôs uma solução prática e fácil para a

automação de um sistema de controle de nível, tendo como controlador o

circuito integrado PIC16F628. A escolha deste circuito foi feita devido a ele

possuir grande aceitação na indústria e no comercio.

O sistema consiste de um recipiente que deve ser enchido

automaticamente com um liquido qualquer. Para foram utilizados dois

sensores de nível, sendo um de nível alto e outro de nível baixo, uma válvula

solenóide e um sistema de sinalização.

Quando o sensor de nível baixo for ativado um sinal será enviado para

o microcontrolador, que por sua vez fará com que a válvula atue, liberando a

entrada de liquido no recipiente. Quando o sensor de nível alto for acionado a

válvula será desligada fazendo com que o liquido para de entrar.

Tendo como base as simulações realizadas, temos que o sistema

realizado pode ser usado de forma adequada para realização do controle de

nível de liquido.

REFERÊNCIAS BIBLIORÁFICAS

. 20

Page 21: documentação da calculadora java

Ahmed, A. Eletrônica de Potência, São Paulo: Person Education, 1999.

Bonacorso, N. G. Noll, V. Automação Eletropneumatica, 9 ed. São Paulo: Érica, 2006.

Capuano, G. F. e Idoeta, I. V. Elementos de Eletrônica Digital, 38 ed. São Paulo: Érica, 2006.

Flores, A. Matinez, E. Programación Del PIC 16F876A Con Software LDmicro para elaboración de un PLC. UNEFA- Núcleo Maracay. 2006.

Georgini, M. Automação Aplicada: Descrição e Implementação de Sistemas Seqüenciais com PLC, 8 ed., São Paulo: Érica, 2007.

Gtronica, IC-PROG: Manual de Configuração e Programação, Disponível 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. São Paulo: Érica, 2004.

Natale, F. Automação Industrial, 8 ed. São Paulo: Érica, 2006.

Pereira, F. Microcontroladores PIC: Programação em C, 4 ed. São Paulo: Érica, 2005.

Santos, W. E. e Silveira, P. R. Automação e Controle Discreto, 7 ed. São Paulo: Érica, 2006.

Thomazini, D. e Albuquerque, P. U. B. Sensores Industriais: Fundamentos e Aplicações, 3 ed. São Paulo, Érica, 2007.

. 21