02 - A Plataforma Arduino
02 - A Plataforma Arduino
O projeto Arduino começou no ano de 2005 com o objetivo de criar um dispositivo para
estudantes que oferecesse controle integrado de projetos de design e interação, e que fosse
mais econômico que os sistemas de criação de protótipos disponíveis até o momento. O que
chamamos hoje de Arduino (o microcontrolador) nasceu na cidade italiana de Ivrea. Nesta
mesma cidade nos séculos X e XI houve um outro Arduino (um nobre) que se auto proclamou
rei de toda a Itália, obviamente a coisa não funcionou e, como era comum na época, ele foi
morto pelos rivais. O fato é que em sua cidade natal ele ainda é muito lembrado, a avenida
principal da cidade se chama “Via Arduino” bem como muitos comércios locais. Enquanto viviam
lá, os integrantes do time que criou o Arduino (o microcontrolador), depois do expediente iam
tomar uma cerveja. Onde? No Bar Arduino. Assim o nome do Arduino (o microcontrolador) é
uma homenagem ao Arduino (o bar) que por sua vez era uma homenagem ao outro Arduino (o
nobre). O projeto Arduino foi desenvolvido por Massimo Banzi, David Cuartielles, Tom Igoe,
Gianluca Martino e David Mellis. Está baseado em uma plataforma de código aberta chamada
Wiring, criada pelo artista colombiano Hernando Barragán durante uma tese de um master no
Interaction Design Institute Ivrea. Por outro lado, Wiring está baseado em Processing e seu
entorno de desenvolvimento integrado foi criado por Casey Reas e Ben Fry.
“Não acredito que o Arduino existiria sem Wiring, e não acredito que Wiring
existiria sem Processing. E que Processing sem dúvida não existiria sem
Design by Numbers e John Maeda”.
2 - Botão de reset
11 - Regulador de voltagem
14 - Entradas analógicas
Com o passar dos anos a linha Arduino vem crescendo mais e mais e trazendo soluções
para os mais diversos projetos. Conheça um pouco mais desta família:
Foram também desenvolvidas placas de expansões para as funções do Arduino,
chamadas de Shields. Alguns exemplos:
Espaço de trabalho:
Softwares escritos usando Arduino são chamados de Sketches. Estes Sketches são
escritos no editor de texto da IDE do Arduino e são salvos com a extensão de arquivo .ino. Este
editor tem características de cortar/colar e para buscar/substituir texto. A área de mensagem
dá feedback ao salvar e exportar arquivos e também exibe informações de erros ao compilar
Sketches. O canto direito inferior da janela exibe a placa atual e a porta serial. Os botões da
barra de ferramentas permitem que você verifique, carregue, crie, abra e salve Sketches ou abra
o monitor serial.
Nota: Nas versões do IDE antes de 1.0 os Sketches são salvos com a extensão .pde. É
possível abrir esses arquivos com a versão 1.0, mas você será solicitado a salvar o Sketch com a
extensão .ino.
A função Monitor Serial no IDE exibe dados seriais sendo enviados da placa Arduino para
o computador. Para enviar dados para a placa, digite o texto e clique no botão "enviar" ou
pressione enter. A comunicação entre a placa Arduino e seu computador pode acontecer em
várias velocidades padrão pré-definidas. Para que isso ocorra é importante que seja definida a
mesma velocidade tanto na Sketch quanto no Monitor Serial. Na Sketch esta escolha é feita
através da função Serial.begin. E no Monitor Serial através do menu drop down do canto inferior
direito. Note que no Mac ou Linux a placa Arduino irá resetar (executar novamente o seu Sketch
desde o início), quando você abrir o monitor serial.
A comunicação serial com a placa Arduino também pode ser feita através de outras
linguagens de programação como Processing, Flash, Python, MaxMSP e muitas outras.
O ambiente Arduino pode ser estendido através da utilização de bibliotecas, assim como
a maioria das plataformas de programação. Bibliotecas fornecem funcionalidades extras para
uso em sketches. Por exemplo, para trabalhar com hardware ou manipulação de dados. Algumas
bibliotecas já vêm instaladas com a IDE Arduino, mas você também pode fazer download ou
criar a sua própria.
Para usar uma biblioteca em um sketch, selecione em sua IDE Arduino: Sketch> Importar
Biblioteca.
• Estruturas
• Variáveis
• Operadores booleanos, de comparação e aritméticos
• Estrutura de controle
• Funções digitais e analógicas
Para mais detalhes visite a Referência da linguagem de programação Arduino, em
português. Veja a referência extendida para características mais avançadas da linguagem
Arduino e a página das bibliotecas para interação com tipos específicos de hardware, no site
oficial do Arduino.
Estruturas: São duas funções principais que deve ter todo programa em Arduino. A
função setup() é chamada quando um programa começa a rodar. Use esta função para inicializar
as suas variáveis, os modos dos pinos, declarar o uso de livrarias, etc. Esta função será executada
apenas uma vez após a placa Arduino ser ligada ou ressetada. setup(){ }
Após criar uma função setup() que declara os valores iniciais, a função loop() faz
exatamente o que seu nome sugere, entra em looping (executa sempre o mesmo bloco de
código), permitindo ao seu programa fazer mudanças e responder. Use esta função para
controlar ativamente a placa Arduino. loop(){ }
Variáveis: São expressões que você pode usar em programas para armazenar valores
como a leitura de um sensor em um pino analógico.
• && (“e” lógico) Verdadeiro apenas se os dois operandos forem verdadeiros, ou seja,
a primeira condição e a segunda forem verdadeiras. Exemplo: if (digitalRead(2) == 1
&& digitalRead(3) == 1) { // ler dois interruptores // ... } é verdadeiro apenas se os
dois interruptores estiverem fechados.
• || (“ou” lógico) Verdadeiro se algum dos operandos for verdadeiro, ou seja, se a
primeira ou a segunda condição for verdadeira. Exemplo: if (x > 0 || y > 0) { // ... } é
verdadeiro apenas se x ou y forem maiores que 0.
• ! (negação) Verdadeiro apenas se o operando for falso. Exemplo: if (!x) { // ... } é
verdadeiro apenas se x for falso (ou seja, se x for igual a 0).
A sentença que está sendo verificada necessita o uso de pelo menos um dos operadores
de comparação:
x == y (x é igual a y)
x! = y (x é não igual a y)
= (igualdade)
+ (adição)
- (subtração)
* (multiplicação)
/ (divisão)
% (resto da divisão)
• Switch/case: Do mesmo modo que as sentenças if, as switch/case controlam o fluxo dos
programas. Switch/case permite ao programador construir uma lista de “casos” dentro
de um bloco delimitado por chaves. O programa checa cada caso com a variável de teste
e executa o código se encontrar um valor idêntico.
switch (var)
// default é opcional
}
• While: While fará com que o bloco de código entre chaves se repita contínua e
indefinidamente até que a expressão entre parêntesis () se torne falsa. Algo tem que
provocar uma mudança no valor da variável que está sendo verificada ou o código vai
sempre ficar dando voltas dentro do while. Isto poderia ser o incremento de uma
variável ou uma condição externa, como o teste de um sensor.
var = 0;
• For: A sentença for é utilizada para repetir um bloco de código delimitado por chaves.
Um contador com incremento normalmente é usado para controlar e finalizar o loop. A
sentença for é útil para qualquer operação repetitiva, e é frequentemente usada com
arrays para operar em conjuntos de dados ou de pinos.
void setup()
void loop()
analogWrite(PWMpin, i);
delay(10);
• pinMode() Configura o pino especificado para que se comporte ou como uma entrada (
input ) ou uma saída ( output ).
Sintaxe: pinMode(pin, mode)
• analogWrite() Escreve um valor analógico (onda PWM) em um pino. Pode ser usado
para acender um LED variando o brilho ou girar um motor a velocidade variável.
Sintaxe: analogWrite(pin, valor)