quinta-feira, 29 de novembro de 2018

Arduino - #9 Introdução à Programação (Pinos)

No seguimento do nosso tutorial vamos hoje falar um pouco mais das características físicas dos nossos Arduinos.
Iremos dar a conhecer de uma forma mais detalhada os pinos ou portas digitais e analógicas bem como os restantes do nosso Arduino bem como as suas funções e como programa-los.




Aqui é muito importante referir que iremos usar como referencia o Arduino Duemilanove/Uno uma vez que existem outros modelos onde o número de portas pode ser diferente mas no geral as funções destas são iguais.

Quando estamos a “programar” tanto um pino digital como um pino analógico temos ter em consideração que cada um deles só pode ser um pino de saída ou de entrada (Input ou Output) de acordo com o que for definido no código. Podemos pensar nos pinos como sendo constantes do nosso programa.

Estes podem ser declarados em dois locais do nosso programa, dentro da função Setup ou imediatamente acima da função Setup, ou seja, no início do nosso programa.


  int led = 5;
  int botao = 3;
  int sensor = A0;

  void setup() {

  }   


O mais aconselhável é que estes sejam definidos desta forma, tornado assim o nosso código mais organizado, ao declararmos todas as variáveis, constantes e pinos fora da função Setup, porque tal como fá foi referido em um publicação anterior a função Setup é apenas executada uma vez no início da execução do nosso código.
É muito importante atribuir nomes descritivos aos nossos pinos quando os declaramos para ser mais fácil entender o código e qual a função do pino ou a informação que este contem.
Como podem ver no exemplo anterior foi atribuído ao Led o pino 5, ao botão o pino digital 3 e ao sensor o pino A0.

Assim, podemos facilmente verificar que o nosso Arduino tem dois tipos de pinos principais que são os digitais e os analógicos.


Pinos Digitais

O Arduino disponibiliza 14 pinos digitais referenciados com o texto “DIGITAL”, estes estão numerados de 0 a 13 da direita para a esquerda e podem ser configurados pela função pinMode() para detetarem ou transmitirem níveis lógicos digitais (verdadeiro/falso, 1/0 ou HIGH/LOW).




Estes servem para ligar ou desligar qualquer componente digital que tenhamos ligado a esse pino.

Além desse tipo genérico dos Pinos digitais, alguns destes pinos no Arduino podem ter funções especiais, esses pinos são designados PWM (Pulse With Modulation).
Estes pinos têm como função obter resultados analógicos num formato digital. Como foi dito anteriormente um pino digital normal simplesmente serve para indicar se algum componente está no nível logico 1 ou a 0 e nada mais. No entanto os pinos digitais PWM, indicam-nos o período de tempo em que esse pino está ao nível lógico 1(5V) ou ao nível lógico 0(0V). Este tipo de sinal digital é nomeadamente usado em motores, para conseguirmos obter um melhor controlo e precisão. Mais à frente nesta serie de tutoriais iremos falar sobre como programar motores e aí vamos debater mais a fundo este tipo de sinal PWM. É também de chamar a atenção que nem todas as portas digitais são PWM, somente algumas do nosso Arduino. O numero de portas PWM depende do tipo de Arduino que estejamos a utilizar, por exemplo o Arduino Uno tem 14 portas digitais, em que das quais 6 delas são PWM. Podemos imediatamente identifica-las na nossa placa, pois contem o símbolo (~) junto ao numero da porta.


Pinos Analógicos

Existem 6 pinos analógicos nos nossos Arduinos e estes estão identificados pela expressão “ANALOG IN”, numerados de 0 a 5, da esquerda para a direita. Estes pinos são usados para leitura de sinais analógicos de sensores ligados ao Arduino, e podem ler qualquer valor entre 0 e 5 volts. Para estes não temos a necessidade de configurar os mesmos previamente com a função pinMode().



Os pinos analógicos são um pouco diferentes dos pinos digitais, uma vez que os digitais só nos mostram valores de 1 ou 0, os pinos analógicos mostram valores analógicos de um tamanho de 10 bits, ou seja, entre 0 a 1023. Este tipo de pinos são muito utilizados em sensores analógicos como o caso do sensor de temperatura, onde pretendemos ter leituras à décima.

Aqui é muito importante referir que os 6 pinos analógicos podem ser utilizados como pinos digitais passando a estar disponíveis 20 pinos digitais no nosso Arduino, sendo que para tal teremos de configurar os mesmo através da função pinMode().

Deste modo, a expressão pinMode(14,OUTPUT); permite configurar o pino analógico A0 num pino de saída digital como qualquer um dos outros nativos.


Pinos de Alimentação


O nosso Arduino disponibiliza mais pinos para além dos digitais e analógicos, estes são 6 pinos, identificados com a expressão “POWER”, o primeiro pino deste conjunto está identificado com a expressão “RESET”, sendo que este quando forçado ao potencial de terra serve para fazer reset ao nosso Arduino. Do outro lado, temos um pino identificado com a expressão “Vin” sendo que pode ser utilizado para alimentar o Arduino se nele for aplicada uma tensão entre 9 e 15 volts.


São ainda disponibilizados mais 4 pinos um que permite alimentar dispositivos externos a 3,3V outros a 5V e dois pinos de terra.


Em Suma

Agora que temos uma ideia mais apurada sobre os vários tipos de pinos, vamos proceder à configuração dos mesmos. Antes de enviarmos ou recebermos dados pelos pinos desejados, temos que definir o tipo de pino, se é de entrada ou saída, sendo esta configuração feita na função Setup.

  void setup() 
  { 
     pinMode(led,OUTPUT); 
     pinMode(sensor,INPUT);
     pinMode(botao,INPUT_PULLUP) 
   }

Como podemos observar no código acima, na função Setup, foram definidos os vários tipos de pinos que vamos utilizar. Em primeiro configuramos um pino Led, definido como Saída (Output), ou seja, este servirá para fazer atuar algo for do Arduino que neste caso é um LED  os dados vão sair do nosso Arduino pelo pino 6 que é o do Led e assim dar uma instrução a esse componente, que neste caso é ligar ou desligar o Led.


Considerações Finais
As interrupções são uma ferramenta essencial e de grande importância no desenvolvimento de projetos que ajudam a controlar a execução do código garantindo uma execução correta e garantindo a leitura de sinais externos e mesmo internos na hora certa..


Esperamos que este artigo tenha sido útil e se gostaram comentem e partilhem. Alguma dúvida ou questão deixem em comentário ou utilizem o formulário de contatos.


Um bom dia em nome da TecnoDomos.


Conteúdo redigido ao abrigo do novo Acordo Ortográfico

terça-feira, 30 de outubro de 2018

Medir a temperatura de um objeto com o sensor GY-906

Hoje é muito fácil encontrar dispositivos que permitem medir a temperatura sem contacto físico com o objeto do qual pretendemos saber a temperatura.



domingo, 30 de setembro de 2018

Arduino - #08 Introdução à Programação (Interrupts)

No último tutorial, vimos como funcionam os tempos de espera no nosso Arduino, abordamos as funções delay e micros, funções estas que nos permitem fazer “tempos de espera” na execução dos nos nossos códigos no Arduino. Hoje vamos falar de interrupções ou Interrupts.



sexta-feira, 31 de agosto de 2018

Arduino - #07 Introdução à Programação (Tempos de Espera)

No seguimento desta serie de tutoriais “Arduino - Introdução à Programação”, hoje iremos falar sobre funções que nos permitem definir tempos de espera nas nossas aplicações.

terça-feira, 31 de julho de 2018

Arduino - #06 Introdução à Programação (Bibliotecas)

Todo o que temos vindo a falar nas publicações anteriores é de grande importância pois são os conceitos mais básicos mas ao mesmo tempo os mais importantes para implementação da lógica de programação do Arduino.
  
No entanto nós queremos ir muito mais além de criar programa básicos para acender um LED pretendemos, criar tarefas mais complexas e recorrer a hardware, circuitos externos ligados ao nosso Arduino.

Para tal teremos de recorrer a um dos conceitos de maior importância na programação para Arduino que são as Bibliotecas.