Ir para conteúdo

Conhecendo o Arduino Uno - Aula 6 - Serial

Na aula passada você aprendeu a comandar uma carga usando um botão e uma porta digital como entrada que fazia a leitura deste botão, nesta irá a prender a comandar a mesma carga, ou seja, um LED, mas, usando a Serial do Arduino.

 

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.

 

330xNx001.jpg.pagespeed.ic.b7266c072a.jp

 

330xNx002.jpg.pagespeed.ic.37262fd858.jp

 

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.

330xNx003.jpg.pagespeed.ic.83ae15cc75.jp

 

O Sketch

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

 

330xNx004.jpg.pagespeed.ic.ed2628beaa.jp

 

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.

330xNx005.jpg.pagespeed.ic.3cb3370ff3.jp

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.

330xNx006.jpg.pagespeed.ic.f95f7b9e46.jp

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.

330xNx007.jpg.pagespeed.ic.0fe7395205.jp

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.

330xNx008.jpg.pagespeed.ic.f8d05b755f.jp

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.

330xNx009.jpg.pagespeed.ic.b7b44c6182.jp

 

330xNx010.jpg.pagespeed.ic.7aa058d25d.jp

 

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

 

330xNx011.jpg.pagespeed.ic.202bb2d0ce.jp

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

 

330xNx012.jpg.pagespeed.ic.d5d4cbc4f7.jp

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á!

  • Amei (+1) 1



×
×
  • Criar Novo...

Informação Importante

Termos de Uso Política de Privacidade Regras