3/24/2010

Curso de Microcontroladores

O curso de Microcontroladores será ministrado no Departamento de Eletrônica e Sistemas da UFPE – que emitirá o certificado. Estamos em fase final de acertos gerais (Datas de início/fim, número de alunos/turma, número de turmas, valores, ementa, preparação de apostilas, etc). O custo será menor do que o valor inicialmente proposto. Mas, não sei ainda em quanto ficará. Tudo vai depender de um acerto com o pessoal da UFPE. Aqueles que quiserem garantir sua vaga podem entrar em contato comigo por este e-mail. O número de participantes, de fato, será limitado devido à quantidade limitada de kits didáticos e para não pesar no custo do material que será entregue. Maiores detalhes serão fornecidos após a reunião que deverá ocorrer nesta quinta-feira. Abaixo, segue ementa do curso.

Módulo 1

1. Noções básicas sobre microcontroladores

a. O que é um microcontrolador

b. Qual a diferença entre um microcontrolador e um microprocessador

c. Diferentes arquiteturas (MCS-51, MSP-430, PIC, AVR, etc)

d. Comparação entre as diferentes arquiteturas

i. Quanto à velocidade

ii. Quanto à capacidade de processamento

iii. Quanto ao custo

2. Estudo de caso: MCS-51 (8051), MSP430, PIC, AVR

a. Conjunto de instruções

b. Modos de endereçamento

c. Especificidades de cada família

i. Seleção de fonte de clock

ii. Modos de operação

d. Exemplos Simples

i. Pisca-Led

ii. Leitura de botão

e. Exemplos mais avançados

i. Conversão AD (interno e externo)

ii. Comunicação serial (USART)

iii. EEPROM

iv. Display LCD

1. Texto fixo

2. Texto rolando, piscando, etc

3. Protocolo I2C

a. Especificações

b. Rotinas

c. Exemplo usando uma EEPROM

d. Exemplo de leitura de acelerômetro digital

4. Comunicação SPI

a. Especificações

b. Rotinas

c. Exemplo usando uma EEPROM

5. Aplicações

a. Acelerômetro

b. Sensor de temperatura e umidade relativa do ar

c. Pressão

Módulo 2

1. Rádio cc1100/cc2500

2. Diagrama de blocos

3. Funcionamento

4. Registradores

5. Protocolos de comunicação Wi-fi

6. Aplicação

a. Transmissão contínua de mensagem fixa

b. Transmissão de mensagem sob pedido

c. Transmissão de mensagem e recepção de resposta

d. Usando os modos de baixo consumo

Mais informações: a-paschoal@uol.com.br

1/10/2010

Férias em casa



Reviver todos os momentos com minha família, rever meus pais e demais familiares foi um presente e tanto. Voltar a falar meu sotaque querido na minha terra, terra de fortes é recompensador.

Quem mora em Recife deve se orgulhar de poder morar e vencer em sua terra de poucos recursos e muitas dificuldades. O nordestino além de tudo é um forte. Espero que Recife cresça com toda a punjança que merece e que os empresários da região sejam mais ousados do que são hoje.

Eu daqui (SP) vou fazendo a minha parte. Tentando orgulhar meu povo, minha família e a minha terra que é o Nordeste.

Na foto eu e meu Pai o responsável por tudo isto. Créditos para a Rita de Cássia, 5 anos e uma exímia fotógrafa.

Até um dia.

Zeca

7/27/2009

GISConnex Project



Estou entrando em uma fase de consolidação da minha paixão pelo GIS e pelo meu trabalho. Estou em um projeto desafiador e desta vez será o mais difícil de todos.

O projeto GISConnex pretende unir dois grandes mundos da TI. A ESRI e seu GIS e o tão conhecido e respeitado SAP. Grandes mudanças estão por vir.

A vitória é nossa.

Fé.

Zeca

Lost Symbol Countdown

Contagem regressiva para o proximo sucesso de Dan Brown

10/20/2008

Ah Natal



Muito bom poder viajar e renovar a mente. Peço a todos PAREM. Isso vai mudar suas vidas.

7/01/2008

TextBox só de Inteiros no .NET CF

Olá desenvolvedores .NET

Se você quer um TextBox só de inteiros e com CharacterCasing (que não há no .NET CF) apenas crie esta classe no seu projeto e arraste-o para o formulário.

Segue a classe. Existem mais 2 proprieades no componente:

OnlyNumbers
UpperCasing

Sete-os ao seu gosto e bom trabalho.

--
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using System.Runtime.InteropServices;

namespace DeviceApplication3
{
public class TextBoxEx : TextBox
{
bool upper;
bool only_numbers;


private const int GWL_STYLE = (-16);
private const int IM_UPPERCASE = 0x0008;
private const int IM_LOWERCASE = 0x0010;
private const int IM_NUMBER = 0x2000;
IntPtr hwnd;

public bool OnlyNumbers
{
get { return only_numbers; }
set { only_numbers = value; }
}
OnlyNumbers
public bool UpperCasing
{
get { return upper; }
set { upper = value; }
}

public void setarInteiros(){
}
public void validarCaracIntRegex(KeyPressEventArgs e)
{


}

[DllImport("coredll.dll")]
private extern static int SetWindowLong(IntPtr Hwnd, int Index, int NewIndex);

[DllImport("coredll.dll")]
private extern static int GetWindowLong(IntPtr Hwnd, int Index);

[DllImport("coredll.dll")]
private extern static IntPtr GetCapture();

protected override void OnKeyPress(KeyPressEventArgs e)
{
if (OnlyNumbers) // Só numeros
{
this.Capture = true;

hwnd = GetCapture();

this.Capture = false;


int previousStyle = GetWindowLong(hwnd, GWL_STYLE);

SetWindowLong(hwnd, GWL_STYLE, previousStyle | IM_NUMBER);
}
else // Só maiúsculas
{
if (UpperCasing)
{

if (Char.IsLetter(e.KeyChar))
{

// save the current caret position

int pos = this.SelectionStart;

// insert the upper case character



this.Text = this.Text.Insert(this.SelectionStart,

Char.ToUpper(e.KeyChar).ToString());



// and update the current caret position

this.SelectionStart = pos + 1;

e.Handled = true;

}



base.OnKeyPress(e);
}
}
}
}
}

4/19/2008

O lado bom do caso Isabella



Estou aqui de volta depois de um longo tempo. Me sinto forçado a escrever sobre o caso Isabella Nardoni, que drasticamente morreu e ao que tudo indica pelas mãos de seus responsáveis.

Mas sempre prefiro olhar as coisas pelo lado bom e encontrei um lado bom neste caso. Na verdade fui forçado a encontrar. Mostrarei o porque a seguir.

Depois de tudo isso que aconteceu e do que virá com certeza estou certo de uma coisa. Hoje estamos mais carinhosos com nossos filhos, principalmente com os pequeninos. Hoje estamos dando muito mais valor às vidas de nossas crianças. Levamo-nas mais ao parque e damos mais beijos de bom dia e boa noite nelas.

Quem tem filha pequena, principalmente próxima à idade de Isabella sente muito com o caso. Luta ainda mais pela saúde e integridade dessas meninas. Hoje os pais pensam no trabalho muito mais em suas filhinas, em seus anjinhos. Lutam muito mais para que não aconteça tragédias com suas filhas e tentam educá-las para que não se tornem monstros como os que cometeram tal barbare.


Mas voltando ao lado bom de tudo de ruim que aconteceu. Hoje O valor de um aniversário é muito mais lembrado pois houveram crianças que não puderam se quer comer o bolo do seu aniversário por terem sidos mortos brutalmente bem próximo deste lindo dia. Hoje o sentimento de repúdio à dignidade humana está mais acirrado. Hoje a cidadania está exarcebada e o clamor por justiça mais consolidado.

Hoje não aceitamos a violência com mais tranquilidade. Hoje voltamos algumas décadas atrás e nos revoltamos com o que é simplesmente errado. Hoje somos muito menos maus, bem menos maus. Que não precisamos mais de crimes assim e que Isabella seja nosso último caso de barbare entre pais e filhos.

Filha, teu pai nunca vai de machucar.

Ezequias

1/26/2008

Contar Linhas de Código C# no Windows Forms

Cansado de procurar onde ver quantas linhas de código tinha meu projeto resolvi contar na marra mesmo.

Se alguém souber como habilitar a contagem de linhas de código de um projeto por favor me digam.


Segue o código abaixo:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Collections;
using Microsoft.Build.Tasks;
using Microsoft.Build.Framework;

namespace ContarLinhasCodigo
{
public partial class Form1 : Form
{
string DiretorioRaiz = "C:/Codigo Fonte";

public Form1()
{
InitializeComponent();

DirectoryInfo dir = new DirectoryInfo(DiretorioRaiz);
IEnumerator arquivos = null;
try
{
arquivos = dir.GetFiles("*.cs", SearchOption.AllDirectories).GetEnumerator();
}
catch (DirectoryNotFoundException)
{
lbTotalLinhas.Text = "Diretório não encontrado";
return;
}

object arquivo;
long totLinhas = 0;
int linhasArquivo = 0;

TextReader tr = null;
while (arquivos.MoveNext())
{

arquivo = arquivos.Current;

if ((arquivo as FileSystemInfo).Name.Contains("Designer"))
continue;

#region Contar Linha do arquivo
tr = new StreamReader((arquivo as FileSystemInfo).FullName);
while (tr.ReadLine() != null)
{
linhasArquivo++;
totLinhas++;
}
Console.WriteLine((arquivo as FileSystemInfo).Name + ":" + linhasArquivo);
linhasArquivo = 0;
#endregion
}

Console.WriteLine("Total de Linhas do Projeto: " + totLinhas);
Text = "Total de Linhas de: " + DiretorioRaiz;
lbTotalLinhas.Text = totLinhas.ToString();
}
}
}


Ezequias

9/22/2007

[C#] TextBox só de Inteiros

Duas forma simples de deixar o TextBox apenas aceitando valores inteiros. Segue o código abaixo:

public void validarCaracInt(KeyEventArgs e)
{
if (!Char.IsNumber((char)e.KeyValue) | e.Shift)
{
if (e.KeyCode == Keys.Back || e.KeyCode == Keys.Delete || e.KeyCode == Keys.Left || e.KeyCode == Keys.Right)
e.SuppressKeyPress = false;
else
e.SuppressKeyPress = true;
}
else if (e.KeyCode == Keys.OemPeriod || e.KeyCode == Keys.Oemcomma || e.KeyCode == Keys.OemMinus) //(.), (,) (-) são considerados numéricos
{
e.SuppressKeyPress = true;
}
}

public void validarCaracIntRegex(KeyEventArgs e)
{
if (Regex.IsMatch(((char)e.KeyValue).ToString(), "^[0-9]$"))
e.SuppressKeyPress = false;
else
e.SuppressKeyPress = true;

if (e.Shift)
e.SuppressKeyPress = true;

if (e.KeyCode == Keys.Back || e.KeyCode == Keys.Delete || e.KeyCode == Keys.Right || e.KeyCode == Keys.Left)
e.SuppressKeyPress = false;
}


E no evento Key Press do TextBox:

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
//validarCaracInt(e); // <--- Utilize este
validarCaracIntRegex(e); // <--- ou este. Fica a sua escolha
}

R$ 29,99

Já há algum tempo venho refletindo sobre o comércio brasileiro e como ele se comporta para ganhar a preferência nacional. A fórmula é bem simples, mas funciona como nunca em uma sociedade como a nossa.

A tática consiste sempre em levar vantagem ao comprador. Como todos sabem o brasileiro sempre quer levar vantagem em tudo, mesmo quando sabe que está sendo enganado. Comprar um produto com promoção de 30, 40, 50% sempre atrai uma parcela grande da população. Comprar em até 30, 4o, 50 vezes faz você acreditar que você está pagando aos poucos ao vendedor e por isso deixando-o em suas mãos.

Comprar para pagar só em janeiro também é uma tática de levar vantágem em relaçãos aos "otários" que não pegaram essa tal promoção e vão ficar sem grana por serem mais bobos que você. Comprar uma câmera que é a metade do preço que as concorrentes só pra levar vantágem sobre as outras empresas.

Será que comprando por R$ 19,99 eu estarei levando vantágem de alguma forma ? Será que todos pensam assim para o comércio se comportar desta forma ou estou pirando ?

"Vamos comprar que são os últimos dias" ou "é só até amanhã" são fases que caem em cheio no inconciente corrupto coletivo nacional. São por estas e outras que todos nós sabemos que eu me pergunto:

Por que nós não nos contentamos em pagar o preço que o nosso fornecedor deseja pelo seu trabalho e capacidade de venda ? Por que ele tem que sempre achar que agente quer levar vantagem ?

Por que eu somente me motivaria a comprar se fosse para levar vantagem sobre meus amigos e meus colegas. Estas perguntas estão sem respostas no meu inconsciente. Quem puder me ajudar por favor me escrevam.

Estou farto desta selva que é o Brasil e eu acho que não vou mais escrever Brasil com B maiúsculo. Que pena do meu brasil.

E a propósito, vai querer uma caneta por R$ 29,99 ?