No post anterior, a gente aprendeu o que é o Arduino e o que ele pode fazer. É chegada a hora de colocar a mão na massa. Nosso primeiro projeto tem duas etapas. Na etapa inicial vamos fazer um led piscar. Na etapa seguinte, iremos controlar manualmente a frequência das piscadas do led usando um potenciômetro.
Para executar todo o projeto você dos seguintes itens:
- Placa Arduino UNO
- Protoboard
- Um led de qualquer cor (evite led infravermelho, senão não conseguiremos enxergar)
- Um resistor (usei um de 330 Ohms)
- Alguns fios condutores
- Um potenciômetro (apenas para a 2a. parte)
Obs.: Para iniciar no mundo Arduino é recomendável algum conhecimento básico de circuitos elétricos e de programação, pois fica mais fácil entender a montagem do circuito. Mas se você não tiver experiência prévia, basta seguir este tutorial o mais fielmente possível que tem tudo para dar certo.
Passo 1: baixe e instale Arduino IDE
Já sabemos que o Arduino é um microprocessador que executa um único programa (chamado de firmware). Este firmware pode ser escrito em vários plataformas de desenvolvimento (Arduino IDE, Processing, Scratch) que vocês instala no seu computador. Não sei dizer se existem vantagens/desvantagens comparativas entre as plataformas. Eu utilizo o Arduino IDE, pois é mais comum, e a única que eu tenho experiência. Para baixar o Arduino IDE, clique aqui. Baixe a versão adequada para o seu sistema operacional (Windows, Mac OS, Linux). Eu uso Mac OS, mas este tutorial também serve para as outras plataformas.
Passo 2: Monte o circuito (1a. parte)
Monte o circuito de acordo com o diagrama abaixo. Tome muito cuidado para encaixar as extremidades de cada component no lugar indicado para que o circuito esteja fechado.

Passo 3: Conecte o Arduino ao computador
Aqui você vai conectar o seu Arduino ao computador usando o cabo USB que veio junto com o Arduino. Ao conectar o Arduíno o sistema operacional (SO) vai detectar um novo dispositivo em uma das portas seriais do computador.
Abra o Arduino IDE. Uma janela de projeto vazio vai abrir automaticamente. Os projetos são chamados de sketch pelo Arduino IDE. A linguagem de programação do Arduino é muito similar a C/C++.

Precisamos informar ao Arduino IDE qual o tipo de placa Arduino que vamos usar (ele não detecta o tipo de placa automaticamente), e em qual porta serial. O Arduino Uno é a placa usada neste projeto. Para configurar a placa, acesse o menu TOOLS/BOARD/ARDUINO AVR BOARDS/ e selecione Arduino Uno, conforme mostrado na Figura 3.

O Arduino IDE também precisa saber em qual porta serial a sua placa está conectada. Para isso, acesse o menu TOOLS/PORT/ e selecione a porta correta entre as opções listadas. No Windows, estas portas são nomeadas como COM1, COM2, COM3 e assim por diante. No linux/Mac estas portas possuem nomes estranhos que lebram o nome de um diretório. Por exemplo, no meu computador a porta serial na qual meu Arduino Uno está ligada chama-se /dev/cu.usbmodem141101. A esta altura, você já deve estar com o sistema todo pronto para começar a escrever o código.
Passo 4: Código
A Figura 2 (acima) mostra que a estrutura básica de qualquer sketch Arduino é formada por duas rotinas principais: setup() e loop(). A rotina setup() é executado apenas uma única vez logo após o Arduino ser ligado. Aqui é importante fazer a inicialização necessária dos componentes e sensores do seu projeto. Esta etapa assemelha-se àquele monte de programa que é executado assim que você liga seu computador.
Depois de executada a rotina setup(), o Arduino passa a executar a rotina loop() de forma contínua enquanto o Arduino estiver ligado. Aqui a gente codifica as instruções que queremos que o Arduino execute ininterruptamente.
Antes da rotina setup(), é necessário declarar algumas variáveis ou constantes globais que serão utilizadas no interior de cada rotina.
// Definição das entradas (pins)
const int LEDpin = 3; // define o pino digital 3 como saída do led
Aqui apenas uma constante chamada LEDpin recebe o valor 3 que é justamente a porta lógica do Arduino que iremos ligar e desligar para fazer o LED piscar. A rotina setup() tem a seguinte forma:
void setup() {
// coloque aqui o código de inicialização que será executada apenas uma vez.
pinMode(LEDpin, OUTPUT); // configuração do pino 3 como saída
}
Esta rotina apenas informa ao Arduino que a porta lógica 3 (representada pela constante LEDpin) vai funcionar no modo de saída (OUTPUT), ou seja, não vamos ler o conteúdo desta porta, mas sim escrever o conteúdo dela. Como trata-se de um porta lógica, podemos escrever nela apenas os valores ligada ou desligada.
Finalmente chegamos na rotina loop():
void loop() {
// coloque aqui o código que vai ser executado repetidamente.
digitalWrite(LEDpin,HIGH); // liga o pino 3
delay(500); // espera 500 mili-segundos
digitalWrite(LEDpin,LOW); // desliga o pino 3
delay(500); // espera 500 mili-segundos
}
Esta rotina será executada continuamente. Em cada chamada, a rotina executa 4 passos. Primeiro escrevemos na porta LEDpin o estado ligado. Isto vai ligar o LED. Daí, solicitamos ao Arduino para esperar 500 ms antes de passar para o próximo comando. Durante este tempo, o LED ficará ligado. Depois desligamos a porta LEDpin, que apaga o LED, e mais uma vez avisamos para o Arduino esperar 500 ms. Durante esta segunda pausa, o LED fica desligado. Como não há mais nenhum comando, a rotina loop() é finalizada, para então ser chamada novamente, executando todo o ciclo liga o LED, espera 500 ms, desliga o LED, espera mais 500 ms. O ciclo será repetido indeefinidamente enquanto o Arduino estiver ligado. Finalmente o código completo fica:
// Definição das entradas (pins)
const int LEDpin = 3; // define o pino digital 3 como saída do led
void setup() {
// coloque aqui o código de inicialização que será executada apenas uma vez.
pinMode(LEDpin, OUTPUT); // configuração do pino 3 como saída
}
void loop() {
// coloque aqui o código que vai ser executado repetidamente.
digitalWrite(LEDpin,HIGH); // liga o pino 3
delay(500); // espera 500 mili-segundos
digitalWrite(LEDpin,LOW); // desliga o pino 3
delay(500); // espera 500 mili-segundos
}
Copie o código completo acima e cole na janela do seu sketch, que deve ficar assim:

Passo 4: Compilar e carregar o código para o Arduíno
Para compilar o código clique no menu SKETCH/VERIFY/COMPILE/ conforme mostrado na Figura 5., ou clicar no ícone na barra superior da janela do sketch (ver Figura 4). O Arduino IDE vai analisar o código para ver se não nenhum erro, e gerar uma versão executável do programa.

Se o código for compilado sem erro, A mensagem “Done compiling.” vai aparecer na barra inferior da janela de sketch. o último passo a ser executá-lo é transferir o programa para o Arduino. Para isso, clique no menu SKETCH/UPLOAD (veja Figura 5) ou clique no ícone na barra superior da janela de sketch (Figura 4).
Se tudo ocorrer bem, vaia aparecer uma mensagem “Done uploading.” na barra inferior da janela de sketch. o código vai ser carregador para sua placa Arduino, e o LED vai começar a piscar.
Note que a frequência da piscada é fixa, e único jeito de mudar isso é modificar o comando delay(500) na rotina loop(), compilar e fazer novamente o upload do código para a placa.
Passo 5: Montagem do circuito (parte 2)
Acredito que tudo tenha dado de certo até agora, e que você tenha sem empolgado para incrementar um pouco mais a complexidade do projeto. Vamos agora faz modificar o circuito da parte 1 para incluir um potenciômetro para controlar a frequência da piscada. Veja o diagrama abaixo:

Se você já tem alguma prática com circuitos, vai perceber que temos dois circuitos separados. Um circuito para o LED controlado pelo pino digital 3, e um segundo circuito para o potenciômetro. Os terminais mais externos do potenciômetro estão ligados ao pino de 5V e ao aterramento do circuito (GND). A resistência interna é controlada girando-se o seletor do potenciômetro, e pode ser monitorada conectando-se o terminal do meio ao pino analógico A0.
Enquanto uma porta digital (nos modos INPUT ou OUTPUT) pode ter somente os valores “ligada” (HIGH) e “desligada” (LOW), uma porta analógica pode ter qualquer valor entre um valor máximo e um valor mínimo. Como o Arduino Uno possui uma arquitetura interna de 10 bits, as portas analógicas podem medir 1024 (210) valores possíveis, entre 0 a 1023. Para este projeto específico, estes valores representam as resistências mínima e máxima do potenciômetro. A ideia é utilizar a leitura do potenciômetro para determinar a frequência de piscada do LED.
A esta altura você certamente já está mais íntimo de como o Arduino IDE trabalha, então vamos direto ao código:
// Definição das entradas (pins)
const int LEDpin = 3; // define o pino digital 3 como saída do led
const int POTpin = A0; // define o pino analógico A0 como entrada do potenciômetro
void setup() {
// coloque aqui o código de inicialização que será executada apenas uma vez.
// configuração do pino 3 como saída
pinMode(LEDpin, OUTPUT);
// inicializa a saída serial do Arduino
Serial.begin(9600);
}
void loop() {
// coloque aqui o código que vai ser executado repetidamente.
// define duas variáveis inteiras
int valorPot, intervalo;
// lê o valor do pino A0 (0 a 1023)
valorPot = analogRead(POTpin);
// calcula o intervalo de delay do LED
intervalo = 100 + valorPot;
// imprime na porta serial uma mensagem mostrando
// o valor do pino A0 e o intervalo calculado
Serial.print("Leitura do potenciômetro: ");
Serial.print(valorPot);
Serial.print(" Intervalo (ms): ");
Serial.println(intervalo);
// liga o pino 3
digitalWrite(LEDpin,HIGH);
// espera em mili-segundos definida pela variável intervalo
delay(intervalo);
// desliga o pino 3
digitalWrite(LEDpin,LOW);
// espera em mili-segundos definida pela variável intervalo
delay(intervalo);
}
Note que a diferença entre este e o código da primeira parte do projeto é mínima. Alguns poucos comando foram adicionados ao sketch original. Antes da rotina setup(), nós declaramos a constante POTpin para representar o pino A0. Dentro da rotina setup(), existe o comando que inicializa a saída serial para que possamos monitorar o valor lido no pino A0. Dentro da rotina loop(), nós fazemos a leitura do pino A0, usamos este valor para determinar os intervalo entre as piscadas do LED, e mostramos uma mensagem com a informação medida na porta serial. Depois destas instruções, o ciclo acender/esperar/apagar o LED começa. Note que o tempo da piscada do LED varia entre 100 ms e 1123 ms, dependendo do estado do potenciômetro.
Assista aqui o vídeo de demonstração do projeto:
Conclusões
Este foi um post longo pois assumi que alguns leitores podem nunca ter tido contato com o Arduino. Daí a decisão de escrever este post no estilo tutorial. É importante esclarecer que o projeto aqui descrito é bastante introdutório, e o Arduino é capaz de realizar tarefas muito mais complexas do que as descritas acima. Apesar de simples, este projeto possui todos os elementos necessários para desenvolvermos muitos projetos educacionais.
Não pretendo descrever tudo o que é possível ser feito com o Arduino. O objetivo é utilizá-lo em projetos educacionais, e vamos incorporando novos componentes e novas formas de usar o Arduino à medida que a necessidade surgir. Para quem quiser se aprofundar mais, há na internet muitos tutoriais de como usar o Arduino e seus shields.