Conectando a placa Intel Galileo via rede Wifi

Olá a todos,

nesse post demonstraremos como podemos conectar a placa Intel Galileo Gen2 na nossa rede Wifi. Podemos realizar essa conexão por dois modos:

  • Utilizando shields WIFI do padrão Arduino
  • Por meio de uma placa Wifi mini PCI utilizada em notebooks

O uso de um shield Arduino de Wifi possui a vantagem de utilizarmos o padrão Arduino de conexão, porém limitados o uso da conexão apenas aos sketchs, que são os programas desenvolvidos na linguagem do Arduino. Além disso, toda vez que nossos sketchs iniciarem o objeto de WiFi será iniciada a conexão de rede o que consome algum tempo.

Já o uso da placa de Wifi mini PCI possui a vantagem de podermos utilizá-la em todas as linguagens de programação disponíveis para a Intel Galileo Gen2 e a conexão de rede é estabelecida quando a placa é ligada. Outro beneficio do uso da placa mini PCI no lugar de um shield é a redução de espaço que em alguns casos pode ser crucial.

Para adicionar uma conexão WiFi na Intel Galileo com o uso da placa Mini PCI precisaremos acessar o terminal do Yocto, cujo procedimento está descrito no post anterior. Além dos itens mencionados naquele post precisaremos:

  • Placa Intel Centrino Wireless-N 135;
  • Adaptador da placa mini PCI;
  • Um par de antenas de lap top.

O primeiro passo é montarmos o adaptador na placa mini PCI. Fixe o adaptador na placa com o uso dos parafusos que acompanham o adaptador:

Montagem da placa Wifi no adaptador
Montagem da placa Wifi no adaptador

Em seguida conecte as antenas de laptop nos terminais da placa mini PCI. Para encerra a instalação da placa insira os terminais da placa mini PCI no slot mini PCI que está no verso da placa e encaixe os furos do adaptador nos encaixes da placa:

Montagem no verso da Intel Galileo
Montagem no verso da Intel Galileo

Com a montagem física concluída, ligue a Galileo Gen2 na energia e no roteador com o cabo e inicie uma sessão SSH como mostrado no post anterior. Após iniciada a sessão execute o comando connmanctl. Note que o prompt do terminal foi alterado. Inicie a placa de WiFi com o comando enable wifi e em seguida realize a procura da sua rede com o comando scan wifi.

Para listar as redes identificadas utilize o comando services. Será exibida no terminal uma lista com o nome das redes encontradas e um identificador para cada uma.

Comandos para habilitar a interface Wifi
Comandos para habilitar a interface Wifi

Caso a rede que você deseja conectar sua placa possua senha execute o comando agent on. A conexão com a rede é realizada com o comando connect <ID da rede>. Você não precisa digitar todo o ID da rede, somente os primeiros caracteres e em seguida pressione TAB para o Linux completar o texto. Ao entrar com o comando será solicitada a senha.

Com a conexão estabelecida digite o comando exit para encerrar o connmanctl. Para confirmar que a conexão WiFi foi estabelecida e obter seu endereço IP execute o comando ifconfig. Você poderá utilizar o endereço IP dessa conexão para futuras conexões com o Putty e também em seus programas:

Localizando o endereço IP da placa Wifi
Localizando o endereço IP da placa Wifi

Onde encontrar:

Obrigado a todos e até o próximo post!

Controlando motores DC com o Arduino

Olá a todos,

nesse post aprenderemos como utilizar motores DC em nossos projeto com Arduino. Os motores DC são utilizamos em robôs ou brinquedos de radiocontrole para movimentá-los. Porém esses motores consomem mais potência do que os pinos de controle do Arduino podem fornecer e por esse motivo não podemos conectar os motores diretamente nos pinos digitais do Arduino.

Para contornar esse problema utilizamos drivers de potência que são circuitos que permitem que um sinal de baixa potência controle o fluxo de energia de uma fonte de alta potência. Podemos construir esse tipo de circuito com o uso de transistores, mas existem circuitos integrados (CIs) que já possuem esses circuitos montados.

No nosso circuito utilizaremos um CI chamado L239D que é um circuito driver de potencia chamado de ponte H. Esse tipo de circuito permite controlarmos um motor DC nos dois sentidos (horário e anti-horário). A velocidade do motor poderá ser controlada pelo uso da técnica de PWM onde a velocidade do motor será proporcional a largura do pulso.

O CI L239D possui dois circuitos ponte H que suportam até 36V e 1A, portanto é possível controlarmos dois motores DC com até essa potência com apenas um L239D. Os pinos do L239D devem ser contados como na figura abaixo:

Pinagem do CI L293D
Pinagem do CI L293D

O primeiro passo é conectarmos os terminais 4, 5, 12 e 13 do L293D no terra (GND) do Arduino e em seguida os terminais 1, 8, 9 e 16 também do L293D no pino 5V do Arduino. Agora conecte os terminais 2 e 7 do CI nos pinos do Arduino que controlarão o giro do motor (horário e anti-horário). Para finalizar conecte os pinos do motor nos terminais 3 e 6 do L293D.

Circuito montado
Circuito montado

Abaixo temos o esquema elétrico e o desenho elaborado no simulador:

Diagrama do circuito
Diagrama do circuito
Modelo do circuito
Modelo do circuito

Passaremos agora para o código que controlará o motor DC.

O primeiro passo é declarar as constantes que indicarão os pinos do Arduino que controlarão o motor. Na sequência configure esses pinos como saída, com a função pinMode utilizando a constante OUTPUT. Deixe o motor parado deixando os dois pinos em estado LOW. Encerre a inicialização do programa configurando a porta serial:

Início do Programa
Início do Programa

Passaremos para o desenvolvimento da função loop, que fará a leitura da porta serial e controlará a rotação do motor DC. O primeiro passo é verificar com o método available se há caracteres para serem lidos da porta serial. Caso não exista caracteres na porta serial o programa deve aguardar 300 milissegundos e encerrar essa execução da função loop com o comando return.

Existindo caracteres para serem lidos, deveremos utilizar o método read para obtê-los. Caso tenha sido enviado o caractere A, deixaremos um dos pinos em estado LOW, e no outro pino utilizaremos o PWM com valor 128 para o motor girar em um sentido. Quando for enviado o caractere L faremos ação contrária e o motor girará no outro sentido. Ao enviarmos o caractere de espaço em branco deixaremos os dois pinos com valor LOW para parar o motor.

Código da função loop
Código da função loop

Compile o código, transfira o programa e acesse o monitor serial. Envie um caractere A ou L para fazer o motor girar em um sentido. Envie o caractere espaço para fazer o motor parar. Se desejar altere o valor do PWM de 128 para outro valor para alterar a velocidade do motor.

Onde encontrar alguns dos componentes:

Obrigado pela atenção e até o próximo post!

Controlando servo motores com o Arduino

Olá a todos,

neste post aprenderemos utilizar servos motores em nossos projetos. Servos motores são dispositivos que permitem controlarmos com precisão a posição do seu eixo. A posição do eixo de um servo é controlada com o uso do PWM, onde a largura do pulso HIGH informa a posição do servo. Existem servos que permitem a rotação de 90°, 180°e até 360°de seu eixo. Servos são muito utilizados em robôs e brinquedos de radio controle, como carrinhos e drones.

Controlaremos a posição do servo enviando comandos pela porta serial, assim quando enviarmos o caractere A o servido deslocará o eixo um grau no sentido anti-horário e ao enviarmos o caractere S o servo deslocará o eixo um grau no sentido horário.

Ao contrário dos post apresentados até o momento não será necessário a montagem de um circuito na protoboard, pois o servo utilizado nesse exemplo possui um conector que se encaixa no cabo macho-macho. Simplesmente conecte o fio do terra do servo em um pino terra (GND) do Arduino, o fio do VCC do servo no pino 5V do Arduino e o fio que sobrará em um pino digital do Arduino que suporte o uso de PMW.

Servo motor montado no Arduino
Servo motor montado no Arduino

Abaixo temos o esquema elétrico e o desenho elaborado no simulador:

Diagrama da montagem do Servo no Arduino
Diagrama da montagem do Servo no Arduino
Modelo da montagem do servo no Arduino
Modelo da montagem do servo no Arduino

Passaremos agora para o desenvolvimento do programa que controlará o servo. O primeiro passo é utilizarmos o comando #include para incluirmos a biblioteca Servo.h que possui o objeto e métodos para trabalharmos com servo motores. Essa biblioteca disponibiliza métodos mais simples para trabalhar com os servos, como o método write que recebe o grau que queremos o eixo do servo seja movido ao invés do comprimento do pulso.

Em seguida declare um objeto do tipo Servo para controlarmos o servo e uma variável do tipo inteiro para armazenar o ângulo que o eixo estará. Em seguida escreva na função setup a inicialização do objeto Servo com o método attach. Esse método recebe o pino que o servo está conectado. Os valores de comprimento mínimo e máximo do pulso devem ser obtidos na documentação do servo. Inicie também na função setup a porta serial.

Início do código para controlar o servo
Início do código para controlar o servo

Na função loop verifique se há caracteres para serem lidos na porta serial. Caso não exista caracteres para serem lidos o programa aguardará 300 milissegundos e terminará esse execução da função loop com o comando return.

Existindo caracteres na porta serial, estes deverão ser lidos. Quando o caractere enviado for A a variável com os graus da posição do eixo será incrementada em uma unidade e quando for enviado o caractere S essa variável será decrementada em uma unidade. Após o cálculo da nova posição ela será enviada e o eixo do servo será movimentado. Por fim a função aguarda 300 milissegundos para verificar novamente a porta serial.

Onde encontrar alguns dos componentes:

Obrigado pela atenção e até o próximo post!

Utilizando display de LCD com o Arduino

Olá a todos,

Até o momento utilizamos a porta serial do Arduino em conjunto com o monitor serial do IDE para recebermos mensagens dos nossos programas como a temperatura ou a intensidade de luz do ambiente. Nesse post aprenderemos como utilizar um display de cristal liquido para dispensar o uso do cabo USB e do computador.

Nesse exemplo utilizaremos um display LCD de 2 linhas e 16 posições por linhas, mas existem outros modelos disponíveis no mercado. Para esses outros modelos é importante você consultar o datasheet, que normalmente está disponível na internet, para verificar as conexões necessárias.

Para montarmos o circuito coloque o display na protoboard e também um potenciômetro. O potenciômetro será utilizado para controlarmos o brilho do LCD. Em seguida ligue o terminal da esquerda do potenciômetro no terra (GND) do Arduino e no terminal 1 do display (o terminal mais próximo da borda do LCD). Conecte também no terra os terminais 5 e 16 do LCD.

Agora conecte o pino de 5V do Arduino no terminal da direita do potenciômetro e também nos pinos 2, 11 e 15 do LCD. Conecte o terminal 3 do LCD no terminal central do potenciômetro.

O próximo passo é conectar o terminal 4 do LCD no pino 12 do Arduino e o terminal 6 do LCD no pino 11 do Arduino. Conecte também os terminais 11, 12, 13 e 14 do LCD nos pinos 5, 4, 3 e 2 do Arduino respectivamente. Revise todas as conexões utilizando a imagem e os diagramas do circuito que estão abaixo:

Circuito utilizado no post
Circuito utilizado no post

Abaixo temos o esquema elétrico e o desenho elaborado no simulador:

Diagrama elétrico do circuito utilizado
Diagrama elétrico do circuito utilizado
Modelo do circuito
Modelo do circuito

Passaremos agora para o desenvolvimento do programa que receberá textos pela porta serial e exibirá esses textos no LCD.

O primeiro passo é incluir no nosso programa o arquivo com as funcionalidades do LCD através do comando #include < LiquidCrystal.h >. Esse comando importa todas as funcionalidades existentes do arquivo informado para o nosso programa.

Importado o arquivo o próximo passo será a declaração de um objeto do tipo LiquidCrystal para operarmos o LCD e de uma variável inteira para controlar em qual linha do LCD escreveremos a mensagem. Note que no construtor do objeto do tipo LiquidCrystal devem ser informados os pinos do Arduino que estão conectados ao LCD.

O objeto do tipo LiquidCrystal possui métodos que facilitam o uso do LCD dispensando a necessidade de controlar diretamente os pinos do Arduino.

Em seguida escreva na função setup a configuração do LCD com uso do método begin. Nesse método devem ser informadas a quantidade de colunas e quantidade linhas do display. Escreva também na função setup a configuração da porta serial.

Início do código
Início do código

Passaremos para o desenvolvimento da função loop. O primeiro passo é verificarmos a quantidade de caracteres disponíveis na porta serial com o método available. Note que no programa foi limitada a quantidade de caracteres em 16 para evitar estouros na linha do LCD.

Em seguida declare uma variável do tipo String. Esse tipo de variável representa uma cadeia de caracteres, ou seja, um texto. O próximo passo é ler os caracteres disponíveis na porta serial com o método read e adicionarmos esses caracteres na variável String. Como o método read do objeto Serial lê apenas um caractere por vez colocamos esse trecho de código em uma laço do tipo FOR para lermos todos os caracteres.

Com o texto na memória do programa vamos primeiro escrever no LCD uma linha em branco para limpar a mensagem anterior para em seguida escrever a nossa mensagem. Ambas as instruções são executadas com o método print. Note que sempre na sequência da chamada do método print utilizamos o método setCursor para ajustarmos o cursos na posição no início da linha.

O método setCursor recebe dois parâmetros: o primeiro é o índice da coluna onde desejamos escrever o próximo caractere e o segundo parâmetro é o índice da linha do display onde o texto será escrito.

O último passo é alterarmos a variável que controla linha do display para na próxima execução da função loop o programa escrever na outra linha. Caso deseje limpar a próxima linha basta pressionar o botão Send do monitor serial para enviar um texto em branco.

Código da função loop
Código da função loop

Compile e transfira o programa para o Arduino. Após o programa iniciado acesse o monitor serial, digite algum texto e pressione o botão Send. O texto deverá aparecer no LCD, mas caso nada apareça mexa na haste do potenciômetro para alterar o brilho do texto.

Projeto em funcionamento
Projeto em funcionamento

Onde encontrar alguns dos componentes:

Obrigado pela atenção e até o próximo post!

Medindo a temperatura com o Arduino

Olá a todos,

nesse post veremos como podemos usar sensores de temperatura para medir a temperatura do ambiente ou do local ou objeto que o sensor esteja. Utilizaremos o sensor de temperatura LM35 que é um termistor, ou seja, um resistor que possuí resistência variável com a temperatura. Um ponto interessante desse componente é que a sua resistência varia de modo linear com a variação da temperatura em graus Celsius (°C).

Passaremos para a montagem do circuito: Coloque o LM35 na protoboard e em seguida conecte seu terminal da esquerda (deixe a parte plana para frente) ao pino 5V e o terminal da direita ao pino terra do Arduino. Para encerrar a montagem do circuito conecte o pino central do LM35 a um pino analógico.

Circuito utilizado no post
Circuito utilizado no post

Abaixo temos o esquema elétrico e o desenho elaborado no simulador:

Diagrama elétrico do circuito
Diagrama elétrico do circuito
Modelo do circuito utilizado no post
Modelo do circuito utilizado no post

Com o circuito montado desenvolveremos o programa. Primeiro precisamos declarar uma constante que indicará em qual pino analógico do Arduino o LM35 está conectado. Em seguida faremos a configuração da porta serial na função setup e utilizaremos a função analogReference para alterar o valor de referencia dos pinos analógicos de 5V para 1,1V. Essa alteração do valor de referência permite maior sensibilidade na porta analógica de modo que poderemos medir temperatura de 0°C à 110°C. Porém poderemos danificar o Arduino se tivemos níveis de tensão superiores a 1,1V em algum dos pinos analógicos quando utilizamos essa função.

Início do código
Início do código

O próximo passo é escrevermos a função loop para ler o valor do LM35 e escrever esse valor na portal serial. Primeiro faça a leitura da porta analógica onde está conectado o LM35. Esse valor deverá ser convertido para graus Celsius pela constante 0,1075268817204301. Em seguida envie o valor convertido pela porta serial com o método println e faça o Arduino aguardar 500 milisegundos com a função delay.

Código da função loop
Código da função loop

Compile o código e transfira o programa para o Arduino. Acesse o monitor serial e veja a temperatura ser enviada para o computador. Faça variar a temperatura do LM35, como colocando seus dedos nele, para ver a temperatura variar.

Testando o projeto do post
Testando o projeto do post

Onde encontrar alguns dos componentes:

Obrigado pela atenção e até o próximo post!

Medindo a intensidade de luz

Olá a todos,

nesse post demonstraremos como podemos medir a intensidade de luz com o LDR que é um componente elétrico simples. Dessa forma poderemos disparar ações em nossos projetos a partir da variação de luz do ambiente ou de onde o sensor esteja localizado.

Primeiro monte o circuito colocando o LDR na protoboard e em seguida conecte um de seus terminais no pino 5V do Arduino. Conecte o outro terminal do LDR em um terminal de um resistor e em um pino analógico do Arduino. Finalmente conecte o outro terminal do resistor ao terra (GND). A imagem abaixo mostra o circuito montado:

Circuito utilizado no post
Circuito utilizado no post

Abaixo temos o esquema elétrico e o desenho elaborado no simulador:

Diagrama com o LDR
Diagrama com o LDR
Modelo do circuito utilizado no post
Modelo do circuito utilizado no post

Passaremos para o desenvolvimento do código desse post. Primeiro declare a variável que indica qual pino do Arduino está conectado ao LDR e em seguida configure a porta serial:

Início do código
Início do código

Na função loop faça a leitura do pino analógico em que o LDR está conectado e envie esse valor para a porta serial:

Código para leitura do LDR
Código para leitura do LDR

Compile e transfira o programa para o Arduino. Em seguida acesse o monitor serial e veja o valor da medida do LDR. Varie a luz do ambiente abrindo as cortinas da janela ou ligando/desligando a luz do local e veja o valor variar.

Onde encontrar alguns dos componentes:

Obrigado pela atenção e até o próximo post!

Utilizando o buzzer para emitir sons

Olá a todos,

nesse post demonstraremos como podemos emitir sons de diversas frequências utilizando o buzzer. Podemos utilizar sons em nossos projetos para indicar que algo está errado e deve ser verificado, que alguma ação teve inicio ou foi encerrada e o que mais nova imaginação criar.

Esse componente envia um sinal sonoro quando circula corrente por ele. Portanto podemos variar a frequência do som do buzzer variando o tempo que o pino fica no estado HIGH e no estado LOW.

Retire a etiqueta do buzzer, confira a polaridade dos terminais (terminal positivo e negativo) e coloque-o na protoboard. Em seguida coloque um resistor no terminal negativo e ligue esse resistor ao terra da placa e conecte o terminal positivo do buzzer a um pino digital do Arduino. A figura abaixo mostra o circuito montado:

Circuito utilizado no post
Circuito utilizado no post

Abaixo temos o esquema elétrico e o desenho elaborado no simulador:

Diagrama do circuito
Diagrama do circuito
Modelo do circuito do post
Modelo do circuito do post

Passaremos agora para o código do bloco. Declare uma constante para indicar em qual pino o buzzer está conectado e uma variável com escopo global para armazenar o valor da frequência emitida pelo buzzer. Em seguida configure o pino como um pino de saída na função setup e deixe esse pino com estado LOW como mostrado abaixo:

Código inicial
Código inicial

Na função loop escreva o código para alterar o valor do pino para HIGH e aguardar o tempo da frequência do som. Em seguida altere o valor do pino para LOW e aguarde novamente o tempo:

Código para emitir o som
Código para emitir o som

Com o código pronto compile e transfira o programa clicando no botão com a seta para a direita e escute o buzzer emitir o som. Altere o valor da variável frequencia e carregue o programa novamente e perceba que a frequência do som variou. Você pode alterar o programa para a frequência do som variar a cada execução da função loop.

Onde encontrar alguns dos componentes:

Obrigado pela atenção e até o próximo post!

 

Executando diferentes códigos no Arduino em cada execução da função loop

Olá a todos,

nesse post mostraremos como executar diferentes códigos na função loop a partir de um controle e também como separar partes do nosso código em funções. Esse exemplo acenderá um led diferente a cada execução da função loop com tempo de duração também diferente.

Como sempre o primeiro passo é montarmos nosso circuito. Monte três circuitos como mostrado no post Utilizando pinos digitais do Arduino para enviar sinais, ligando cada circuito em um pino digital do Arduino. Note na figura abaixo que ligamos todos os terras dos circuitos em uma linha de furos da protoboard e essa linha em um pino terra do Arduino. Essa técnica facilita a montagem do circuito e evita que precisemos de mais de um ou dois pinos de terra (GND) na nossa placa.

Circuito do projeto montado.
Circuito do projeto montado.

Abaixo temos o esquema elétrico e o desenho elaborado no simulador:

Esquema elétrico do circuito utilizado
Esquema elétrico do circuito utilizado
Modelo do circuito utilizado no post
Modelo do circuito utilizado no post

Passaremos agora para o desenvolvimento do programa. Primeiro declare três constantes para indicar em quais pinos os led estão ligados. Em seguida configure todos os pinos como OUTPUT e deixe-os com estado LOW.

Configuração inicial dos pinos do Arduino
Configuração inicial dos pinos do Arduino

O próximo passo é escrevermos as funções que controlarão os leds, onde cada uma controlará um led diferente. Uma função é declarada indicando o tipo de valor que ela retorna seguida de seu nome e uma lista de parâmetros que ela recebe. Nossas funções retornarão para a função loop o tempo que desejamos que o programa aguarde até a próxima execução e não receberá parâmetros. A imagem abaixo mostra a declaração das funções:

Declaração das funções
Declaração das funções

Escreva o código de cada função:

  • Primeiro o led verde deve ficar acesso por 1,5 segundo;
  • Na sequência esse led deve ser desligado e acionado o led amarelo por 0,5 segundo;
  • Finalmente o led amarelo deve ser desligado e o led vermelho ligado por 1 segundo.

O código das funções está exibido abaixo:

Código das funções
Código das funções

Agora precisamos declarar uma variável com escopo global para controlar o estado do nosso programa e para a função loop saber qual função deverá ser chamada. Podemos utilizar uma variável do tipo inteiro como mostrado abaixo:

Declaração de variável global
Declaração de variável global

Agora deveremos escrever o código da função loop. Essa função deverá verificar qual o valor da variável global para decidir qual função será chamada. A função correta então deverá ser executada e em seguida aguardar o tempo informado. Encerramos o código alterando o valor da variável global para a função loop chamar a próxima função na execução seguinte.

Note que nesse código utilizamos uma combinação dos operadores IF e ELSE para testar diversas condições em sequência. Todo código da função loop está mostrado abaixo:

Função loop
Função loop

Com o circuito montado e o código desenvolvido compile o programa e transfira-o para o Arduino e veja a execução do programa.

Onde encontrar alguns dos componentes:

Obrigado pela atenção e até o próximo post!

Utilizando a função PWM dos pinos digitais do Arduino

Olá a todos,

nesse post demonstraremos como utilizar a funcionalidade de PWM presente em algum dos pinos digitais do Arduino. Note que não existe na linguagem de programação do Arduino uma função para escrevermos valores nos pinos analógicos. Conseguimos um efeito semelhante  através de uma técnica chamada PWM (pulse modulation width – modulação de comprimento de pulso).

Essa técnica consiste em criar pulsos em um pino digital que durem um determinado período de tempo. Em diversos circuitos a proporção de tempo em que o pino digital possui o estado LOW ou HIGH funciona como um sinal analógico. Utilizamos essa técnica para controlar a velocidade de motores ou a posição de um servo motor, por exemplo.

Ao contrário dos pinos analógicos, os pinos digitais de PWM possuem resolução de 256 níveis. Portanto o valor 0 significa que o pino ficará sempre em LOW, como um pino desligado. A medida que aumentamos o valor que passamos para a função aumentamos a quantidade de tempo que o pino ficará em HIGH, resultando no efeito de maior tensão no circuito e maior intensidade de luz do LED.

Para demonstrar o uso da técnica de PWM vamos variar a intensidade da luz de um led, mas dessa vez utilizaremos o led de alto brilho. Monte o circuito semelhante ao post Utilizando pinos digitais do Arduino para enviar sinais, porém tome cuidado para conectar o led em um pino digital que possua uma barra ao lado do seu nome. Essa barra indica que o pino possui a função PWM.

Circuito com led de alto brilho.
Circuito com led de alto brilho.

Abaixo temos o esquema elétrico e o desenho elaborado no simulador:

Esquema elétrico do projeto
Esquema elétrico do projeto
Modelo do circuito do projeto
Modelo do circuito do projeto

O primeiro passo no desenvolvimento do programa é a declaração da constante que indica em qual pino o resistor está ligado. Em seguida configure o pino para que ele envie sinais, utilizando a função pinMode.

Código inicial
Código inicial

O último passo é escrever a função loop para variar a intensidade de luz do led através da quantidade de tempo que o pino fica no estado HIGH. Controlamos essa quantidade de tempo pela função analogWrite que recebe como parâmetros o número do pino e o valor proporcional ao tempo que a pino ficará em HIGH.

Código função loop
Código função loop

Para variar o valor que passamos para a função digitalWrite utilizamos um laço do tipo for. Essa instrução incrementa ou decrementa o valor de uma variável automaticamente e executa um código passando esse valor até que um valor limite seja atingido. Nesse ponto é encerrada a execução desse trecho de código. Note que utilizamos duas vezes essa instrução: uma para acender o led e outra para apagá-lo.

Ligue o a placa na energia e em seguida no computador com o cabo USB. Execute o programa e veja a intensidade do led variar.

Onde encontrar alguns dos componentes:

Obrigado pela atenção e até o próximo post!

Utilizando os pinos digitais do Arduino para ler sinais

Olá a todos,

nesse post descreveremos como realizar a leitura de sinais nos pinos digitais do Arduino. Como os pinos são digitais conseguiremos apenas ler sinais do tipo ligado/desligado. Sinais do tipo analógico devem ser lidos pelos pinos analógicos  do Arduino que veremos em outro post.

No exemplo desse post faremos o Arduino ler o valor de um botão identificando quando o mesmo está ou não pressionado. Porém esse código pode ser utilizado para fazer a leitura de outros componentes do circuito ou sensores dos nossos projetos.

O primeiro passo é a montagem do circuito: Coloque um botão na protoboard e ligue um de seus terminais ao pino 5V do Arduino conforme indicado pela imagem. Em seguida conecte outro terminal do botão a um resistor e esse resistor ao terra da placa. Finalmente conecte o outro terminal do botão ao pino digital que utilizaremos para ler o valor do botão.

Eventualmente você precisará trocar algum dos terminais para acertar qual terminal do botão deve estar conectado a cada componente.

Circuito para demonstrar a leitura do botão pelo Arduino
Circuito para demonstrar a leitura do botão pelo Arduino

As imagens abaixo descrevem o circuito através de um diagrama elétrico e um modelo de feito em simulador 123d.circuit.oi:

Diagrama elétrico do circuito
Diagrama elétrico do circuito
Modelo do circuito para letra do botão
Modelo do circuito para letra do botão

O próximo passo é escrevermos o programa que fará a leitura do estado do botão, para isso crie um novo arquivo no IDE. Começamos nosso programa indicando em qual pino o nosso botão está ligado através de uma constante:

Indicando o pino que o botão está ligado
Indicando o pino que o botão está ligado

Em seguida configure o pino para leitura utilizando a constante INPUT. Utilizaremos a comunicação serial através do cabo USB para mostrar o estado do botão, dessa forma saberemos que o circuito está funcionando e a placa lendo corretamente o botão.

Portanto precisamos configurar a porta serial com o uso do método begin objeto Serial. Esse método recebe o valor da velocidade de envio de dados em bits por segundos. Utilize a velocidade de 9600.

Configurando o pino de leitura e a porta serial
Configurando o pino de leitura e a porta serial

Agora deveremos escrever a função loop. O primeiro passo é a leitura do estado do pino com a função digitalRead. Quando o botão é pressionado o circuito entre o pino e o 5V da placa é fechado, circulando corrente. Nessa situação o pino estará com o estado HIGH. Quando o botão é solto o circuito é interrompido e o pino volta para o estado LOW.

Em seguida enviamos o estado do pino para o nosso computador através da comunicação serial. Para isso utilize o método println do objeto Serial. Utilizamos o controle de fluxo IF/ELSE para verificar em qual estado o pino está e enviar o texto correto. O controle IF faz uma comparação entre dois valores e executa o código entre chaves quando essa comparação é verdadeira. Já a cláusula ELSE tem seu código executado quando a comparação do operador IF é falsa.

Terminamos o programa adicionando uma chamada à função delay para podemos ver o resultado no computador.

Código da função Loop
Código da função Loop

Ligue a placa ao computador com o cabo USB e execute o programa. Em seguida abra o monitor serial para ver o resultado da execução. Pressione e solte algumas vezes o botão para ver o programa funcionando.

Testando o projeto
Testando o projeto

Onde encontrar alguns doscomponentes:

Obrigado pela atenção e até o próximo post!