Aquisição de Dados com o Excel
A planilha Excel possui um interpretador da linguagem Visual
Basic, que permite ler os dados diretamente da porta de jogos ou da porta
paralela. (VBA - Visual Basic Applications)
Vantagens em usar o Excel na aquisição e análise
dos dados:
- os dados ficam armazenados em uma planilha eletrônica.
Planilhas eletrônicas
- costumam estar disponíveis nas escolas;
- são muito úteis em vários campos de atividade, assim como na vida doméstica;
- permitem a construção de gráficos;
- a linguagem Visual Basic é simples e poderosa
- é possível programar em poucas linhas
Primeiros passos para contruir planilha que lê a entrada da porta de jogos.
- controles do Excel => automatizam tarefas executadas com freqüência
- Macros => seqüência de comandos e funções armazenados em
um módulo do VBA.
- macros podes ser executada a partir de um comando sempre que se desejar executar a tarefa.
- Vamos aprender a criar botões para executar macros
Maiores detalhes em links, como aqui.
Criando e utilizando um botão em uma planilha:
- entre na planilha desejada. No modo Exibir > barra de Ferramentas > Caixa de Ferramenta de Controle.
- para adicionar código de macro ao controle, clique com o botão direito do mouse no controle e clique em Exibir código;
Um mínimo sobre o VBA e Excel
- comentários são iniciados por ' (apóstrofe)
- Tipos de variáveis: INTEGER, SINGLE, DOUBLE ou STRING
- Variáveis inteiras (integer) armazenam valores entre -32768 até 32767
- Variáveis Single (número com precisão simples) armazenam valores entre 3,4 E 38 até 1,4 E -45
para números negativos e 1,4 E-45 até 3,4 E 38 para números positivos
- Variáveis cujo valor são necessários fora da subroutina precisam ser declaradas como Public (Global em versões anteriores do Excel)
Como exemplo, digite, o que segue abaixo (o comando Private Sub CommandButton1_Click() e ENd Sub aparecem automáticamente)
Public i As Integer
Private Sub CommandButton1_Click() ' Nome
da função
For i = 1 To 10
' A variável i assume valores de 1 a 10
Cells(i, i) = i
' Valores transferidos para a célula (i,i)
Next i
' Retorna ao comando FOR e incrementa i
End Sub
' fim da subrotina
|
- para sair do modo de estrutura clique em
;
- para retornar ao Excel a partir do Editor do Visual Basic: menu Arquivo => Fechar e voltar para Excel
- altere o nome do botão, clicando com o botão direito do mouse: Objeto => Botão de Comando => Editar => digite o nome desejado;
O que você espera que apareça na planilha ao executar esta macro?
- clique no botão criado. As células nomeadas por A1, B2, ...J10 devem ter sido preenchidas com a seqüência de números 1, 2,...,10.
Outras dicas
Outro exemplo:
- dados valores de x nas células A1 a A10 da planilha (cell(1,i) com i variando de 1 a 10)
- a macro abaixo seleciona os valores x tais que 3 < x < 5
- e os coloca na coluna B, nas mesmas linhas em que se encontravam
- x, y e i estão definidos somente nesta subrotina
Private Sub CommandButton1_Click()
Dim i As Integer
Dim x As Single
Dim y As Single
For i = 1 To 10
x = Cells(i, 1)
If 3 < x And x < 5 Then
Cells(i, 2) = x
End If
Next i
End Sub
|
Implementando esta macro:
- preencha as células A1 a A10 de uma planilha Excel com valores quaisquer (alguns no intervalo de 3 a 5)
- crie um botão para esta macro (os comandos copiar-colar, para levar o código da macro diretamente para o editor do Visual Basic)
- acione o botão
- exemplo de um resultado:
Macros podem ser associadas a módulos
Uma mesma macro pode ser usada por várias planilhas, desde que não seja criada diretamente em uma planilha específica, mas sim em um módulo.
Para criar um módulo no Editor de Visual Basic:
- você pode abrir o Editor como descrito acima, na criação de um botão
- ou
- teclando Alt + F11
- com o editor do Visual Basic aberto, use o comando Inserir e opte por Módulo;
- surge uma nova pasta (intitulada Módulo) para inserir o código do programa
- as variáveis agora devem ser dimensionadas como Public (Global em versões anteriores) e as células com o caminho completo
- por exemplo:
Public i as integer
...
x = Worksheets("Plan1").Cells(i, 2).Value
Lendo um Byte da Porta de
Jogos
A linguagem Visual Basic não
possui uma função que permita a leitura direta da porta de jogos. Para ler um byte da porta
de é preciso usar um arquivo com o nome de inpout32.dll disponível no
endereço http://www.logix4u.cjb.net/. (O arquivo inpout32.dll é apropriado para o Windows98. )
A função Inp, presente
nesta bliblioteca, retorna um byte do endereço especificado
Por
exemplo,
Inp(513)
fornece o valor do byte da porta de jogos
Configurando
a DLL
Para usar a biblioteca (DLL) a fim de ler o estado lógico da porta de
jogos proceda da seguinte forma:
- copie o arquivo inpout32.dll para o diretório c:\Windows
- tecle Alt + F11 para abrir o editor do Visual Basic
- No menu Inserir click em novo módulo (local onde ficarão as
linhas de programação)
- coloque a seguinte linha de comando :
Public
Declare Function Inp Lib "inpout32.dll" Alias "Inp32" (ByVal PortAddress As
Integer) As Byte
Medindo
um Intervalo de tempo
Para medir um pequeno intervalo
de tempo de um determinado evento, usaremos o seguinte recurso: Vamos ler o estado
da porta durante um certo tempo. Assim teremos no Excel uma coluna com
o estado lógico da porta digital . Se o evento for um objeto cortando
o feixe de infravermelho, o byte lido terá dois valores diferentes. O
intervalo de tempo em que o objeto corta o feixe, será dado em função
do número total de medidas vezes o tempo para cada medida.
Experimento
com pêndulo
O experimento consiste em medir o período de um pêndulo e
sua velocidade no ponto de equilíbrio, para isso usamos sensores ligados
à entrada digital da porta de jogos. O programa está disponível
para download.
Texto completo submetido à Revista Brasileira de Ensino de Física.
É possível verificar na figura abaixo tem-se uma idéia de dados obtidos com o sistema.