Mudanças entre as edições de "AULA 21 - Programação 1 - Graduação"

De MediaWiki do Campus São José
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 do Projeto Final=
+
=Requisito para formação das Equipes=
  
Equipe-1
+
*Três integrantes por equipe.
  
Equipe-2
+
=Equipes do Projeto Final - Participantes=
  
Equipe-3
+
[[Equipe1-2015-1]]
 +
*MARIA FERNANDA SILVA TUTUI
 +
*RICARDO AMORIM
 +
*VITOR MANOEL DA SILVEIRA
  
Equipe-4
+
[[Equipe2-2015-1]]
 +
*ADONIS ANDREAS MARINOS
 +
*ANDERSON GASPAR DE MEDEIROS
 +
*DANIEL TREVISAN TATSCH
  
Equipe-5
+
[[Equipe3-2015-1]]
 +
*DANIEL CABRAL CORREA
 +
*PABLO FIDELIS DIAS
 +
*PAULO HENRIQUE HORST BIANCHIN
  
Equipe-6
+
[[Equipe4-2015-1]]
 +
*ADILSON GOEDERT SIQUEIRA
 +
*GUSTAVO VIEIRA ZACCHI
 +
*RAPHAEL WASHINGTON BAPTISTA GIASSI
  
Equipe-7
+
[[Equipe5-2015-1]]
 +
*LEONARDO TASCA
 +
*LUISA MACHADO
 +
*NATALIA ADRIANA MIRANDA
  
Equipe-8
+
[[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

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



Material complementar

http://www.ime.usp.br/~pf/algoritmos/aulas/lista.html


<< Aula 21 >>