Silício Germânio
Um blog sobre eletrônica =]

Desculpem a demora!

By Homerzinho

O post do circuito final está quase pronto. Tive alguns trabalhos na faculdade, por isso a demora.

Gostaria de pedir novamente para que deixem comentários, assim saberei aonde devo melhorar e que direção tomar nos próximos projetos.

 

Bom, acabaram-se as provas. Agora teremos novos posts mais rapidamente.

Desta vez, postarei um pseudocódigo para o Genius. Antes, porém, vou tentar explicar o que são microcontroladores.

-Microcontroladores:

Um microcontrolador basicamente é uma caixa preta que têm pinos de entrada e de saída. A beleza do microcontrolador esta em podermos mudar o programa que controla as saídas à partir das entradas.

Cada saída e entrada do microcontrolador deve estar em 0V ou 5V. No nosso projeto, usaremos os 5V das saídas para acender pequenos LEDs que , por sua vez, serão as luzes do Genius. Na entrada, utilizaremos botões que mandarão 0V ou 5V para os pinos de entrada.

Então, resumindo, um microcontrolador recebe os 0s e 1s na entrada, os interpreta e gera dados na saída.


-Por que um pseudo-código?

Como eu disse, o intuito deste projeto é que ele possa ser feito com qualquer tipo de microcontrolador. Se eu disponibilizasse o código completo, quem usa microcontroladores PIC ao invés dos Atmel pode ter dificuldades. No post de montagem disponibilizo o código "em AVR" pronto.

Também vou mostrar apenas um pseudo-código pois o objetivo desse post é analisar o diagrama de blocos do arquivo C e gerar um código à partir deste. Creio que um pseudo-código seria melhor para este fim.


-Chega de enrolação, vamos ao código:


Antes da análise do diagrama devemos fazer as inicializações e declarações de variáveis necessárias:



#include "stdlib.h"
//Inclua outras bibliotecas necessárias para cada tipo de microcontrolador.
#define LEVELMAX 30


int main()
{

int level,i,j,perdeu=0;
int Vetor_de_cores[LEVELMAX];


return 0;
}
Genius. Versão 0.1

Bom, já temos o começo do programa. Agora vamos colocar os devidos loopings e funções de acordo com o diagrama de blocos:



#include "stdlib.h"
//Inclua outras bibliotecas necessárias para cada tipo de microcontrolador.
#define LEVELMAX 30

int main()
{

int level,i,j,k=0;
int Vetor_de_cores[LEVELMAX];
while(1)
{
i=0;
j=0;
k=0;
Inicializa_Vetor(Vetor_de_cores);

while(!perdeu) /*Enquanto o usuário não perdeu o jogo*/
{

for(i=0;i menor do que level; i++)
{
Acende_Luz(Vetor_de_cores[i]);
Aguarda(50);
}

for(j=0;j menor do que level; j++)
{
if(Entrada()!=pow(2,Vetor_de_cores[i])) /*Lógica com binários*/
{
perdeu=1;
break;
}
}

level++;

}

return 0;
}
Genius. Versão 0.2

Como vocês viram não há nada de muito complexo no código. Agora analisemos função por função:



void Inicializa_Vetor(int *vetor[LEVELMAX])
{

for(int i=0; i menor do que LEVELMAX; i++)
{
vetor[i]=rand()%4;
}

}


void Acende_Luz(int luz)
{

Porta_Saida=pow(2,luz); /*Esta potencia deve-se novamente à lógica binária que estamos fazendo, qualquer dúvida comentem!*/

}


void Aguarda(int ms)
{
int tempo=StartTimer();

/*StartTimer seria uma função temporizadora do microcontrolador usado*/

while(tempo

Bom, é isso aí. Qualquer dúvida comentem que o próximo post será sobre dúvidas de vocês. Acho que não há nada de muito complicado aí em cima.

A única explicação que eu queria fazer é sobre a lógica binária:

(Espero que vocês conheçam a numeração binária pois será necessário para entender a lógica.)

O microcontrolador tem N portas de M bits. Cada bit é fisicamente representado por uma perninha do microcontrolador.

Como queremos acender apenas um led, se simplesmente igualássemos a porta de saída ao número do vetor de luzes, teríamos problemas se o número fosse 3, já que:

3 na base 10 = 0011 em binário.

Portanto , quando queremos deixar em 5V apenas o quarto terminal da porta de saída (Os números aleatórios são gerados de 0 a 3, portanto quando sorteamos 3 , desejamos ligar o 4 perninha) devemos igualar a porta de saída à 8 .

8 na base 10 = 1000 na base 2

Então teremos as seguintes saídas para cada número possível sorteado:


Em ordem, temos: Número sorteado, número que vai para saída, número em decimal e número em binário.

Tabela 1.



Conseguiram entender o que o microcontrolador faz?
É como se ele recebesse um número na entrada, trabalhasse com ele dentro do microcontrolador é devolvesse um número na saída. Porém, quando igualamos a saída à um número decimal, ela sairá na forma de binário.

Qualquer dúvida comentem. Aliás, comentem de qualquer forma, acho que não estou recebendo visitas =[.



[]'s Pitt.

 



-Diagrama de blocos do projeto:


Diagrama de blocos do projeto. [Clique para aumentar]


-Diagrama de blocos do programa do microcontrolador:



Diagrama de blocos do programa. [Clique para aumentar]


Não deu pra atualizar mais do que isso hoje pois tenho prova de numérico amanhã. Assim que eu sair da prova explico os diagramas.

O primeiro é bem óbvio, praticamente inútil. Já o segundo merece uma explicação mais detalhada.

Atualizei hoje só pra não deixar o blog parado.


[]'s Pitt.

 

Decidi começar com um projeto relativamente barato e que agradasse à todos.

Lembram-se do Genius da estrela, aquele jogo em que luzes eram acesas numa certa seqüencia e você tinha que repeti-la?



Genius original.



Pois é, no nosso primeiro projeto montaremos um desses.


Lista inicial de partes¹:

-Microcontrolador.² (R$ 10,00 ~ 30,00)
-4 Leds.
(R$ 3,00)
-Placa de fenolite 15x15. (R$ 5,00)
-4 Pilhas. (R$ 8,00)
-Fios.
-Resistores diversos.
(R$ 1,00)
-Caixa plástica para acomodar o circuito.

Ferramentas:

-Ferro de solda.
-Estanho.
-Tampa de caneta bic :P.

-Alicate descascador de fios.
-Kit para confecção de placas de circuito impresso
³. (R$ 53,00)
-Gravador de microcontrolador.

Software:

-AVR Studio (http://www.atmel.com/dyn/Products/tools_card.asp?tool_id=2725)


Preço total: R$ 27,00.

Comentários:
-O preço dos componentes está exagerado, por menos de 20 reais você consegue tudo.

-Não foi somado ao preço o Kit, já que este não servirá apenas para este projeto. Considere-o um investimento.

-Para a confecção do gravador do microcontrolador basta procurar no google pelo modelo de microcontrolador que você irá usar. Em pouco tempo mostrarei etapa por etapa a montagem de um gravador pra microcontroladores Avr Atmel.

¹-Esta lista não é definitiva já que ainda não projetamos o jogo. Tentarei fazer esse tipo de lista preliminar em todos os projetos, de modo que todos possam ter uma idéia dos componentes que usaremos.

²-Usarei a linguagem C para microcontroladores AVR. De qualquer forma, o programa é facilmente adaptável para outros microcontroladores e lingüagens.

³-Existem kits para fazer sua própria placa de circuito impresso, procure por 'SueKit' no google. Você pode fazer a placa sem o Kit, basta procurar pelas placas de fenolite já perfuradas.

[]'s Pitt.

 

Apresentação.

By Homerzinho

Olá, sou o Pitt. À partir de agora, seu tutor :P.

Estudo engenharia eletrônica e sou um grande admirador de projetos DIY.

Decidi começar esse blog com a intenção de trazer aos leitores uma nova fonte de projetos de eletrônica. E, quem sabe, traduzir alguns projetos já prontos que sejam de interesse geral.

Os projetos que trarei pra vocês serão divididos em vários posts. Da seguinte forma:

Primeiro post:

-Descrição do projeto-

- Aqui descreveremos os objetivos do projeto. Após receber comentários suficientes -depois que o blog estiver pop :P- vamos ao projeto em si. Nos comentários , quero que vocês digam o que mais pode ser implementado, o que vocês pensam que será muito difícil/inútil/chato de ser implementado. De modo que, juntos, possamos melhorar o projeto ao gosto de todos.


Segundo post:

-Diagrama de blocos-

- Esse post servirá para dividir o projeto em blocos, pra facilitar a implementação. Também vou esperar o comentário de vocês pra saber se eu fiz a melhor divisão possível e o que pode ser melhorado.


Terceiro/Quarto/Quinto/N post:

-Implementação de cada bloco em circuitos-

- Nessa fase implementaremos o circuito eletrônico em si. O ideal é que conforme eu poste, vocês procurem implementações para os próximos blocos, daí discutimos a melhor e utilizamo-na.


N+1/N+2/... post:

-Implementação real do circuito-

- Aqui colocamos a mão na massa e montamos o circuito, teremos fotos da montagem e vídeos com o projeto pronto.


Você deve estar se perguntando: -Mas por que ter toda essa divisão?

Eu respondo: Pois assim aprendemos mais!

Explico: Fazendo o projeto post-a-post, vocês têm a chance de pensar em como resolver os problemas e, quem sabe, adquirir o tal 'pensamento em blocos'. Dessa forma, vocês terão facilidade de resolver problemas e projetar circuitos e qualquer outra coisa de forma mais fácil.


[]'s Pitt