Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

domingo, 21 de agosto de 2011

...tentando aprender configurar e usar os módulos XBee/XBee-Pro TM


Um século depois, da última postagem, venho novamente encher o saco com coisas que provavelmente nem 2% dos leitores (se é que existem) do blog lerão. Como o blog foi criado devido aos estresses constantes que tive com o meu tcc, nada mais justo do que postar algumas coisas dele. Uma coisa interessante que aprendi, como já mostrei em outros posts, foi utilizar os módulos ZigBee.... e como não sou egoísta, vou passar algumas coisas (nada que vc não encontrasse no manual do dispositivo, mas é preguiçoso d+ pra procurar).
Pra quem não lembra.... um ZigBee é issaki (Figura 1):


Figura 1. XBee XB24 - ZB.

Como listado na Tabela 1, os pinos do módulo ZigBee possuem diferentes funções como entradas analógicas, PWM, entrada/saída digital, entre outras.

Tabela 1. Descrição dos pinos dos módulos XBee/XBee-Pro™.
PINO #
NOME
DIREÇÃO
DESCRIÇÃO
1
VCC
-
Alimentação 3,3 V
2
DOUT
Saída
Saída de dados da UART
3
DIN/ 
Entrada/Saída
Entrada de dados da UART
4
DO8*
Saída
Saída digital 8
5
reset
Entrada
Inicializa módulo (um pulso
 nível 0 de pelo menos 200 ms)
6
PWM0/RSSI
Saída
Saída do PWM 0/ indicador de
 força do sinal de RF
7
PWM1
Saída
Saída do PWM 1
8
(Reservado)
-
Ainda não tem uma função definida
9
/SLEEP_IRQ/DI8
Entrada
Linha de controle da função 
sleep ou entrada digital 8.
10
GND
-
Terra
11
AD4/DIO4
Entrada/Saída
Entrada analógica 4 ou 
 entrada/saída digital 4
12
/DIO7
Entrada/Saída
Controle do fluxo CTS ou
 entrada/saída digital 7
13
ON/SLEEP
Saída
Indicador de estado do módulo
14
VREF
Entrada
Voltagem de referencia
 para as entradas A/D
15
Associação/AD5/DIO5
Entrada/Saída
Indicador de associação, 
entrada analógica 5 ou entrada/saída
 digital 5
16
/AD6/DIO6
Entrada/Saída
Controle de fluxo RTS, entrada
 analógica 6 ou entrada/saída digital 6
17
AD3/DIO3
Entrada/Saída
Entrada analógica 3 ou
 entrada/saída digital 3
18
AD2/DIO2
Entrada/Saída
Entrada analógica 2 ou
 entrada/saída digital 2
19
AD1/DIO1
Entrada/Saída
Entrada analógica 1 ou
 entrada/saída digital 1
20
AD0/DIO0
Entrada/Saída
Entrada analógica 0 ou
 entrada/saída digital 0

Os módulos XBee/XBee-ProTM podem operar de dois modos diferentes: o modo transparente (AT) ou o modo API (Application Programming Interface).

* Modo Transparente: neste modo, os dados são recebidos da UART pelo pino RX do dispositivo ZigBee e são colocados na fila para transmissão via RF. Os dados recebidos pelo canal são transmitidos pelo pino TX. Neste modo de operação a transmissão é idêntica à comunicação RS-232 padrão;

* Modo API: este modo é baseado em frames, ou seja, os dados transmitidos e recebidos estão contidos em frames, que definem operações ou eventos dentro do módulo. Com as características deste modo é possível enviar endereço fonte, endereço destino, nome do nó, estado entre outras informações. Entre as principais vantagens do modo API pode-se citar a capacidade de transmitir dados para diversos destinos sem a necessidade de entrar em modo comando. O módulo configurado neste modo recebe estado de sucessos ou falhas dos pacotes que estão sendo enviados e é capaz de identificar o endereço de onde partiu cada pacote recebido.

sábado, 18 de junho de 2011

...tentando entender Polimorfismo em Java! Pedi a meu amigo Ivan pra explicar.

By @Ivan_Lavanarc


Pois é.... nem só de hardware vive o homem! bora falar de coisa boa? Bora falar de java! Pedi a meu amigo e grande programador em Java, IVAN KNOW, pra falar um pouco sobre polimorfismo em java. blz então? ....


Um assunto abordado em todo curso que tem algum envolvimento com orientação a objeto é o Polimorfismo. Na minha vida de programador já vi muitas definições explicações sobre esse tema e a única coisa que fica clara é que Polimorfismo é uma palavra que vem do grego onde Poli significa muitos e morfus significa forma sendo assim a capacidade de assumir muitas formas. Até esse ponto todo mundo entende, mas quando começa o assunto de verdade, a maioria das pessoas que eu conheço (inclusive eu) não entende muita coisa e acaba tornando esse assunto algo evitado quando está escrevendo seus códigos. No entanto o Polimorfismo é uma propriedade da  Orientação a objeto muito útil que nos permite estruturar computacionalmente problemas reais com muito mais precisão.  Nesse artigo irei mostrar alguns exemplos de como o polimorfismo acontece na linguagem Java e qual são as vantagens de se utilizar esse recurso.

Na linguagem Java existem 3 tipos básicos de polimorfismo:  Paramétrico, Inclusão e Sobrecarga. O polimorfismo paramétrico é aquele no qual o tipo que o objeto vai assumir durante a execução do programa é passado a ele como parâmetro. As classes que tem essa propriedade de assumir tipos passados por parâmetros são conhecidas como classes genéricas.Um exemplo comum da aplicação desse tipo de polimorfismo se encontra quando utilizamos estruturas de dados já disponíveis no Java padrão como por exemplo a classe Vector. Veja o exemplo a seguir:


Figura 1. Exemplo 1.

Outro tipo de polimorfismo, que é talvez o mais utilizado, é o polimorfismo de sobrecarga no qual podemos escrever métodos com mesmo nome e diferentes parâmetros, dessa forma podemos de acordo com a forma de entrada proceder de forma diferente. Veja o exemplo:


Figura 2. Exemplo 2.


Agora chamamos os dois métodos e de acordo com a entrada eles, que parecem ser o mesmo, tem comportamentos diferentes

Figura 3. Exemplo Polimorfismo.


O terceiro tipo é o polimorfismo de inclusão, no qual construir um objeto do tipo Superclasse(classe pai) com o construtor de uma de suas subclasses(classe filha) . Esse tipo de polimorfismo é o mais discutido em sala de aula e é também o que a maioria das pessoas tem dúvida. No exemplo a seguir temos a classe “Pessoa” e a classe “PessoaFisica” que é herdeira da classe pessoa. A idéia é construir um objeto pessoa física numa variável do tipo Pessoa. A seguir mostrarei a estrutura das classes e um código utilizando o polimorfismo:


Figura 4. Classe Pessoa.

Figura 5. Pessoa Física.


Figura 6. Exemplo 3.


Esse último tipo de polimorfismo talvez seja o que traz mais vantagens para o programador, mas muitos programadores ao olharem esse código se perguntam “Qual a utilidade de construir uma classe pai com o construtor de uma classe filha? “. A resposta pra essa pergunta da pra fazer outro artigo(que eu pretendo fazer em breve), pois são muitas a ocasiões que esse recurso é muito útil. Mas, sucintamente, a utilidade desse tipo de polimorfismo é que em momentos diferentes do seu programa você vai precisar que um mesmo objeto se comporte de forma diferente mas esse assunto fica pra próxima.