segunda-feira, 31 de dezembro de 2012

Criando um termometro com o Arduino

Olá pessoal, na postagem de hoje (a última do ano) vamos ver como criar um termômetro com o Arduino, para isso vamos precisar de um sensor de temperatura LM35 que você encontra facilmente em lojas de componentes eletrônicos.
Primeiro passo - O Hardware: Basicamente o que vamos fazer aqui é conectar o pino 1 do LM35 no Positivo (+5V) e o terceiro pino no Negativo (GND), enquanto o pino do meio vai conectado na porta A1 do Arduino, conforme o esquema:
E após isso, conectar o Display LCD na placa Arduino. Agora, vamos para o próximo passo:
Segundo passo - O Software: Nessa parte vamos desenvolver o código responsável por fazer a leitura do sinal do LM35, converter em temperatura e mostrar no Display LCD. Vamos ao código.
Primeiro declaramos tudo o que será utilizado:
Nesse caso, declaramos o pino do Arduino onde é conectado o pino de sinal do LM35, depois inicializamos o valorLido como 0 (zero) e o valor de temperatura já convertido. O próximo passo é incluir a biblioteca e posteriormente definir os pinos que serão utilizados na comunicação. 
Definido todas essas informações é hora de desenvolver o programa em si:
Dentro do void setup() linpamos a tela do LCD, caso esse possua alguma informação (logo após um reset por exemplo) e inicializamos a tela como tendo 16 caracteres de largura e 2 caracteres de altura.
Dentro do void loop() o código limpa a tela novamente e será feita a limpeza toda as vezes que o código estiver rodando, o sinal do LM35 é lido pela entrada analógica e na linha seguinte é convertido em ºC.
Depois o cursor é posicionado na linha 0 e coluna 0 onde é escrito "Temp atual:" Na próxima linha o cursor é posicionado na coluna 2 onde escreve o valor da temperatura e o "C" logo na sequência. E assim o código fica executando até que a alimentação de energia seja cortada. 
Para terminar, um foto do termometro em funcionamento:
É, está quente aqui sim :(
Por hoje é isso pessoal, até a próxima postagem e um Feliz Ano Novo para vocês.

Fontes:
- Datasheet LM35;
- Arduino AnalogRead();
- Arduino LiquidCrystal();

quinta-feira, 27 de dezembro de 2012

Display LCD com Arduino

Bom pessoal, a postagem de hoje é para ensinar a escrever em um display LCD usando o Arduino, vou utilizar o LCD Keypad Shield, para entender a configuração leia este post
Nesta postagem vamos ver desde o básico como escrever um "Hello World" até a parte de criar caracteres personalizados.
Primeiramente o código básico "hello world":
Todas as linhas já estão comentadas, mas você deve ficar atento com a seguinte linha "LiquidCrystal lcd(8,9,4,5,6,7);" esta linha inicializa a biblioteca com os pinos para a cominucação, como eu estou usando o LCD Keypad Shield os pinos são esses, se você possuir apenas o LCD cuide a ligação correta dos fios, foi por isso que no inicio do post eu pedi que você desse uma olhada na postagem sobre o LCD Keypad Shield com o Arduino!
Basicamente o codigo escrito anteriormente escreve na tela um "hello, world!" e na linha de baixo fica escrevendo os segundos desde o momento que foi pressionado reset.
Vamos agora entender o comando "lcd.setCursor" é um comando muito simples e muito útil que serve para posicionar-mos o cursor na tela antes de escrever o conteúdo, como foi inicializado o cursor tenho 16 colunas e 2 linhas - lcd.begin(16, 2); - podemos posicionar o cursor em qualquer lugar na tela a qualquer momento, de acordo com a necessidade, por padão se você nao declarar nada, o Arduino começa escrevendo na coluna 0 e linha 0 - o mesmo que declarar  lcd.setCursor(0, 0); -.
Outro comando muito util e simples de implementar é para a limpeza da tela, basta você escrever lcd.clear();  no momento que desejar limpar a tela (o ideal é fazer isso sempre antes de escrever novas informações, evita de misturar os caracteres).
Diferença entre lcd.write e lcd.print:
O primeiro (lcd.write) imprime apenas um caractere na tela, é usado nos caracteres especiais como veremos mais adiante.
O segundo (lcd.print) imprime textos na tela, onde o conteúdo pode ser char, byte, int, long, ou string.
Vamos agora ver como criar caracteres especiais, você viu que no inicio do post há uma foto com o simbolo do blog e um boneco de mãos para cima?? bom, eles foram feitos usando o comando createChar().
Com os displays baseados no HD44780 podemos criar até 8 caracteres customizados que são armazenados em um vetor, e mostrar um a um quando necessário. Primeiro devemos criar um vetor de 8 bytes que representará o nosso caracter.
Veja o esquema a seguir:
É definido uma variavel "heart" que possui as informações de cada endereço que formam o caractere desejado, se você olhar bem o LCD irá ver que cada caractere é formado por um retangulo de 5 x 8 formado por varios quadrados pequenos juntos (cada quadrado é um pixel). 
Para criar um caractere especial você precisa decidir quais os quadrinhos serão visiveis (bit 1) e quais ficarão desligados (bit 0) passando isso através de um vetor, onde cada virgula separa uma linha do retângulo.
A primeira coisa após inicializar o display através do comando LiquidCrystal lcd(8,9,4,5,6,7);  é criar o vetor com os caracteres desejados que podem ser até 8 numerados de 0 até 7 vamos "montar" só um no momento, o do blog, ele ficaria assim:
Após "montar" o caractere, vamos criar ele, então dentro do void setup() a gente digita: lcd.createChar(0, blog);  O comando lcd.createChar creia um caractere customizado (gylph). Até 8 caracteres de 5x8 pixels são suportados (como dito anteriormente, numerados de 0 a 7).
Após isso, dentro do void loop basta posicionar o cursor onde o caractere deverá aparecer e mandar escrever ele na através do comando write, dessa forma:
Se você deseja criar outros caracteres, basta "montar" os outros a baixo do primeiro logo após inicializar o display, mudando apenas o nome (que no meu caso chamei de "blog"), e dentro do void setup() digita-se o comando lcd.createChar mudando apenas o número (0, 1, 2, 3 ... até 7) e o nome do caractere.
Pronto! Assim você consegue não só escrever em uma tela LCD como escrever caracteres criados por você, para saber mais consulte as fontes no fim do post e não deixe de praticar. Abraço e até a próxima.

Fontes:

quarta-feira, 26 de dezembro de 2012

Usando o LCD keypad Shield com a biblioteca LiquidCrystal.h

Olá pessoal, a postagem de hoje é sobre a adptação de como utilizar o LCD keypad Shield com a biblioteca LiquidCrystal.h do Arduino, mas por quê isso?? Bom, há um tempo atrás eu comprei um LCD Keypad Shield, o da imagem a seguir:
Este módulo funciona(va) com a biblioteca LCD4Bit_mod, a qual está desatualizada e obsoleta (ela é de 2006), tentei adaptar ela para funcionar com a versão 1.0 do Arduino, como mostrei nessa postagem, mas não adiantou, então comecei a pensar em desistir de usar esse shield, já que com a biblioteca LiquidCrystal.h ele "não funcionava". 
A questão é que ele funcionava sim, mas os pinos estavam inicializados de forma totalmente diferente, segundo o site Shield List, os pinos utilizados por este shield são:
O pino analógico A0 é utilizado pelos 5 botões que existem no shield (eu removi os botões do meu), os outros 6 pinos servem para o acionamento do LCD, então eu abri o arquivo LCD4Bit_mod.cpp no notepad++ para visualizar a forma como estavam declarados cada um dos pinos, e o que achei foi isso:
De posse desses pinos eu abri o arquivo "blink" da biblioteca LiquidCrystal, e lá estava nas linhas de comentário:
 A partir daqui o que fiz foi, olhar o que tinha na biblioteca atual e na antiga e deixar a pinagem como a antiga, no sketch do código Blink em questão, a declaração padrão dos pinos era:
E após a adaptação dos pinos ficou: (no quadro verde a modificação)
Dessa forma o LCD que antes não dava nem sinal de vida agora funciona normalmente e com uma biblioteca atualizada:
Ahhh e como eu tinha falado anteriormente, eu removi os botões do meu LCD para usar somente a tela e usar os botões que eu quiser, então o shield ficou assim:
Na linha vermelha os botões que foram removidos, posteriormente vou cobrir com tinta essa parte para não aparecer que foram retirados os botões de pressão. E para finalizar uma foto no escuro da tela LCD:
Deu um trabalho tirar essa foto, pois minha maquina digital não é boa para fotos noturnas, a lente não deixa passar muita luz, então foi umas 8 tentativas até acertar a foto e ficar visivel o texto, além de ajustar o brilho da tela no potenciômetro (em azul no canto superior esquerdo da primeira imagem).
Bom pessoal, por hoje é só, um abraço e até a próxima.

terça-feira, 18 de dezembro de 2012

conhecendo um pouco o Raspberry Pi

Na postagem de hoje vamos conhecer um pouco mais sobre a plataforma do Raspberry Pi, minha placa chegou esses dias, ainda não tive tempo de testar muito ela e começar a programar, mas vou fazer isso agora nas férias.
O que é o Raspberry Pi?
É um pequeno computador, do tamanho de um cartão de crédito desenvolvido no Reino Unido onde todo o Hardware é desenvolvido em uma única placa. Veja a imagem a seguir onde o mesmo está em uma pequena caixa rosa que veio com ele:
 
Do lado direito temos 2 portas USB 2.0 e uma porta de rede Ethernet 10/100, na parte superior temos o conector preto para a saída de áudio, o conector RCA fêmea para saída de vídeo e as portas GPIO, na parte inferior temos a saída de vídeo HDMI e ao centro o Processador BCM2835, como no esquema a seguir:
Este é o modelo B, o modelo A não possui porta Ethernet e apresentas apenas 1 porta USB 2.0.
O sistema operacional é armazenado em um cartão SD de 4GB e é compatível com sistemas operacionais baseados em Linux, a distribuição Linux oficial do Raspberry Pi é o Raspbian mas a plataforma também suporta Arch Linux, RISC OS E Debian.
Ainda quero comprar um livro de Python para aprender mais uma linguagem de programação e poder desenvolver projetos com o Pi, começando pelo básico (piscar um LED) e ir avançando aos poucos, e quem sabe fazer a interligação do Pi com o Arduino.
Por hoje é isso pessoal, só conhecer o Pi, para ler mais consultem as referencias, abraço e até a próxima.
Fontes:
- RaspberryPi.org

segunda-feira, 10 de dezembro de 2012

Google homenageia Ada Byron

Hoje ao abrir o Google, vejo o simbolo classico modificado, na hora reconheci que era uma homenagem à Ada Byron, ou Condessa de Lovelace, no seu aniversário de 197 anos, eu já falei sobre ela nesse post.
Ada era filha do Poeta Britânico Lord Byron e sua esposa Annabella, Ada é conhecida como a primeira programadora da história, pois desenvolveu códigos que descreviam como alimentar com informações a maquina analítica de Charles Babbage. Em reconhecimento a suas contribuições originais, o Departamento de Defesa dos Estados Unidos no ano de 1980 registrou a linguagem de programação de seu novo sistema de Ada. 
Por hoje é isso pessoal, abraços e até a próxima.