Você está na página 1de 8

PROGRAMAÇÃO DE MICROCONTROLADORES

O Arduino é uma plataforma de prototipagem eletrônica open-source (Código-aberto) que se


baseia em hardware e software flexíveis e fáceis de usar. É destinado a artistas, designers,
hobbistas e qualquer pessoa interessada em criar objetos ou ambientes interativos.
O Arduino pode sentir o estado do ambiente que o cerca por meio da recepção de sinais de
sensores e pode interagir com os seus arredores, controlando luzes, motores e outros
atuadores.

Arduíno é projetado com um microcontrolador Atmel AVR com suporte de entrada/saída


embutido, uma linguagem de programação padrão, que é essencialmente C/C++. O objetivo do
projeto é criar ferramentas que são acessíveis, com baixo custo, flexíveis e fáceis de se usar por
principiantes e profissionais. Principalmente para aqueles que não teriam alcance aos
controladores mais sofisticados e ferramentas mais complicadas. Pode ser usado para o
desenvolvimento de objetos interativos independentes, ou ainda para ser conectado a um
computador hospedeiro. Uma típica placa Arduino é composta por um controlador, algumas
linhas de E/S digital e analógica, além de uma interface serial ou USB, para interligar-se ao
hospedeiro, que é usado para programá-la e interagi-la em tempo real. A placa em si não possui
qualquer recurso de rede, porém é comum combinar um ou mais Arduinos deste modo, usando
modulos e Shields apropriados.

O Arduino Uno é uma placa de microcontrolador baseado no ATmega328. Tem 14 pinos digitais
de entrada / saída (dos quais 6 podem ser usados como saídas PWM), 6 entradas analógicas, um
de 16 MHz ressonador cerâmico, uma conexão USB, um conector de alimentação, um cabeçalho
ICSP, e um botão de reset. Ele contém tudo o necessário para suportar o microcontrolador; basta
conectá-lo a um computador com um cabo USB ou ligá-lo com um adaptador AC para DC ou
bateria para começar.

O componente principal da placa Arduino UNO é o microcontrolador ATMEL ATMEGA328, um


dispositivo de 8 bits da família AVR com arquitetura RISC avançada e com encapsulamento
DIP28. Ele conta com 32 KB de Flash (mas 512 Bytes são utilizados pro bootloader), 2 KB de RAM
e 1 KB de EEPROM. Pode operar a até 20 MHz, porém na placa Arduino UNO opera em 16 MHz,
valor do cristal externo que está conectado aos pinos 9 e 10 do microcontrolador. Observe que,
para o projeto dessa placa, os projetistas escolheram um cristal com dimensões bem reduzidas.

A plataforma é formada por dois componentes principais: Hardware e Software.


O hardware é composto por uma placa de prototipagem na qual são construídos os projetos.
O software é uma IDE, que é executado em um computador onde é feita a programação,
conhecida como sketch, na qual será feita upload para a placa de prototipagem Arduino, através
de uma comunicação serial. O sketch feito pelo projetista dirá à placa o que deve ser executado
durante o seu funcionamento.
Hardware
Existem diversas
placas oficiais de
Arduino e muitas
outras não oficiais.
Vamos abordar
a placa Arduino
Uno . veja:

Conforme visto na imagem a placa Arduino UNO


possui diversos conectores que servem para
interface com o mundo externo. Vejamos como
estão organizados os pinos na placa:

 14 pinos de entra e saída digital


(pinos 0-13): Esses pinos podem ser
utilizados como entradas ou saídas digitais de acordo com a necessidade do projeto
e conforme foi definido no sketch criado na IDE.
 6 pinos de entradas analógicas (pinos A0 - A5): Esses pinos são dedicados a receber
valores analógicos, por exemplo, a tensão de um sensor. O valor a ser lido deve estar
na faixa de 0 a 5 V onde serão convertidos para valores entre 0 e 1023.
 6 pinos de saídas analógicas (pinos 3, 5, 6, 9, 10 e 11): São pinos digitais que podem
ser programados para ser utilizados como saídas analógicas, utilizando modulação
PWM.

A alimentação da placa pode ser feita a partir da porta USB do computador ou através de um
adaptador AC. Para o adaptador AC recomenda-se uma tensão de 9 a 12 volts.

Portas Digitais
O Arduino Uno oferece 14 portas digitais que podem ser utilizadas tanto para entrada (input)
como para saída (output) e que podem ser utilizadas para comandar 14 dispositivos externos.
Estas portas vão de 0 a 13, observe com
atenção a figura ao lado.

Portas PWM
Estas portas simulam uma porta analógica
e são em número de seis, note que elas
além do número da porta tem também um
pequena onda senoidal como mostrado na
figura ao lado.
As porta digitais que também podem ser usadas como portas PWM são as de número: 11, 10,
9, 6, 5 e 3. Mas tenha em mente que elas também são portas digitais.
Portas RX e TX
Essas duas portas embora possam ser
utilizadas como Portas digitais também são
utilizadas pelo Arduino para comunicação
serial tanto para entrada como para saída
de dados. É conveniente evitar uso destas
portas como portas digitais, mas não
proibido.

Reset
Este botão, mostrado na figura abaixo, tem como única função
reinicializar o Arduino Uno, mas, note que ele muda um pouco
seu posicionamento em outras placas.

Microcontrolador
É onde tudo acontece, é o cérebro desta placa, é ai
que fica gravado o código desenvolvido e que será
executado, mas note que quando se grava um código
o anterior é descartado, sempre fica apenas o último
código gravado.
Este processador permite que o Arduino funcione de
forma autônoma, ou seja, uma vez transferido o
código para ele não existe mais a necessidade de uma
conexão com o computador.

Portas Analógicas
Essas portas são unicamente para entrada de
dados e comumente usadas para
comunicação com sensores que podem ser
utilizados para determinar: Temperatura,
Quantidade de luz, Humidade, dentre outras
ações.
As portas analógicas são em número de 6 e
vão de A0 até A5.

Pinos de Energia
Estes pinos fornecem energia para dispositivos
externos como mostrado na figura ao lado e
explicados abaixo: Observe com atenção a
figura abaixo, ela mostra estes pinos.

 3,3V: este pino fornece a 3.3 volts a


dispositivos externos e está marcado na placa;
 5V: fornece 5 volts a dispositivos externos e também está indicado na placa.
 GND: fornece potencial de terra a dispositivos externos, o seja 0 volt e são em número de
dois e como pode observar também se encontram bem identificado na placa.
 Vin: este pino fornece ao dispositivo externo a mesma tensão que esta sendo recebida
pelo Pino de alimentação externa. Note que é o ultimo pino mostrado na figura ao lado.
Deve ser observado que estes pinos fornecem uma corrente muito baixa, portando devem ser
usados para pequenas cargas e nunca para ligar um motor, por pequeno que ele possa ser
dentre outros dispositivos de alto consumo. De maneira geral aguentam alimentar apenas um
LED, a base de um transistor ou coisa do gênero.

Porta USB
Esta é a porta usada para estabelecer uma conexão
entre a placa de Arduino e o PC. É ela que permite o
envio de códigos para o processador, permite
conexão com a serial e também é usada para a
alimentação da placa. Observe com atenção foto ao
lado.

Pino para Alimentação externa


Este é o pino para a alimentação externa da placa, ou
seja, quando não estiver sendo usado a porta USB
para conexão com o computador, e é usando-o que
vamos alimentar a placa. Ele é que permite a
autonomia desta placa. Podemos alimentar esta
placa com tensão entre 6 e 12 volts sem problemas.

Resumo:
Software

O software para programação do Arduino é uma IDE que permite a criação de sketches para as
placas. A linguagem de programação é modelada a partir da linguagem Wiring . Quando
pressionado o botão upload da IDE, o código escrito é traduzido para a linguagem C e é
transmitido para o compilador avr-gcc, que realiza a tradução dos comandos para uma
linguagem que pode ser compreendida pelo microcontrolador.

A IDE apresenta um alto grau de abstração, possibilitando o uso de um microcontrolador sem


que o usuário conheça o mesmo, nem como deve ser usado os registradores internos de
trabalho.
A IDE possui uma linguagem própria baseada na linguagem C e C++.
O Ciclo de programação do Arduino pode ser dividido da seguinte maneira:

1. Conexão da placa a uma porta USB do computador;


2. Desenvolvimento de um sketch com comandos para a placa;
3. Upload do sketch para a placa, utilizando a comunicação USB.
4. Aguardar a reinicialização, após ocorrerá à execução do sketch criado.
A partir do momento que foi feito o upload o Arduino não precisa mais do computador: o
Arduino executará o sketch criado, desde que seja ligado a uma fonte de energia.

Com base nas referências oficiais do Fabricante do Arduino, a linguagem de programação


do Arduino pode ser dividida em três partes principais: estruturas, valores (variáveis e
constantes) e funções.

Veja a tabela a seguir:

Vamos analisar somente o básico da tabela:

setup()
No Arduino a função setup() é chamada no momento em que o programa começa. É usada para
inicializar variáveis, definir os modos de entrada ou saída dos pinos, indicar bibliotecas, etc. Essa
função é executada somente uma vez, quando o Arduino é iniciado ou quando é resetado.

loop()
No Arduino após a função setup(), que inicializa e declara os valores iniciais, a função loop() faz
precisamente o que seu nome indica: ela repete-se continuamente permitindo que seu
programa funcione dinamicamente. É utilizada para controlar de forma ativa a placa Arduino.

digitalRead()
[Entradas e Saídas Digitais]
Descrição
Lê o valor de um pino digital especificado, que pode ser HIGH ou LOW.
Sintaxe
digitalRead(pino)
Parâmetros
pino: o número do pino digital que você quiser verificar
Retorna
HIGH ou LOW

digitalWrite()
[Entradas e Saídas Digitais]
Descrição
Aciona um valor HIGH ou LOW em um pino digital.

Se o pino for configurado como saída (OUTPUT) com a função pinMode(), sua tensão
será acionada para o valor correspondente: 5V (ou 3.3V em placas alimentadas com 3.3V
como o DUE) para o valor HIGH, 0V (ou ground) para LOW.

Se o pino for configurado como entrada (INPUT), a função digitalWrite() irá ativar (HIGH)
ou desativar (LOW) o resistor interno de pull-up no pino de entrada. É recomendado
configurar pinMode() com INPUT_PULLUP para ativar o resistor interno de pull-up. Veja
o tutorial sobre pinos digitais para mais informações.

Se você não configurar o pino com pinMode() e OUTPUT, e conectar um LED ao pino,
quando chamar digitalWrite(HIGH), o LED pode aparecer um pouco apagado. Sem
configurar explicitamente pinMode(), digitalWrite() irá apenas ativar o resistor de pull-
up interno, que age como um grande resistor limitador de corrente.

Sintaxe
digitalWrite(pino, valor)
Parâmetros
pino: o número do pino
valor: HIGH ou LOW
Retorna
Nada

pinMode()
[Entradas e Saídas Digitais]
Descrição
Configura o pino especificado para funcionar como uma entrada ou saída.
Sintaxe
pinMode(pino, modo)
Parâmetros
pino: the número do pino o qual se quer escolher o modo
modo: o modo do pino. Este pode ser INPUT, OUTPUT ou INPUT_PULLUP; que
correspondem respectivamente a entrada, saída e entrada com pull-up ativado.
Retorna
Nada

analogRead()
[Entradas e Saídas Analógicas]
Descrição
Lê o valor de um pino analógico especificado. A placa Arduino possui um conversor
analógico-digital de 6 canais (8 canais nos Mini e Nano, 16 no Mega). Isso significa que
este irá mapear tensões entre 0 e 5 volts para valores inteiros entre 0 e 1023. Isso
permite uma resolução entre leituras de: 5 volts / 1024 unidades, ou .0049 volts (4.9
mV) por unidade. O intervalo de tensões de entrada pode ser mudado usando-se a
função analogReference().Ler um valor analógico leva em torno de 100 microssegundos
(0.0001 s), então a taxa de leitura máxima é aproximadamente 10,000 leituras por
segundo.
Sintaxe
analogRead(pino)
Parâmetros
pino: o número do pino de entrada analógica o qual se quer ler (0 a 5 na maioria das
placas, 0 a 7 nos Mini e Nano, 0 a 15 no Mega)
Retorna
int(0 a 1023)

analogReference()
[Entradas e Saídas Analógicas]
Descrição
Configura a tensão de referência para a entrada analógica (o valor máximo do intervalo
de entrada). As opções são:
Placas Arduino AVR (Uno, Mega, etc.)
 DEFAULT: a referência analógica padrão de 5 volts (em placas Arduino
de 5V) ou 3.3 volts (em placas Arduino de 3.3V)
INTERNAL: uma referência interna, igual a 1.1 volts no ATmega168 ou
ATmega328P e 2.56 volts no ATmega8 (Não disponível no Arduino Mega)
 INTERNAL1V1: uma referência interna de 1.1V (apenas Arduino Mega)
 INTERNAL2V56: uma referência interna de 2.56V (apenas Arduino Mega)
 EXTERNAL: a tensão aplicada ao pino AREF (0 a 5V apenas) é usada
como referência.
Sintaxe
analogReference(tipo)
Parâmetros
tipo: qual tipo de referência usar (DEFAULT, INTERNAL, INTERNAL1V1, INTERNAL2V56
ou EXTERNAL).
Retorna
Nada

analogWrite()
[Entradas e Saídas Analógicas]
Descrição
Aciona uma onda PWM (descrição (Em Ingês)) em um pino. Pode ser usada para variar o
brilho de um LED ou acionar um motor a diversas velocidades. Após a
função analogWrite() ser chamada, no pino haverá uma onda quadrada com o duty cycle
(ciclo de trabalho) especificado até a próxima chamada de analogWrite() (ou uma
chamada de digitalRead() ou digitalWrite() no mesmo pino). A frequência do sinal PWM
na maioria dos pinos é aproximadamente 490 Hz. No Uno e placas similares, pinos 5 e 6
usam uma frequência de aproximadamente 980 Hz.

Na maioria das placas Arduino (as placas com o ATmega168 ou ATmega328), essa função
funciona nos pinos 3, 5, 6, 9, 10, e 11. No Arduino Mega, essa funciona nos pinos 2 a 13
e 44 a 46. Placas mais antigas com o ATmega8 suportam analogWrite() apenas nos pinos
9, 10, and 11.
O Arduino DUE suporta analogWrite() nos pinos 2 a 13, mais pinos DAC0 e DAC1.
Diferente dos pinos PWM, DAC0 e DAC1 são conversores Digital-Analógicos, e saídas
analógicas legítimas.
Você não precisa chamar pinMode() para configurar um pino como saída antes de
chamar analogWrite().
A função analogWrite() nada tem a ver com os pinos analógicos ou a
função analogRead().

Sintaxe
analogWrite(pino, valor)
Parâmetros
pino: o pino escolhido. Tipos de dados permitidos: int.
valor: o duty cycle: entre 0 (sempre desligado) and 255 (sempre ligado). Tipos de dados
permitidos: int
Retorna
Nada

Você também pode gostar