Antes de seguir, convido você a conferir os posts anteriores para compreender melhor o que vamos dissertar a seguir. Se você gosta destas postagens, siga o tópico Arduino e receba notificações sobre cada nova aula.

Note que agora irá comandar a carga usando a serial do Arduino, o que possibilitará em uma aula próxima comandar esta carga de qualquer lugar do mundo usando o PHP.

Nesta aula irá dar o primeiro passo, na próxima o segundo passo que será instalar a servidor Apache e realizar as devidas configurações para que toda intranet possa acessar este servidor. Note que aqui ainda estamos na rede local, ou seja do roteador para dentro.

Em uma terceira etapa criará a página PHP que irá acessar a Serial do Arduino ligando e desligando a carga e configurar o Roteador para que este direcione o pedido de entrada a partir a rede mundial e assim dar acesso de qualquer parte do mundo ao ligar e desligar a carga em questão.

Circuito proposto

Este, é mostrado logo abaixo e dispensa maiores comentários, pois, é exatamente igual ao utilizado na Aula 4 e é mostrado nas imagens abaixo.

Note que o avanço aqui será no modo de comandar esta carga, ou seja, de ligar e desligar o LED, o circuito físico é o mesmo usado até agora.

A seguir você tem a mesma montagem mostrada acima de uma maneira mais limpa para um melhor entendimento.

Abaixo é mostrado o mesmo circuito de uma maneira mais técnica, note que é desta forma que encontrará informações sobre circuitos eletrônicos. Como em manuais por exemplo.

O Sketch

Com o circuito devidamente terminado vamos ao Sketch que começa na linha 1 e termina na linha 21.

Entendendo o código

Linhas 1 e 2: é onde declaramos as variáveis que serão necessárias para o funcionamento deste Scketch e dispensam maiores comentários.

Linha 4: está sendo definida a porta digital 12 como porta de saída e também já nossa conhecida.

Linha 5: está sendo iniciada a Serial do Arduino através da função Serial.begin() e também é passado como parâmetro a velocidade que esta serial deverá ser iniciada que é de 9600. Observe com atenção, pois aqui temos uma novidade

Linha 5: A função Serial.println() irá escrever na serial a frase que lhe é passada como parâmetro que se encontra entre parênteses. Observe que esta não é uma linha de código necessária, mas, irá mostrar que a serial foi iniciada.

Linha 9: Note que nesta linha se encontra a estrutura if e é passado para ela como parâmetro a função Serial.available() que por padrão contém o valor zero até que alguma coisa seja digitado e enviado para serial ai ela passa a ter outro valor diferente de zero e o código da estrutura que se encontra entre chaves é executado.

Linha 10: Nesta linha é atribuído a variável numero o valor alfanumérico que foi digitado e enviado à serial, ou seja o que serial contém naquele momento.

Linha 12 a 15: Aqui temos a estrutura If que terá seu código executado caso tenha sido digitado 1 na Serial, ou seja quando a variável número tiver em seu conteúdo o numeral "1". Note que ai o LED (a carga) que estiver ligado à porta 12 será ligado.

Obs.: a função delay() está na linha 14 para dar uma parada na execução do código evitando a realimentação, ou seja, caso não existisse ele seria tão rápido que poderia causar erros.

Linha 16 a 19: é onde se encontra estrutura if que terá seu bloco de códigos executado quando a serial receber o numeral zero, ou seja, quando o usuário digitar zero a carga será desligada.

A linhas deste sketch que não foram citadas acima já são velhas conhecidas e dispensam maiores comentários.

Carregando o Sketch

Chegou a hora de transferir (carregar) o sketch para a placa de Arduino. Para tal basta clicar no botão Carregar como indicado na figura abaixo.

Uma vez que o sketch foi transferido para a placa de Arduino abra a Serial Monitor do Arduino.

Com a serial iniciada digite "1" e clique em Enviar.

Note que o LED conectado à porta 12 passa a ficar aceso, ou seja a carga passa a ficar ligada.

Para desligar a carga basta digitar zero (0), deve ser observado que caso digite qualquer outra coisa na serial nada acontecerá, o seja, o LED irá manter o seu estado atual de ligado ou desligado.

Abaixo ficam explicadas as funções mais usadas quando estamos trabalhando com a Serial.

Begin()

Serial.begin() inicia a comunicação com os pinos seriais na velocidade informada. A unidade é bps (bits por segundo). Esta é a velocidade que a placa Arduino irá enviar os dados para o computador e os valores possíveis são: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, ou 115200. Porém, pode-se colocar outro valor caso o dispositivo com o qual você quer comunicar exija uma configuração diferente.

Exemplo:

Serial.begin( 9600 ); // inicia a comunicação a 9600bps.

end()

Serial.end() desativa a comunicação serial, permitindo que os pinos 0 e 1 possam ser usados para entrada e saída. Para reativar a comunicação serial use Serial.begin ().

available()

Serial.available() obtém o número de bytes disponíveis para leitura.

read()

Serial.read() lê o primeiro byte da entrada serial. Retorna -1 caso não haja dado.

print()

Serial.print( [,]) envia dados para o monitor serial e opcionalmente formatados como os seguintes parâmetros: BYTE, BIN (binário ou base 2), OCT (octal ou base 8), DEC (decimal ou base 10) e HEX (hexadecimal ou base 16). Este método também aceita alguns caracteres de controle para o auxilio da impressão. Caracteres de controle são códigos da tabela ASCII que por si só não imprimíveis.

Obs.: neste nosso contexto, impressão significa os dados exibidos no monitor serial.

Características importantes

Após a impressão, o cursor fica posicionado na próxima coluna.

Os caracteres de controle:

  • n (new line - nova linha);
  • r (carriage return - retorno do cursor para primeira coluna);

Avançam o cursor para a próxima linha.

Um caractere de controle muito útil para formatar a saída de dados é o

  • t (TAB - tabulação).

O avanço é de oito posições.

Números float são exibidos, por padrão, com apenas duas casas decimais.

Exemplos

  • int valor = 65;

  • Serial.print(valor); // imprime o valor da variável, ou seja 65

  • Serial.print("t");// avança oito posições
    Serial.print(valor, DEC); // o mesmo que o anterior

  • Serial.print("t");
    Serial.print(valor, HEX); //
    imprime o correspondente em hexadecimal de 65

  • Serial.print("t");
    Serial.print(valor, OCT); //
    imprime o correspondente em octal de 65

  • Serial.print("t");
    Serial.print(valor, BIN); //
    imprime o correspondente em binário de 65

  • Serial.print("t");
    Serial.printl(valor, BYTE); //
    imprime o caractere correspondente a 65, ou seja A

Na próxima aula será mostrado como instalar e configurar um servidor apache para que se possa colocar tanto em rede local como em rede mundial a possibilidade de ligar e desligar este led. Até lá!

[CURSO]124[/CURSO]