Mudanças entre as edições de "Biblioteca de programação"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(7 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 390: Linha 390:
 
APPINVENTOR:
 
APPINVENTOR:
  
[http://db.tt/WuJAUEbD Dowload do .apk (primeira versão funcional)]
+
[https://db.tt/d0mglOhQ baixe] o [https://lh4.googleusercontent.com/-lnTOmtSJ7bM/UnVqI9Tj-dI/AAAAAAAAEYE/AqVSAyralPs/w1043-h450-no/app.jpg projeto] do aplicativo, e faça o upload em sua conta no [http://appinventor.mit.edu/ site] do App Invetor.
 +
[[Arquivo:Appinvetorblue.jpg]]
 +
 
 
Note que a variável MAC deverá conter o endereço MAC do computador em uso.  
 
Note que a variável MAC deverá conter o endereço MAC do computador em uso.  
  
Linha 397: Linha 399:
 
Para saber o seu endereço MAC:
 
Para saber o seu endereço MAC:
 
   hcitool dev
 
   hcitool dev
 +
  
 
{{collapse bottom}}
 
{{collapse bottom}}

Edição atual tal como às 18h16min de 2 de novembro de 2013

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.

Saida digital.jpg

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.

Entrada digital.jpg

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.

Saida analogica.jpg

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

Entrada analogica.jpg

Estas entradas suportam tensões de até 10V


Instalação

Fazer o dowload do arquivo bibprg neste link: Download

Intruçõ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

#include <stdio.h>
#include "bibprg.h"

main (){

 char saida='1', estado='0';
 
 conectar ();
 
 enviar_digital ('1','1');
 sleep (1);
 enviar_digital (saida,estado);
 }

Lembrando que o dois parâmetros são do tipo CHAR


Saída analógica

#include <stdio.h>
#include "bibprg.h"

main (){

 char saida='1', estado[3]="000";

 conectar ();
 
 enviar_analogica('1', "130");
 sleep(2);
 enviar_analogica(saida, estado);
 }

Os dois parâmetros são do tipo CHAR, sendo o segundo uma cadeia de caracteres que varia de 000 á 255


Entrada digital

#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));
}

Parâmetro do tipo CHAR


Entrada analógica

#include <stdio.h>
#include "bibprg.h"

 main (){

 conectar ();
 
 printf("%f\n",receber_analogica('1'));
 sleep (2);
 printf("%f\n",receber_analogica('1'));
}

Parâmetro do tipo CHAR

Display

#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);

 }
}

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


|}

Comunicação bluetooth (Appinventor e C)

Fonte: Uso do Bluetooth com App Inventor e programa C

How to play with Bluetooth under Linux

Comandos iniciais:

instalar ferramentas e bibliotecas

 sudo apt-get install bluez-utils
 sudo apt-get install libbluetooth3-dev

Configurar a porta serial (SP), neste exemplo o canal 3 :

sdptool add --channel=3 SP

Código C, funcionando, (com o canal 3, pode ser mudado, se necessário, na linha 33)

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <bluetooth/bluetooth.h>
#include <bluetooth/rfcomm.h>
#include <errno.h>
#include <sys/types.h>
#include <netinet/in.h>
 
 
int main(int argc, char **argv)
{
    struct sockaddr_rc loc_addr = { 0 } , rem_addr = { 0 };
    char buf[1024] = { 0 };
    int s, client, bytes_read;
    socklen_t opt = sizeof(rem_addr);
 
    // allocate socket http://www.br-c.org/doku.php?id=socket
    if ((s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM))==-1){
		printf("Problemas na criação do socket\n");
		exit(-1);
    }
 
    // bind socket to port 1 of the first available 
    // local bluetooth adapter
    //http://www.br-c.org/doku.php?id=bind
    
    loc_addr.rc_family = AF_BLUETOOTH;
    loc_addr.rc_bdaddr = *BDADDR_ANY;
    //str2ba( endereco, &loc_addr.rc_bdaddr );
    loc_addr.rc_channel = (uint8_t) 3;
    if (bind(s, (struct sockaddr *)&loc_addr, sizeof(loc_addr))==-1){
		printf("Problemas no bind\n");
		exit(-1);
    }
    
 
    //listen http://www.br-c.org/doku.php?id=listen
    printf("Preparando para listen..\n");
    // put socket into listening mode
    if (listen(s, 1)<0)
		printf("Problemas de listen...\n");
 
    //http://www.br-c.org/doku.php?id=accept
    printf("Preparando para accept..\n");
    // accept one connection

    if ((client = accept(s, (struct sockaddr *)&rem_addr, &opt))<0){
         perror("accept: ");
         exit(1);
    }
 
    printf("Preparando para leitura..\n");
   // ba2str( &rem_addr.rc_bdaddr, buf );
    fprintf(stderr, "accepted connection from %s\n", buf);
    memset(buf, 0, sizeof(buf));
 
    // read data from the client
    bytes_read = read(client, buf, sizeof(buf)+1);
    if( bytes_read > 0 ) {
        printf("received [%s]\n", buf);
    }
 
    //envia uma resposta
    strcpy(buf,"ALO CELULAR!");
    write (client, buf, sizeof(buf));
    sleep(10);
    // close connection
    close(client);
    close(s);
    return 0;
}

Para compilar o programa:

 gcc rcomm-server.c -lbluetooth  -o rcomm-server


APPINVENTOR:

baixe o projeto do aplicativo, e faça o upload em sua conta no site do App Invetor. Arquivo:Appinvetorblue.jpg

Note que a variável MAC deverá conter o endereço MAC do computador em uso.

MACappinventor.jpg

Para saber o seu endereço MAC:

 hcitool dev


|}