Mudanças entre as edições de "AULA 21 - Programação 1 - Graduação"
Ir para navegação
Ir para pesquisar
(76 revisões intermediárias por 2 usuários não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
− | = | + | =Requisito para formação das Equipes= |
− | * | + | *Três integrantes por equipe. |
− | |||
− | |||
− | = | + | =Equipes do Projeto Final - Participantes= |
− | + | [[Equipe1-2015-1]] | |
+ | *MARIA FERNANDA SILVA TUTUI | ||
+ | *RICARDO AMORIM | ||
+ | *VITOR MANOEL DA SILVEIRA | ||
− | + | [[Equipe2-2015-1]] | |
+ | *ADONIS ANDREAS MARINOS | ||
+ | *ANDERSON GASPAR DE MEDEIROS | ||
+ | *DANIEL TREVISAN TATSCH | ||
− | + | [[Equipe3-2015-1]] | |
+ | *DANIEL CABRAL CORREA | ||
+ | *PABLO FIDELIS DIAS | ||
+ | *PAULO HENRIQUE HORST BIANCHIN | ||
− | + | [[Equipe4-2015-1]] | |
+ | *ADILSON GOEDERT SIQUEIRA | ||
+ | *GUSTAVO VIEIRA ZACCHI | ||
+ | *RAPHAEL WASHINGTON BAPTISTA GIASSI | ||
− | + | [[Equipe5-2015-1]] | |
+ | *LEONARDO TASCA | ||
+ | *LUISA MACHADO | ||
+ | *NATALIA ADRIANA MIRANDA | ||
− | + | [[Equipe6-2015-1]] | |
+ | *AUGUSTO DA SILVEIRA WILLEMANN | ||
+ | *GABRIEL FARIAS TURNES | ||
+ | *JEFERSON RICARDO TICHZ ESPINDOLA | ||
− | + | [[Equipe7-2015-1]] | |
+ | *JOAO VITOR DA ANUNCIACAO | ||
+ | *RAISSA LINHARES GOMES | ||
+ | *VICTOR CESCONETTO DE PIERI | ||
− | |||
− | |||
− | + | <!-- | |
+ | =Placa de aquisição de dados= | ||
− | + | *Saídas digitais | |
− | + | Existem 3 saídas digitais na placa, e essas são chamadas de OUT1, OUT2 e OUT3. | |
+ | [[Arquivo:saida_digital.jpg|600px]] | ||
− | + | Essas saídas são energizadas, e quando estão ligadas enviam 5V a saída escolhida. | |
− | + | ||
− | + | ||
− | + | ||
− | + | *Entradas digitais | |
− | + | ||
− | + | Existem, também, 3 entradas digitais, que são nomeadas INP1, INP2 e INP3. | |
+ | |||
+ | [[Arquivo:entrada_digital.jpg|600px]] | ||
+ | |||
+ | Essas entradas são do tipo seco, o que significa que elas ficam ativas quando aterradas(GND). | ||
+ | |||
+ | |||
+ | |||
+ | *Saídas analógicas | ||
+ | |||
+ | Existem 2 saídas analógicas, e essas nomeadas DA1 e DA2. | ||
+ | |||
+ | [[Arquivo:saida_analogica.jpg|500px]] | ||
+ | |||
+ | Essas saídas podem ser ajustadas para mandar tensões entre 0V e 5V. | ||
+ | |||
+ | |||
+ | |||
+ | *Entradas analógicas | ||
+ | |||
+ | As 8 entradas analógicas existentes na placa são nomeadas como AD1, AD2, AD3...AD8 | ||
+ | |||
+ | [[Arquivo:entrada_analogica.jpg|500px]] | ||
+ | |||
+ | Estas entradas suportam tensões de até 10V | ||
+ | |||
+ | |||
+ | ==Instalação== | ||
+ | |||
+ | Fazer o dowload do arquivo bibprg neste link: [http://db.tt/17JRNYpK Download] | ||
+ | |||
+ | Instruções para instalação: | ||
+ | |||
+ | Na pasta make: | ||
+ | |||
+ | *Dentro do arquivo shell.sh, no campo "SENHA". Botar senha de root do PC em uso; | ||
+ | |||
+ | *Dentro do arquivo Perm-Cerne.rules, na segunda linha, no campo OWNER="Aluno". Mudar "Aluno" para o nome do usuário do computador. | ||
+ | |||
+ | Feito isso, basta que, a partir do terminal, seja feito o comando make dentro da pasta make. | ||
+ | |||
+ | ==Criando programas em C utilizando a biblioteca prg== | ||
+ | |||
+ | As seguintes funções estão disponíveis nesta biblioteca: | ||
+ | |||
+ | *função conectar: | ||
+ | esta função conecta a plaquinha ao host PC | ||
+ | |||
+ | Parâmetros: não possui | ||
+ | |||
+ | como utilizar: | ||
+ | conectar (); | ||
+ | |||
+ | |||
+ | *Função "info" | ||
+ | esta função retorna informações da placa. Pode retornar o nome do fabricante e o string do produto. | ||
+ | |||
+ | Parâmetros: não possui | ||
+ | |||
+ | como utilizar: | ||
+ | info (); | ||
+ | |||
+ | |||
+ | *Função "enviar_digital" | ||
+ | Envia um sinal para uma das 3 saídas digitais da placa de aquisição | ||
+ | |||
+ | como utilizar: | ||
+ | |||
+ | Parâmetros: 2 parâmetros do tipo char, onde o primeiro representa uma saída digital (1, 2 ou 3) e o segundo representa o estado da saída, podendo ser 1(nível alto) ou 0(nível baixo). | ||
+ | |||
+ | enviar_digital (saída, estado); | ||
+ | |||
+ | /*IMPORTANTE: as varíaveis saída e estado, sao do tipo CHAR*/ | ||
+ | ou | ||
+ | |||
+ | enviar_digital (‘1’, ‘1’) | ||
+ | |||
+ | /*saída 1 é colocada em nivel alto(5V)*/ | ||
+ | |||
+ | |||
+ | *Função "enviar_analogica" | ||
+ | função utilizada para enviar um sinal para uma das 2 saídas analógicas da placa de aquisição | ||
+ | |||
+ | como utilizar: | ||
+ | Parâmetros: 2 parâmetros do tipo char, onde o primeiro representa uma saída analógica (1 ou 2) e o segundo é uma string que representa o estado da saída, podendo esta variar de “000” a “255”. Onde “000” é 0V e 255 é 5V. | ||
+ | Outras tensões podem ser encontradas através de calculos simples, como 2,5V “127” | ||
+ | |||
+ | enviar_analogica (saida, estado); | ||
+ | |||
+ | /*Onde a variavel saida e estado sao do tipo CHAR*/ | ||
+ | |||
+ | ou | ||
+ | |||
+ | enviar_analogica (‘1’, “127”); | ||
+ | |||
+ | /*onde a saída analógica 1 está sendo energizada com aproximadamente 2.5V*/ | ||
+ | |||
+ | |||
+ | *Função "receber_digital" | ||
+ | |||
+ | Função utilizada para receber informações das entradas digitais; | ||
+ | |||
+ | A entrada digital desta placa é do tipo seco. Ela retornará 0 caso a entrada NÃO estiver aterrada, e 1 se estiver. | ||
+ | |||
+ | |||
+ | como utilizar: | ||
+ | |||
+ | Parâmetros: receber(nº da saída); | ||
+ | Retorno: o retorno desta função é um inteiro (int) | ||
+ | |||
+ | receber_digital (char saida) ; | ||
− | + | ou | |
− | + | receber_digital (‘1’) ; | |
− | + | /*onde a função retornará 0 ou 1 da entrada 1 */ | |
+ | /*Existem 3 entradas digitais, portanto a variavel saída pode ser 1, 2 ou 3*/ | ||
− | |||
− | + | *Função "receber_analogica" | |
+ | Função utilizada para receber informações das entradas analógicas; | ||
− | + | As entradas analógicas retornam valores de 0,00V a 9,99V; | |
− | + | como utilizar: | |
− | + | Parâmetros: receber(nº da saída); | |
+ | Retorno: o retorno desta função é um número real (float) | ||
− | + | receber_analogica (char saida) ; | |
− | + | ou | |
− | + | receber_analogica (‘1’) ; | |
− | |||
− | + | /*onde a função retornará retornará um valor entre 0,00 e 9,99 */ | |
+ | /*Existem 8 entradas analogicas, portanto a variavel saída pode ser 1, 2, 3, 4, 5, 6, 7 ou 8*/ | ||
− | |||
− | + | *Função "print_display" | |
+ | /*Função utilizada para imprimir um mensagem no display lcd*/ | ||
− | + | como utilizar: | |
− | + | //Parâmetros: print_display(linha,"mensagem"); | |
− | + | print_display (int linha, char mensagem[]); | |
− | |||
− | |||
− | + | *Função "limpar_display" limpa o display | |
− | + | /*Função utilizada para limpar o display*/ | |
− | * | ||
− | * | ||
− | + | como utilizar: | |
− | + | //Parâmetros: não possui | |
− | |||
+ | limpar_display(); | ||
==Exemplos== | ==Exemplos== | ||
− | + | Sempre lembrando do arquivo de cabeçalho "bibprg.h" que está dentro da pasta que foi baixada | |
− | + | Saída digital | |
− | |||
− | |||
<syntaxhighlight lang=c> | <syntaxhighlight lang=c> | ||
#include <stdio.h> | #include <stdio.h> | ||
+ | #include "bibprg.h" | ||
− | + | main (){ | |
− | { | ||
− | |||
− | |||
− | |||
− | + | char saida='1', estado='0'; | |
− | + | ||
− | + | conectar (); | |
− | + | ||
− | + | enviar_digital ('1','1'); | |
− | + | sleep (1); | |
− | + | enviar_digital (saida,estado); | |
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | Lembrando que o dois parâmetros são do tipo CHAR | ||
− | |||
− | |||
− | |||
+ | Saída analógica | ||
<syntaxhighlight lang=c> | <syntaxhighlight lang=c> | ||
#include <stdio.h> | #include <stdio.h> | ||
+ | #include "bibprg.h" | ||
− | + | main (){ | |
− | { | ||
− | |||
− | |||
− | |||
− | |||
− | + | char saida='1', estado[3]="000"; | |
− | |||
− | |||
− | |||
− | + | conectar (); | |
− | + | ||
− | + | enviar_analogica('1', "130"); | |
− | + | sleep(2); | |
− | + | enviar_analogica(saida, estado); | |
− | + | } | |
− | |||
− | |||
− | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | Os dois parâmetros são do tipo CHAR, sendo o segundo uma cadeia de caracteres que varia de 000 á 255 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | Entrada digital | ||
<syntaxhighlight lang=c> | <syntaxhighlight lang=c> | ||
#include <stdio.h> | #include <stdio.h> | ||
− | + | #include "bibprg.h" | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | main (){ | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | char saida='1'; | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | conectar (); | |
− | + | ||
− | + | printf ("%d\n", receber_digital ('1')); | |
− | + | sleep (3); | |
− | + | printf ("%d\n", receber_digital (saida)); | |
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | Parâmetro do tipo CHAR | ||
− | |||
+ | Entrada analógica | ||
<syntaxhighlight lang=c> | <syntaxhighlight lang=c> | ||
+ | |||
#include <stdio.h> | #include <stdio.h> | ||
− | #include | + | #include "bibprg.h" |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | main (){ | |
− | + | ||
− | + | conectar (); | |
− | + | ||
− | + | printf("%f\n",receber_analogica('1')); | |
− | + | sleep (2); | |
− | + | printf("%f\n",receber_analogica('1')); | |
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | Parâmetro do tipo CHAR | ||
− | + | Display | |
− | |||
− | |||
− | |||
<syntaxhighlight lang=c> | <syntaxhighlight lang=c> | ||
− | |||
#include <stdio.h> | #include <stdio.h> | ||
+ | #include "bibprg.h" | ||
+ | |||
+ | main(){ | ||
+ | |||
+ | int i=12; | ||
+ | char mensagem[50]="Fim"; | ||
− | + | conectar(); | |
− | { | + | |
− | + | for(;;){ | |
− | + | print_display (1,"Linha 1 display LCD"); | |
− | + | sleep(1); | |
+ | |||
+ | print_display (2,"Linha 2 display LCD"); | ||
+ | sleep(1); | ||
+ | |||
+ | print_display (12,"Linhas 1 e 2 display LCD"); | ||
+ | sleep(1); | ||
− | + | print_display (i, mensagem); | |
+ | sleep(1); | ||
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | Onde a variável "i" é do tipo inteiro e a "mensagem" é uma cadeia de caracteres | ||
− | + | Ao fim, basta compilar da seguinte forma: | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | gcc arquivo.c -lprg -lusb-1.0 -o arquivo | |
+ | --> | ||
− | + | <!-- | |
− | + | =Sensor de Temperatura LM35= | |
− | + | O LM35 é um sensor de temperatura linear que fornece 10mV para cada grau Celcius que medir. Ou seja, se está fornecendo 100mV, significa que ele está medindo 10°C. [http://blog.webtronico.com/?p=57 http://blog.webtronico.com] | |
− | + | ;Principais características | |
+ | *Pode ser alimentado com uma tensão entre 4 e 20VDC; | ||
+ | *Não necessita de calibração; | ||
+ | *Sua precisão típica é de 0.5°C; | ||
+ | *Pode medir temperaturas entre –55°C à 150°C. | ||
− | < | + | ;Veja o teste com LM35 |
− | # | + | |
+ | <center>{{#ev:youtube|l9n-8wzex7I#!}} </center> | ||
+ | |||
+ | '''[SIC]''' graus Celsius, não centígrados. | ||
+ | |||
+ | Como sua saída é em tensão e pode ser ligado em 5V, serve como opção para trabalhar com nossas placas de I/O ou Arduíno para medidas de temperaturas. | ||
+ | |||
+ | |||
+ | ;A figura abaixo mostra a ordem dos pinos | ||
+ | |||
+ | [[imagem:LM35-pin.png|300px]] | ||
+ | |||
+ | ;A figura abaixo mostra o encapsulamento mais comum: | ||
+ | |||
+ | [[imagem:temperature-sensor-lm-35-dz.jpg]] | ||
+ | --> | ||
+ | |||
+ | <!-- | ||
+ | =Como ligar um LED= | ||
− | + | ;O que é um LED? | |
− | + | É um Díodo Emissor de Luz, em inglês diz-se ''<b>L</b>ight <b>E</b>mitter <b>D</b>iode''. Pode ser usado para a emissão de luz em locais e equipamentos onde se torna conveniente a sua utilização em substituição a uma lâmpada. [http://pt.wikipedia.org/wiki/Diodo_emissor_de_luz Diodo Emissor de luz] | |
− | |||
− | |||
− | + | ;Como projetar um circuito com LED? | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Deve-se observar a característica físca do LED,e forma correta de polariza-lo. | |
− | |||
− | + | A tabela abaixo mostra algumas características típicas entre os LEDs fabricados por diferentes | |
+ | empresas: | ||
+ | {| border="1" cellpadding="5" cellspacing="0" style="text-align: center;" | ||
+ | ! style="background: #ffdead;" | Cor | ||
+ | ! style="background: #ffdead;" | Queda de tensão | ||
+ | ! style="background: #ffdead;" | Corrente | ||
+ | |- | ||
+ | !| Vermelho | ||
+ | | 1.8V | ||
+ | | 20mA | ||
+ | |- | ||
+ | !| Verde | ||
+ | | 2.1V | ||
+ | | 20mA | ||
+ | |- | ||
+ | !| Amarelo | ||
+ | | 2.0V | ||
+ | | 15mA | ||
+ | |- | ||
+ | !| Laranja | ||
+ | | 2.0V | ||
+ | | 20mA | ||
+ | |- | ||
+ | !| Azul | ||
+ | | 3.1V | ||
+ | | 20mA | ||
+ | |- | ||
+ | !| Branco | ||
+ | | 3.1-4V | ||
+ | | 20mA | ||
+ | |- | ||
+ | |} | ||
− | |||
− | |||
− | + | Vamos supor que pretende-se acender um LED vermelho, em uma fonte de 5V (USB, Arduído, Carregador de Celelular, placas I/O). Olhando na tabela ve-se que LED vermelho tem uma queda de 1.8V e uma corrente típica de 20mA. Falta portanto definir o resistor a ser utilizado. | |
− | |||
− | |||
− | |||
− | + | Lei de ohm: | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | :<math> V = R*I\, </math> | |
− | + | Portanto: | |
− | |||
− | + | :<math> R = V/I\, </math> | |
− | |||
− | |||
− | |||
− | + | :<math> R = (5-1.8)/0.02\, </math> | |
− | |||
− | |||
− | + | :<math> R = 160 Ω\, </math> | |
− | + | --> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | =Material complementar= | ||
+ | http://www.ime.usp.br/~pf/algoritmos/aulas/lista.html | ||
Linha 395: | Linha 429: | ||
! style="background: #cdc5bf;" | [[AULA 20 - Programação 1 - Graduação | << ]] | ! style="background: #cdc5bf;" | [[AULA 20 - Programação 1 - Graduação | << ]] | ||
! style="background: #cdc5bf;" | Aula 21 | ! style="background: #cdc5bf;" | Aula 21 | ||
− | ! style="background: #cdc5bf;" | [[ | + | ! style="background: #cdc5bf;" | [[AULA 22 - Programação 1 - Graduação | >> ]] |
|} | |} |
Edição atual tal como às 22h41min de 24 de junho de 2015
Requisito para formação das Equipes
- Três integrantes por equipe.
Equipes do Projeto Final - Participantes
- MARIA FERNANDA SILVA TUTUI
- RICARDO AMORIM
- VITOR MANOEL DA SILVEIRA
- ADONIS ANDREAS MARINOS
- ANDERSON GASPAR DE MEDEIROS
- DANIEL TREVISAN TATSCH
- DANIEL CABRAL CORREA
- PABLO FIDELIS DIAS
- PAULO HENRIQUE HORST BIANCHIN
- ADILSON GOEDERT SIQUEIRA
- GUSTAVO VIEIRA ZACCHI
- RAPHAEL WASHINGTON BAPTISTA GIASSI
- LEONARDO TASCA
- LUISA MACHADO
- NATALIA ADRIANA MIRANDA
- AUGUSTO DA SILVEIRA WILLEMANN
- GABRIEL FARIAS TURNES
- JEFERSON RICARDO TICHZ ESPINDOLA
- JOAO VITOR DA ANUNCIACAO
- RAISSA LINHARES GOMES
- VICTOR CESCONETTO DE PIERI
Material complementar
http://www.ime.usp.br/~pf/algoritmos/aulas/lista.html
<< | Aula 21 | >> |
---|