Você está na página 1de 47

Minicurso de Arduino – Parte 1

Wagner Cesar Vieira


Conteúdo

Parte 1
• Introdução – História do Arduino
• Hardware Arduino – Shields
• Aplicações e projetos
• Conceitos de micro controlador, pinos, portas,
interrupções
• Conceitos básicos de circuitos elétricos
• Diagramas conceituais e esquemas elétricos
• Sketch, simuladores Arduino e exemplos
Conteúdo

Parte 2
• Kits didáticos e simuladores de Arduino
• Onde comprar
• Apresentação da IDE do Arduino e ambiente de
desenvolvimento
• Linguagem de programação, boas práticas e exemplos
simples
• Projetos simples com automação residencial
A história do Arduino

O projeto foi criado em 2005 em Ivrea na Itália, por alunos do curso de


Design de Interação sob orientação do Prof. Massimo Banzi, em virtude
da dificuldade de não conseguirem achar microcontroladores.
A ideia, então, foi desenvolver o Arduino: uma plataforma aberta de
prototipação eletrônica versátil, fácil de usar e, principalmente, com um
preço acessível.

Site oficial: www.arduino.cc


O que é o Arduino

• Arduino é uma plataforma de prototipagem eletrônica


open-source, baseada nos princípios de flexibilidade e facilidade
de uso para hardware e software.
• Contêm um microcontrolador Atmega - que é um
“computador” completo com CPU, RAM, memória Flash entre
outros periféricos, todos em um único chip programável,
podendo ligar diversos tipos de sensores, LEDs, pequenos
motores e muito mais.
• O Arduino se conecta ao seu computador via USB.
• Utilizando uma linguagem bem parecida com a linguagem C /
C + + em uma IDE desenvolvida pra esse fim.
Por que usar Arduino?
Por que utilizar a plataforma
Arduino?

• É open- source;

• Multiplataforma;

• Barato;

• Farta literatura;

• Comunidades;
Hardware Arduino
Hardware Arduino

Lilypad

Nano

Nano

XBee
Hardware Arduino - Shields
Aplicações com Arduino
Tweet-a-pot - Café
Aplicação com Arduino

https://www.youtube.com/watch?v=_Y-F9Zdk_qM
Robótica
Aplicação com Arduino
Microcontrolador
Conceito de circuito elétrico

Um circuito elétrico é a ligação de elementos elétricos, tais


como resistores, indutores, capacitores, diodos, linhas de transmissão, fontes de
tensão, fontes de corrente e interruptores, de modo que formem pelo menos um
caminho fechado para a corrente elétrica. Um circuito elétrico simples, alimentado
por pilhas, baterias ou tomadas, sempre apresenta uma fonte de energia elétrica,
um aparelho elétrico, fios ou placas de ligação e um interruptor para ligar e desligar
o aparelho.
Diagrama conceitual

Simbologia de elementos Identificando um led (Light


Emitting Diode)
Tabela de Leds
Tabela de resistores
Guia rápido - Resistores
Exemplo de esquema elétrico
Projeto: Hello Blink
Exemplo de sketch

Declaração de variáveis

Setup – Configuração dos pinos

Loop – execução de instruções


ou bloco de instruções
Simuladores – Tinkercad
https://www.tinkercad.com/
Exercício: semáforo para
pedestres

Lista de dispositivos:
❖ Arduino Uno R3
❖ Protoboard
❖ 5 leds
❖ 7 resistores
❖ 2 push buttom
❖ Jumpers para ligação
Sketch: semáforo para
pedestres
const int button1Pin = 2; //definição da entrada que será utilizada pelo botão 1
const int button2Pin = 13; //definição da entrada que será utilizada pelo botão 2
int button1State = 0; //variavel para a leitura do estado do botão 1
int button2State = 0; //variavel para a leitura do estado do botão 2
byte ledG1 = 7;
byte ledG2 = 12;
byte ledR1 = 3;
byte ledR2 = 10;
byte ledY = 5;

void setup() {
pinMode (ledR1, OUTPUT); //definição do pino 3 com saída para o LED vermelho para veículos
pinMode (ledY, OUTPUT); //definição do pino 5 com saída para o LED amarelo para veículos
pinMode (ledG1, OUTPUT); //definição do pino 7 com saída para o LED verde para veículos
pinMode (ledG2, OUTPUT); //definição do pino 12 com saída para o LED verde para pedestres
pinMode (ledR2, OUTPUT); //definição do pino 10 com saída para o LED vermelho para pedestres
pinMode (button1Pin, INPUT); //definição do pino 2 como entrada que sera utilizada pelo Botão 1
pinMode (button2Pin, INPUT); //definição do pino 13 como entrada que sera utilizada pelo Botão 2
}
Sketch: semáforo para pedestres
void loop() {
button1State = digitalRead (button1Pin); //Leitura do estado do botão 1
button2State = digitalRead (button2Pin); //Leitura do estado do botão 2
digitalWrite (ledG1, HIGH); //Liga-se o LED verde para veículos
digitalWrite (ledR2, HIGH); //Liga-se o LED vermelho para pedestres

if (button1State == HIGH || button2State == HIGH) { //se o botão 1 ou o botão 2 forem


acionados o estado do botão acionado será alterado
delay (5000); //pausa por 5 segundos
digitalWrite (ledG1, LOW); //Desliga-se o LED verde para veículos
digitalWrite (ledR2, LOW); //Desliga-se o LED vermelho para pedestres
digitalWrite (ledY, HIGH); //Liga-se o LED amarelo para veículos
delay (5000); //pausa por 5 segundos
digitalWrite (ledY, LOW); //Desliga-se o LED amarelo para veículos
digitalWrite (ledR1, HIGH); //Liga-se o LED vermelho para veículos
digitalWrite (ledG2, HIGH); //Liga-se o LED verde para pedestres
delay (7000); //pausa por 7 segundos
digitalWrite (ledR1, LOW); //Desliga-se o LED vermelho para veículos
digitalWrite (ledG2, LOW); //Desliga-se o LED verde para pedestres
}
else {
return; //retorna para o estado inicial (retorna ao inicio do void loop)
}
}
Conteúdo

Parte 2
• Kits didáticos e simuladores de Arduino
• Onde comprar
• Apresentação da IDE do Arduino e ambiente de
desenvolvimento
• Linguagem de programação, boas práticas e exemplos
simples
• Projetos simples com automação residencial
Conjunto didático
Conjunto didático

Protoboard

Buzzer Sensor LDR


Módulo Relê Potenciômetro
Onde comprar?
Onde comprar?
Onde comprar?
Ambiente integrado de desenvolvimento
Linguagem de programação

Algoritmos, normalmente, são escritos em linguagens de programação de alto nível. Isso


se aplica a praticamente qualquer computador, inclusive o Arduino, onde um algoritmo
também é conhecido como sketch. void loop() {
//Sketch para acender 3 leds digitalWrite(ledVerde, HIGH);
// Definição de variáveis delay(1000);
byte ledVerde = 7; digitalWrite(ledAmarelo, HIGH);
byte ledAmarelo = 8; delay(1000);
byte ledVermelho = 12; digitalWrite(ledVermelho, HIGH);
//Inicialização das variáveis delay(1000);
void setup() { digitalWrite(ledVerde, LOW);
// seta os pinos do Arduino como saída delay(1000);
pinMode(ledVerde, OUTPUT); digitalWrite(ledAmarelo, LOW);
pinMode(ledAmarelo, OUTPUT); delay(1000);
pinMode(ledVermelho, OUTPUT); digitalWrite(ledVermelho, LOW);
} delay(1000); }
Variáveis e tipos de dados
Uma variável é um recurso utilizado para armazenar dados de um programa na
memória.
Ex: byte led1 = 5; //Armazena o valor 5 na memória para a variável led1 do tipo byte

Tipos de dados
• boolean: true ou false
• unsigned long: número inteiro de 16
• char: um caractere
bits sem sinal (0 a 4294967295)
• byte: sequência de 8 bits
• float: número real de precisão simples
• int: número inteiro de 16 bits com sinal (-
(ponto flutuante)
32768 a 32767)
• double: número real de precisão
• unsigned int: número inteiro de 16 bits
dupla (ponto flutuante)
sem sinal (0 a 65535)
• string: sequência de caracteres
• long: número inteiro de 16 bits com sinal
• void: tipo vazio (não tem tipo)
(-2147483648 a 2147483647)
Operadores
Um operador é um conjunto de um ou mais caracteres que serve para operar sobre
uma ou mais variáveis ou constantes. Um exemplo muito simples de operador é o
operador de adição, o +. Digamos que queremos somar dois números e atribuir a
uma variável x. Para isso, fazemos o seguinte: x = 2 + 3;

Operadores aritméticos: Operadores lógicos:

+ adição ("mais") && conjunção ("e")

- subtração ("menos") || disjunção ("ou")

* multiplicação ("vezes") == igualdade ("igual a")

/ divisão ("dividido por") != desigualdade ("diferente de")


! negação ("não")

Operadores de atribuição: > "maior que"

= atribui um valor a uma variável < "menor que"


>= "maior ou igual a"
<= "menor ou igual a"
Funções

Uma função é, em linhas gerais, uma sequência de comandos que pode ser reutilizada
várias vezes ao longo de um programa. Para criar uma função e dizer o que ela faz,
nós precisamos fazer uma declaração de função. Veja como uma função é declarada
no nosso programa de exemplo:
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
// Todas as linhas a seguir são chamadas de função com passagem de parâmetros
// As funções são executadas em sequência para fazer o LED acender e apagar
digitalWrite(led, HIGH); // Atribui nível lógico alto ao pino do LED, acendendo-o
delay(1000); // Espera 1000 milissegundos (um segundo)
digitalWrite(led, LOW); // Atribui nível lógico baixo ao pino do LED, apagando-o
delay(1000); // Espera 1000 milissegundos (um segundo)
Estrutura condicional If
Condicional If-Else
// Pisca o LED três vezes
Condicional If for(i = 0; i < 3; i++) {
int i = 0; if(i == 2) {
void loop() { digitalWrite(led, HIGH);
digitalWrite(led, HIGH); // acende delay(200);
delay(1000); //espera 1s digitalWrite(led, LOW
digitalWrite(led, LOW); //apaga delay(1800);
delay(1000); // espera 1s } else {
i++; // Incrementa a variável digitalWrite(led, HIGH);
if(i == 3) { //testa o valor da variável delay(1000);
delay(5000); //espera 5s digitalWrite(led, LOW);
i = 0; // Reinicia o contador delay(1000);
} }
} }
Estrutura de controle
Estruturas de controle são blocos de instruções que alteram
o fluxo de execução do código de um programa.
Instrução While Instrução For
// Pisca o LED três vezes // Pisca o LED três vezes
int i = 0; int i = 0;
... ...
while(i < 3) { for(i < 3) {
digitalWrite(led, HIGH); // acende digitalWrite(led, HIGH); // acende
delay(1000); // Espera 1s (1seg) delay(1000); // Espera 1s (1seg)
digitalWrite(led, LOW); // apaga digitalWrite(led, LOW); // apaga
delay(1000) // Espera 1s (1seg) delay(1000) // Espera 1s (1seg)
i = i + 1; // incrementa a variável i = i + 1; // incrementa a variável
} }
delay(500); //espera meio segundo delay(500); //espera meio segundo
Exercício para fixação
Sketch do exercício

// Definição de variáveis e atribuição dos if ( cont % 2 == 0)


pinos {
byte ledGreen1 = 10; digitalWrite(ledGreen1, HIGH); // acende o led
byte ledGreen2 = 8; digitalWrite(ledGreen2, HIGH);
byte ledYellow1 = 6; delay(2000);
byte ledYellow2 = 4; digitalWrite(ledGreen1, LOW); // apaga o led
digitalWrite(ledGreen2, LOW);
// Inicialização dos pinos de controle delay(1000);
void setup() { }
// initialize the digital pin as an output. else
pinMode(ledGreen1, OUTPUT); {
pinMode(ledGreen2, OUTPUT); digitalWrite(ledYellow1, HIGH); // acende o led
pinMode(ledYellow1, OUTPUT); digitalWrite(ledYellow2, HIGH);
pinMode(ledYellow2, OUTPUT); delay(2000);
} digitalWrite(ledYellow1, LOW); // apaga o led
digitalWrite(ledYellow2, LOW);
// Execução dos blocos de comando delay(1000);
// Sempre loop infinito }
void loop() { }
for ( int cont=1; cont <=10; cont++) }
{
Projeto AutoHSH
(Home Sweet Home)
Diagrama conceitual
AutoHSH
Sketch - AutoHSH
Sketch - AutoHSH
Referências bibliográficas

✓ MONK, Simon. Programação com Arduino: começando com Sketches.


Porto Alegre: Bookman, 2013.
✓ MONK, Simon. 30 projetos com Arduino – 2. ed. – Porto Alegre:
Bookman, 2014.
✓ EVANS, Martin; NOBLE, Joshua; HOCHENBAUM, Jordan. Arduino em
ação. São Paulo: Novatec, 2014.
✓ TORRES, Gabriel. Eletrônica para autodidatas, estudantes e técnicos.
Rio de Janeiro: Novaterra, 2014.
✓ Arduino home page (www.arduino.cc) – Página principal do Arduino
na web.
✓ Portal Robocore. Disponível em: <http://www.robocore.net>. Acesso
em 12 de setembro de 2016.
✓ Portal Labdegaragem. Disponível em: <http://labdegaragem.com>.
Acesso em 06 de setembro de 2016.
Pesquisa de satisfação

http://migre.me/v4GOq
Agradecimentos e contatos
Wagner Cesar Vieira
wagner.vieira@etec.sp.gov.br
wagner.vieira@etecbebedouro.com.br

Você também pode gostar