postagem fixa

Ola pessoal neste blog vou postar e informar as necessidades básicas para um Iniciante, como tambem sites nacionais e internacionais para comercio de peças, este blog e destinado ao grupo Arduino BR e de apoio ao meu canal www.youtube.com.br/noobtronik

terça-feira, 1 de dezembro de 2015

TecladoMatricialArduino


Usando teclado matricial no arduíno.

                            O teclado matricial, é um meio fácil e prático para utilizarmos em diversas funções, desde um simples protótipo à um projeto mais robusto, deixando o blábláblá de lado, vamos ao que interessa.

Sobre:

                          O teclado matricial já descrito por seu nome tem uma estrutura de ligações em forma de matriz, sendo assim, temos linhas e colunas, na imagem abaixo temos o esquema elétrico do mesmo.



Observe que as verdes são as linhas, e as amarelas as colunas.


Conceito:

                         Analisando o circuito da imagem anterior, sabemos que temos 4 linhas e 4 colunas, quando pressionamos um botão, fechamos contato de uma linha e um botão, sendo assim neste instante temos uma linha e uma coluna em contato, confira na imagem abaixo:

        







Ideia:
                Utilizamos as linhas como INPUT e as colunas como OUTPUT, sendo assim quando pressionarmos um botão temos um contato de uma porta de saída com uma entrada, a
 ideia do programa e nada mais que varrer as portas e verificar quais saídas e entradas foram 
conectadas, sabendo-se disso podemos identificar qual o botão pressionado.

Utilização:

                Criei uma biblioteca que permite utilizarmos este teclado de forma simples e fácil, disponível AQUI, baixe e instale.



     Após a Instalação, vá em Arquivos>Exemplo>TecMx>Examples>Pega_Tecla




/*
Ligue o teclado matricial sem resistores de pulldown
ligue normalmente aos terminais do arduino
*/

#include <tecMx.h>

TecMx teclado (13,12,11,10,9,8,7,6); //Linhas e colunas do arduino

// L1,L2,L3,L4,C1,C2,C3,C4


void setup() {
Serial.begin(9600); 

}


void loop() {

  if(teclado.disp()){ // verifica se há alguma tecla pressionada

   int tecla =teclado.retInt();// retorna a tecla com um numero int /p cada tecla
   Serial.println(tecla);
  }

}

Inclua as linhas destacadas acima no código.
 Obs: Confira as portas utilizadas do arduino no código

 Analisando o código:



            como dito nas primeiras linhas:



/*
Ligue o teclado matricial sem resistores de pulldown
ligue normalmente aos terminais do arduino
*/

   Basta ligar os jumpers diretamente nas portas digitais do arduíno, sem a necessidade de resistores de pulldown, pois a biblioteca trabalha com pullup interno do arduino.


a Linha abaixo, inclui a biblioteca para podermos trabalhar com ela:

#include <tecMx.h>

    Feito isso temos que instanciar a biblioteca com as portas que estamos utilizando para que possa ser feita a configuração inicial lembrando que os 4 primeiros números são as linhas e as outras 4 colunas (se você está utilizando um teclado de 4x3 utilize uma coluna amenos):



TecMx teclado (13,12,11,12,10,9,8,7);

Iniciamos a serial para que possamos ver os valores:



Serial.begin(9600);

e por fim o nosso algoritmo em si:



void loop() {
  if(teclado.disp()){ // verifica se há alguma tecla pressionada
   int tecla = teclado.getTec(); // retorna a tecla com um numero inteiro para cada tecla
  }
}

a linha abaixo verifica se há alguma tecla sendo pressionada, se esta condição for satisfeita ele executa a condição:

  if(teclado.disp()){
   
  }


    Nesta linha criamos uma variável do tipo inteira que ira receber  a tecla pressionada pelo usuário, a função retInt() retorna um numero inteiro para cada tecla pressionada:



int tecla = teclado.retInt();

Abaixo apenas mostramos este valor na serial:

Serial.println(tecla);

Obs: a biblioteca já se preocupa com longos tempos que o usuário permaneça com o botão pressionado por isso ela espera o mesmo retirar o dedo para que continue sua função para que não haja problemas com loops.

Agora basta abrir a serial e se divertir.

Espero que tenham gostado, qualquer coisa, so entrar em contato:

Email: melque_ex@yahoo.com.br
Whats:(11)981281791
FB:Facebook.com/melque.apolinario



segunda-feira, 2 de fevereiro de 2015

Expandindo portas analógicas

Bom pessoal para expandir as portas analogicas do arduino tive a ideia de usar o CI 4051.



Este Ci funciona chaveando varios canais No0 à No7 individualmente para um unico lugar COM
podemos selecionar a porta que queremos chavear atravez dos pinos ADDA, ADDB e ADDC, por meio de numeros binarios de 3 digitos, sabendo disso temos a compreenção que com um numero binario de 3 digitos temos 8 numeros diferentes sendo assim tambem 8 portas no CI, onde cada uma ativa uma porta a ser chaveada ao COM.

Como utilizar no arduino??

para utilizar este CI no arduino basta fazer as ligaçoes abaixo:



Atenção: Não esqueça de ligar o pino 8 ao GND e o pino 16 ao VCC



Como programar??

Para utilizar este Ci baixe aqui uma biblioteca que eu mesmo desenvolvi para este CI


Após instalar a biblioteca abra o exemplo "Reading_sensors"




passe para o arduino e veja o resultado na serial.





É isso ai galerinha espero que tenham gostado, se precisarem de alguma dica ou ajuda so falar comigo


melque_ex@yahoo.com.br ou
facebook.com.br/melque.apolinario

valeu e até a próxima.











quarta-feira, 28 de janeiro de 2015


Como expandir as portas do arduino

Bom pessoal, conheço 2 modos de expandir as portas do arduino, uma delas e com um shiftregister chamado 74hc595, mas, nao utilizaremos esse metodo, o CI que eu recomendo e o famoso PCF8574, sua vantagem ao 74hc595 é a facilidade em trabalhar com este CI e tambem que o mesmo possui comunicação I2c, ou seja, voce pode utilizar 16 Cis deste e utilizara as mesmas 2 portas do arduino.

Como isso é possivel?
a comunicação I2c trabalha com endereçamento, ou seja, por mais que vc ligue varios Cis no I2c, via programação nós indicamos o endereço (qual CI) que iremos utilizar naquele momento, legal ne?


Como configuro o endereço do meu PCF?

No seu CI existe 3 terminais responsaveis por formar o endereço do seu CI sao eles os pinos 1(A0),   2 (A1), 3(A2).


Dependendo de como você liga esses terminais voce forma um endereçamento diferente conforme a tabela abaixo.


ATENÇAO: existem 2 tipos de PCF os que terminam com A e os que terminam com AP a tabela acima e referente aos Cis que terminam com A, logo, os que terminam com AP os endereços começam com 56

Partindo para a prática

Utilizando o Pcf como OUTPUT (Saída)

      Na sua protoboard crie o circuito descrito abaixo:




ATENÇÃO :  Os transistores não são obrigatórios, apenas ligar os leds (positivo) com resistores de 330hms aos fios amarelos ja e suficiente



Note que configuramos o endereçamento do CI como L,L,L ou seja 32 em decimal.

Para utilizarmos este CI baixe aqui e instale a biblioteca necessaria para o mesmo, Feito isso abra o exemplo "Blink_OUTPUT", passe o codigo para o arduino, e se tudo estiver ok, apenas um led ficara piscando, mundando o valor do pcf.Write(1,HIGH) voce pode acionar outros leds lembrando que vai de 1 a 8 que corresponde a cada led ligado ao CI.



Utilizando o Pcf como Input (Entrada)

Na sua protoboard monte o esquema abaixo descrito:



ATENÇÃO: Não esqueça de ligar o pino 8 ao Ground e o pino 16 ao Vcc

Para utilizarmos este CI baixe aqui e instale a biblioteca necessaria para o mesmo, Feito isso abra o exemplo "Single_IC", passe o codigo para o arduino, Abra a Serial e aperte os botoes (Individualmente) e veja oque acontece.




Então é isso Galerinha espero que tenham gostado, caso precisem de alguma ajuda so falar comigo ok? vlw


facebook.com.br/melque.apolinario
melque_ex@yahoo.com.br

Abraços!!


quinta-feira, 15 de janeiro de 2015


Concurso Arduino BR




Olá pessoal, como tanto desejado e esperado este e o iníco do 1º concurso criativo da Arduino BR
neste post vou esclarecer todas e quais quer duvidas em relação ao evento ok?



Qual a premiação?

A premiação será dada por 75% do arrecadado para o primeiro colocado e o segundo colocado receberá 25% do arrecadado.

Além da premiação acima a CubicBlox está oferecendo 1 cubicblox para os 2 primeiros colocados
entre no link e descubra a empresa e a placa





     Como nossa parceira também a br-arduino.org está oferecendo R$90,00 para o primeiro colocado e mais R$60,00 para o segundo colocado






Como funciona o evento?


O canditato irá gravar um video de seu projeto criado apartir das peças descritas pelo concurso, ou seja, iremos selecionar 3 peças aleatorias sendo elas qualquer uma da lista descrita abaixo:

   Obs: os itens descritos por DIY poderão ser usadas as versões feitas a mão

*Módulo Bluethooth
*Módulo rele  (DIY)
*Módulo ponte H  (DIY)
*Módulo Ultrasônico
*Servo Motor
*RTC   (DIY)
*Motor de passo (ponte H inclusa)
*7 segmentos
*LCD (permitido I2c)
*motores DC
*led RGB
*PIR (Sensor de movimento)
*Buzzer (passivo e ativo)
*Serial

Obs: caso o candidato não possua uma das peças selecionadas pelo concurso poderá participar usando apenas 2 das tres selecionadas, não sendo permitida a substituição por outra diferente.

ATENÇÂO: Caso o participante não possua os itens selecionado pelo concurso, não haverá devolução do valor pago, os itens serão selecionados conforme listados na lista acima.

é permitido utilizar materiais seculares tais como:

*resistores
*potenciometros
*3 leds  (cor a gosto, não e permitio RGB como material secular)
*diodos
*capacitores
*e todo e qualquer material de papelaria, isopor, cola, fita, entre outros.

ATENÇÂO:os materias seculares sao permitidos desde que não desvie o foco do projeto em si!


Quais as plataformas Não permitidas?

Arduino DUE
Arduino UDOO
Arduino lilypad
PcDuino
Attiny
Esplora

Obs: Stand alones são permitidos.

Qual o tempo estimado de entrega?

21 dias (3 semanas) apartir do dia previsto pelo concurso, o candidato terá ate o 21º dia para enviar o link do video por e-mail caso contrário sera automaticamente desclassificado.

O usuário devera enviar por e-mail uma breve descrição do seu projeto para o email melque_ex@yahoo.com.br.


Como gravar o video?

No vídeo o participante devera se filmar dizendo seu nome completo de início, o restante do video explicando seu projeto, todos os videos deveram ser hospedados no youtube ou semelhantes, não aceitaremos videos enviados por email.

Há alguma restrição em relação a fonte de alimentação?

Não, é permitido qualquer meio de alimentação desde que não seja por USB


Quando inicia o concurso?

o concurso ira iniciar no dia 20/02/2015, neste dia iremos encaminhar por email os itens selecionados para o inicio dos projetos, sendo assim apartir deste dia começa-se a contar os 21 dias.

Posso fazer 2 projetos diferentes?

Pode desde que faça duas inscrições (pode se cadastrar com o mesmo nome 2 vezes).

Quais são as regras de avaliação?

*O projeto será avaliado com base na criatividade e não na complexidade
*Havendo 3 projetos semelhantes serão automaticamente desclassificados
*Havendo mais componentes que o permitido, o projeto será desqualificado
*O participante que nao enviar nome completo e comprovante para o email descrito estara automaticamente desclassificado
*Caso o video possua uma qualidade abaixo de 360px sera automaticamente desclassificado
*caso o participante envie o link do video fora do prazo de entrega estará desclassificado
*não e permitido a interação com a serial.
*caso um dos dispositivos selecionados seja o BT ou Serial, e permitido a criação de aplicações em Android ou VB.
*caso um dos dispositivos selecionados seja o BT e permitido a interação com o PC somente via BT (nao e permitido serial) aplicações sao permitidas.
*a serial SOMENTE e permitida caso for um dos itens selecionados para o concurso
* led RGB e APENAS permitido caso seja um dos itens seleciodados
* É permitido apenas o uso de uma plataforma

Como faço para participar?

Cadastre-se no formulario abaixo e efetue o pagamento no valor de R$5,00 nos bancos descritos abaixo, não se esqueça de enviar o comprovante e nome completo para o email melque_ex@yahoo.com.br.

ATENÇÂO: Os candidatos que por ventura cadastrarem dados incoerentes, não nos responsabilizamos por quaisquer eventuais desentendimentos a respeito.


Bancos:

Santander: Melquesedeque de lima apolinário
Agencia: 4267
Conta: 01085159-8
Conta Corrente


Caixa Econômica: Melquesedeque de lima apolinário
Agencia: 3086
Conta:14231-9 Operação: 013
Conta poupança











sexta-feira, 25 de julho de 2014

IF, ELSE, SWITCH CASE


e ai galerinha neste post vou ensinar pra vocês como ultilizar essas linhas de comandos de uma maneria bem fácil, me baseando com um botão e um led.

pessoal vejam esta postagem BÁSICA de comandos do arduino para acompanhar este post:


Primeiramente pessoal preciso que montem o circuito abaixo:


pessoal com o circuito acima notem que ligamos o positivo de um led  ha porta digital 7, o resistor pode ser de 330homs ou compatível, notem também que o nossa porta digital 4 esta ligada ha um resistor que vai ao Ground ou seja esta porta esta com sinal logico 0 neste momento, percebam que o nosso botão está ligado ao 5vts e à mesma porta(4), quando pressionarmos este botão nossa porta 4 não sera mais GND e sim positiva ou 5vts, ou seja, quando não pressionarmos o botão nossa porta está em LOW e quando pressionado em HIGH.


Programando

pessoal abaixo eu mostro um exemplo de sketch que você pode utilizar:





no código acima temos a variável estado que armazena o estado do nosso botão como descrito no código
como se armazena o estado?

simples o comando digitalRead(); nos retorna o estado de uma porta digital no void loop colocamos

estado  = digitalRead(botao);

ou seja, nossa variável estado vai ser igual ao valor lido na minha porta botao (4);

IF


a linha de comando IF e nada mais nada menos que um SE, ou seja "SE o meu estado for igual à HIGH, ligue o led"

entre "( )" fica a condição da nossa condicional
entre "{ }" fica a ação do nosso condicional se a condição for verdadeira

ELSE

a linha de comando e responsável por executar se a condição do IF acima não for verdadeira, ELSE significa SENÃO, ou seja "SE o meu estado for igual à HIGH, ligue o led SENÃO apague o led"


SWITCH CASE


a diferença do IF para o Switch case e que o IF podemos comparar valores <= ou <= e no case podemos comparar apenas valores iguais 

exemplo: if(valor <=10)  podemos fazer isto no if já no case não 
if(valor == 10)  este podemos usar o switch

switch(valor){
case 10:
break;
}

vantagem do switch:

sua vantagem e que não precisamos concatenar varios IFs para termos um determinada ação, 
ex: se precisamos comparar vários valores de uma variável usamos o switch que facilita já o IF
e bem mais complicado:

vantagem o IF:

sua vantagem e que podemos comparar valores iguais, menores ou diferentes


2 etapa switch case

este mesmo sketch podemos montar usando switch case:




Break a função dessa linha de comando pessoal e nada mais que indicar o fim da ação, ou seja acenda o led e volte para o loop, ou apague o led e volte para o loop.


Pessoal como podem notar usamos o switch case para fazermos a mesma coisa e vocês entenderem a diferença entre ambos 

qualquer duvida só falar comigo hehe

melque_ex@yahoo.com.br


VALEU GALERINHA....











Olá pessoal neste post vou ensinar uma noção básica pra arduino baseada no Blink:

Void Loop e Void Setup

Na estrutura de programação do arduino temos duas funções básicas para
Programarmos, são elas o void loop e void setup:




Void Setup():
Tudo que estiver dentro desta função será executado apenas UMA vez pelo arduino ao iniciar,
esta função e mais utilizada para configurações, porem, não e ESPECIFICA pra o assunto.

Void Loop():
Dentro desta função é onde todo o seu programa normalmente irá funcionar, esta função tem o trabalho de executar todos os comandos dentro da mesma infinitamente.

Atribuindo terminais à variáveis


Como sabemos na board do arduino temos  18 terminais entre elas portas digitais, analógicas



Para informarmos ao sketch (programa) que queremos utilizar uma determinada porta
podemos fazer em 2 maneiras:

A primeira delas e chamarmos diretamente a porta no programa:


não se apeguem aos comandos mais a frente vou explicar cada um;
notem na imagem acima que utilizando a porta digital 13 apenas colocamos o numero da porta que estamos utilizando.

A segunda maneira e a mais recomendada e adicionarmos a porta utilizada há uma variável e chamarmos a mesma:



Note na imagem acima que neste momento sempre que chamamos "led" estamos nos referindo a porta digital 13, ou seja, apelidamos nossa porta 13 como "led".



PinMode();

Esta linha de comando e utilizada para configurar a porta do arduino que você deseja utilizar.
Esta configuração fazemos ela dentro do void Setup(); porque não precisamos configura-la mais que uma vez.

Existem 2 tipos de configuração para portas digitais e analógicas são elas INPUT e OUTPUT,

como diferenciar?

sempre que o arduino ENVIAR um comando para algo seja led, rele motor ou qualquer coisa, ou seja, quando o comando vier do arduino utilizamos OUTPUT (Saída).

sempre que o arduino RECEBE um comando, seja qualquer coisa como exemplo um botão, ou um sensor, um comando externo utilizamos INPUT (Entrada).


Na imagem acima perceba que dentro do void setup configuramos nosso "led" que esta ligado a porta 13 do nosso arduino como OUTPUT.


Comandos em portas Digitais


Como você pode notar no post anterior usamos comandos que você deve desconhecer são eles
digitalWrite e digitalRead estes comandos são utilizados apenas para portas digitais. 

Digital Write


Este comando e utilizado para escrevermos apenas 2 valores nas nossas portas digitais que podem ser HIGH(sinal logico Alto) ou LOW (sinal logico Baixo) que também podem ser representados por 1 e 0


DigitalRead


Este comando é utilizados para lermos o estado lógico de uma determinada porta como exemplo um botão
este comando ira nos retornar se o botão esta pressionado (HIGH) ou não (LOW)






Como você notou acima colocamos nosso comando digital dentro do void loop
se passarmos este sketch para o arduino oque ira acontecer e o arduino ficar mandando o 
o LED na porta 13 acender direto, ou seja, você vai ver o mesmo aceso apenas.


para fazermos o mesmo piscar temos que apagar o mesmo e depois acender com um intervalo de tempo
se você mandar o led acender e apagar sem colocar um intervalo de tempo o resultado vai ser o mesmo porque no void loop o led vai acender e apagar tao rápido que ira parecer que ele nem ta piscando;

para darmos um intervalo de tempo entre as picadas devemos entender a função delay.



DELAY



a função do delay e parar o programa por um intervalo de tempo determinado por você.
o delay funciona como milisegundos, ou seja, para cada 1s usamos 1000ms:




note no sketch cima note que acendemos um LED esperamos 1s apagamos o mesmo LED esperamos
mais 1s e repetimos o mesmo processo infinitamente.


é isso ai galerinha espero que tenham gostado no meu próximo post vou mostrar as funções IF e SWITCH CASE










segunda-feira, 21 de julho de 2014

Aprendendo a Multiplexar

Ola galerinha neste post vou ensinar você a como multiplexar leds com esse post voce vai aprender realmente de como funciona.

A multiplexação consiste no ato de acender um conjunto de leds, um por vez, com um intervalo de tempo muito pequeno dando a inpresão que os leds estao acesos ao mesmo tempo, nao entendeu? vou desenhar

olhe a imagem abaixo:



os leds acima estao sendo acesos um por vez com um intervalo de tempo muito curto entre um e outro dando a impressao que todos estao acesos ao mesmo tempo, na imagem abaixo eu mostro como o circuito esta funcionando:



na imagem acima perceba que cada led e aceso individualmente acelerando esse intervalo de tempo o resultado e como o da 1 imagem


vamos para outro exemplo:

digamos que temos o circuito abaixo:





Entenda que sem usar multiplexação nao conseguimos acender todos os leds de apenas uma só vez, entenda também que para que acendamos um determinado led ao menos 1 porta ficara neutra (INPUT), ou seja não sera nem HIGH nem LOW

Olhando este mesmo circuito vemos que conseguimos acender um led de cada vez alternando o jeito em que ligamos as portas. (observe a tabela ao lado do circuito)



Ligamos cada terminal dos leds no arduino nas portas 8,9,10.

na IDE do arduino criamos variaveis e atribuimos os terminais:



no void Setup() chamamos uma função que criaremos mais pra frente


A função apagaTudo() seta todas as entradas como INPUT sendo assim apaga todos os LEDS





Lembra que falei que para acendermos um led ao menos uma porta vai estar com INPUT? então
chamamos a função apagaTudo() e em seguida a função setar(); que tem a função de colocar apenas
as 2 portas que serao ultilizadas pra acender o determinado LED








Nesta proxima função o parametro x e o led que quer acender de 1 à 6 note que no switch case
tem um tipo de "codigo" para cada LED que no caso sao diferentes, note tambem que dentro de cada
"case" existe a função setar() com as portas que serao ultilizadas para aquele determinado LED



neste ultimo passo e o void loop()  a função do void loop e nada mais nada menos que acender um led 
esperar um delay e apagar este led, e seguir para o proximo:


peceba que colocamos um delay de 1 millisegundo ou seja o intervalo de cada piscada e 1 milli para voce ver o projeto funcionando coloque dellay(200) e voce vai poder acompanhar o funcionamento

e agora PARABENS voce já sabe como multiplexar

Galera qualquer duvida so comentar aqui que tiro todas as suas duvidas ou me mande um email melque_ex@yahoo.com.br

valew galera e bons estudos.