Mudanças entre as edições de "AULA 21 - Programação 1 - Graduação"
Ir para navegação
Ir para pesquisar
(73 revisões intermediárias por 2 usuários não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
− | =Equipes | + | =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== | ||
+ | |||
+ | Sempre lembrando do arquivo de cabeçalho "bibprg.h" que está dentro da pasta que foi baixada | ||
+ | |||
+ | Saída digital | ||
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | #include "bibprg.h" | ||
+ | |||
+ | main (){ | ||
+ | |||
+ | char saida='1', estado='0'; | ||
+ | |||
+ | conectar (); | ||
+ | |||
+ | enviar_digital ('1','1'); | ||
+ | sleep (1); | ||
+ | enviar_digital (saida,estado); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | Lembrando que o dois parâmetros são do tipo CHAR | ||
+ | |||
+ | |||
+ | Saída analógica | ||
+ | <syntaxhighlight lang=c> | ||
+ | #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> | ||
+ | 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> | ||
+ | #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> | ||
+ | Parâmetro do tipo CHAR | ||
+ | |||
+ | |||
+ | Entrada analógica | ||
+ | <syntaxhighlight lang=c> | ||
+ | |||
+ | #include <stdio.h> | ||
+ | #include "bibprg.h" | ||
+ | |||
+ | main (){ | ||
+ | |||
+ | conectar (); | ||
+ | |||
+ | printf("%f\n",receber_analogica('1')); | ||
+ | sleep (2); | ||
+ | printf("%f\n",receber_analogica('1')); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | Parâmetro do tipo CHAR | ||
+ | |||
+ | Display | ||
+ | |||
+ | <syntaxhighlight lang=c> | ||
+ | #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> | ||
+ | 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 | ||
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 | >> |
---|