Você está na página 1de 50

Arduino MS

Arduino MS
Sobre este Minicurso
• Viabilizado pela Organização do ERI MS;
• Apoiado pelo grupo ArduinoMS;
• Agradecimentos especiais ao do SENAC e UCDB.

Sobre o Ministrante:
• Samuel Cavalcante
• Engenheiro de Computação (UNIDERP)- CREA-MS: 12873D
• Pós Graduado em Eng. De Sistemas (ESAB)
• Analista em Educação profissional no SENAC/MS
• Professor UNIDERP e UNAES II
• Pai, Esposo, Professor, Empresário, Consultor, participante
de comunidades, conselheiro entre outros.
Arduino MS
O que veremos

• Introdução ao Arduino
• Código Pisca LED
• Configurando a IDE para transferir o Código
• Acionamento de LED com Botão
• Pisca Led com Sensor LDR
• Sensor de Temperatura

Obs.: Ao decorrer da oficina serão tratados assuntos sobre


eletrônica e eletricidade básica.
Microcontrolador X Microprocessadorr

• Qual a principal diferença entre eles?


Arduino MS
Introdução ao Arduino

• Plataforma baseada em Atmel da AVR (ATMega168;


ATMega 328);
• Oferece um IDE e bibliotecas de programação de alto nível;
• Open-source hardware e software
• Ampla comunidade
• Programado em C/C++
• Transferência de firmware
via USB
• MCU com bootloader
Arduino MS
Histórico do Arduino

• Projeto criado na Itália pelo Mássimo Banzi no Interaction


Design Institute Ivrea;
• Nasceu para complementar o aprendizado de programação,
computação física e gráfica;
• Nasceu do Processing e Wiring;
– Processing é um ambiente e linguagem de programação para
criar imagens, animação e interação;
Arduino MS
Simplicidade no circuito:
Arduino MS
Muitas aplicações práticas

• Robôs
• Roupas eletrônicas
• Máquinas de corte e modelagem 3D de baixo custo;
• Desenvolvimento de celulares customizados
• Instrumentos musicais
• Paredes interativas
• Instrumentação humana
Arduino MS
Vários tipos, vários fabricantes...

• Mega
• Lilypad
• Nano
• Uno
• Pro
• Arduino BT
• Freeduino
• Severino
• Program-ME
Arduino MS
Atmega168 / Atmega328: coração

• Características do ATmega 168:


• RISC –Reduced Instruction Set Computer
• 20 MIPS (20 Milhões de instruções por segundo)
• 16Kb Flash / 512 b EEPROM / 1Kb RAM Estática
• 10.000 ciclos na Flash e 100.000 na EEPROM
• 2 contadores / temporizadores de 8bits
• 1 contador / temporizador de 16bits
• 1 temporizador de tempo real com clock a parte
• 14 portas digitais
• 6 portas analógicas
Arduino MS
Características técnicas

• 6 canais PWM
• 6 conversores analógico/digital de 10 bits
• 1 serial programável (USART)
• 1 interface SPI (Serial Peripheral Interface)
• 1 interface serial a 2 fios (I2C)
• 1 watch dog timer programável
• 1 comparador analógico no chip
• Interrupção ou wake-up na alteração de estado dos pinos
Arduino MS
Resumo das conexões da placa
Arduino MS
FT232RL
Conversor USB-Serial

Conector USB

Regular 7085:
Recebe até 12 volts e
regula para 5 volts

Alimentação externa:
Até 12 volts
Arduino MS

Botão de reset

ICSP
Para gravar bootloader
ou programas/firmware

AtMega328 /168/8
Arduino MS
AREF Portas digitais 0 a 13
Referência analógica GND
0 RX 1 TX = usada durante
Padrão 5 volts transferência de sketch e
comunicação serial com
placa

2,4,7,8,12,13 = portas
digitais convêncionais

3,5,6,9,10,11 = portas PWM


Arduino MS

Portas analógicas 4 e 5
São as portas utilizadas
para conexões via I2C /
TWI.

GND Portas analógicas de 0 a 5


5 volts Podem funcionar como digitais de 14 a 19
3.3 volts VIN
Alimentação de entrada sem regulagem
Arduino MS
Shields: arquitetura modular inteligente

• Arduino estabeleceu um padrão de pinagem que é


respeitado por diversas placas shield:
Arduino MS
Por dentro do MCU
Arduino MS
Porta Digital Vs. Analógica
• Digital: trabalha com lógica binária, 0 e 1.
– No Arduino segue padrão TTL onde:
• 0 a 0,8 volts = 0
• 2 a 5 volts = 1
• Analógica: valor lido é análogo a tensão.
– Referência de analogia é 5 volts
• 0 volts = 0
• 2.5 volts= 512
• 5 volts = 1023
– Conversor A/D de 10 bits: 0 a 1023
• 00000000012 = 110 = 0,005v
• 00000000102 = 210 = 0,010v
• 00000000112 = 210 = 0,015v
• 10000000002 = 51210 = 2,50v
• ....
Arduino MS
Porta Digital Vs. Analógica

• Portas analógicas expressam valores de 0 a 1023 mas


não são utilizadas para transferência de informações
precisas
– Neste caso o dispositivo recebe um valor analógico de 0v à 5v,
que será convertido em um número binário de 10 bits. Cada
bits somado ao circuito equivale a 0,005v.
• Portas digitais permitem que dados sejam transferidos
em sequencia através de uma lógica ou protocolo binário
– Portas digitais não conseguem comandar potência
Arduino MS
Porta PWM

• Uma porta híbrida:


digital porém com
modularização de
zeros e uns de forma
que consegue
expressar uma idéia
de potência;
Arduino MS
Na prática

• Ligamos componentes em portas digitais (comuns, PWM)


ou analógica
• Fazemos leitura e escrita nestas portas afim de obter um
dado ou um determinado comportamento
• Processamos os dados no microcontrolador

Alguns exemplos de componentes...


Arduino MS
Ping – Sensor de distância ultrasonico
Arduino MS
LCD Touch
Shield LCD Touch screen
Arduino MS
SIM Reader
SIM Reader
Arduino MS

Lojas de componentes
• www.parallax.com
• www.sparkfun.com
• www.makershed.com
• www.liquidware.com
• www.ladyada.net
• www.adafruit.com
• www.rlrobotics.ind.br/ - BRASIL
• www.empretecnet.com.br/do/Home - BRASIL
Arduino MS
Programando para Arduino

• IDE pode ser baixada de www.arduino.cc


• A IDE foi desenvolvida com Java, portanto precisaremos de
um máquina virtual instalada.
• Funciona em Windows. Mac OS X e Linux (em alguns
windows e mac pode ser necessário colocar driver)
• Utiliza GCC + GCC Avr para compilação
(você pode também programar diretamente com GCC!)
• A transferência para a placa é feita via USB pelo IDE;
(mas também pode ser feita com gravadores ICSP!)
Arduino MS
Partes básicas do programa Arduino

• Temos que obrigatoriamente programar dois métodos:

void setup() {
}
void loop() {
}

• O setup é executado uma só vez assim que a placa for


ligada e o loop terá o código de execução infinita
Arduino MS
Portas digitais e analógicas

• Na prática ligamos componentes em portas digitais e


analógicas e através do código Arduino, manipulamos as
portas:
– pinMode(<porta>, <modo>): configura uma porta digital
para ser lida ou para enviarmos dados;
– digitalWrite(<porta>, 0 ou 1): envia 0 ou 1 para porta digital
– digitalRead(<porta>): retorna um 0 ou 1 lido da porta
– analogRead(<porta>): retorna de 0 a 1023 com o valor da
porta analógica
– analogWrite(<porta>, <valor>): escreve em uma porta PWM
um valor de 0 a 255
Arduino MS
Protoboard ou Matriz de contato

É um dispositivo usado
para construir circuitos sem
a necessidade de solda. Na
parte central de todos os
pinos alinhados sob um
número estiver conectado,
enquanto os nas bordas
superior e inferior -
normalmente marcado com
linhas pretas e vermelhas -
são conectados na
horizontal.
Arduino MS
Primeiro contato com Arduino

• Ligar sua placa no cabo USB e no PC


• Realizar a instalação do Driver com a ajuda do facilitador
• Verificar o jumper de alimentação configurando para USB
se necessário
• Digitar o código, a ser passado, no Arduino IDE
• Selecionar no software a versão do Arduino e a porta serial
de comunicação.
• Clicar no botão de transferência de sketch
Arduino MS
Exemplo “pisca led” com Arduino
Esta conexão é bem simples
somente para efeito de teste
para piscar o led.

O correto é ligar um resistor


usando uma protoboard.
Arduino MS
Exemplo “pisca led”

void setup() {
pinMode(13, OUTPUT); //porta 13 em output
}

void loop() {
digitalWrite(13, HIGH); //HIGH = 1 = TRUE
delay(500);
digitalWrite(13, LOW); //LOW = 0 = FALSE
delay(500);
}
Configurando a IDE para transferir o Código
Configurando a IDE para transferir o Código
Procurando erros no código
Fazendo o Upload do Código para o Arduino
Arduino MS
Entrada Digital: Fazendo leitura de um botão

• Os pinos do Arduino são extremamente sensíveis,


permitindo a leitura de ruído elétrico do ambiente. O
próximo teste utilizaremos o pino 7 como leitura de dados
externos, como é uma porta digital será lido HIGH ou LOW
(1 ou 0). Essa leitura é realizada pelo comando
digitalRead(port).

• Conecte três fios à placa Arduino. O primeiro de uma perna


do botão através de um resistor de pull-up (aqui 10K Ω)
para o fornecimento de 5 volts. A segunda vai da perna
correspondente do botão ao GND. O terceiro se conecta a
um pino digital I/O (pino 7) que lê o estado do botão.
Arduino MS
Montando o Circuito
Arduino MS
Código Aciona LED com botão

int val = 0; // variável para ler o status do pino


void setup() {
pinMode(13, OUTPUT); // declare LED como output
pinMode(7, INPUT); // declare pushbutton como input
}
void loop(){
val = digitalRead(7); // ler a entrada de valor
if (val == HIGH) {// verificar se a entrada é alta
digitalWrite(13, LOW); // LED OFF
} else {
digitalWrite(13, HIGH); // LED ON
}
}
Arduino MS
Tempo entre acende e apaga LED usando sensor LDR

• Use o mesmo circuito como antes, mudando o botão com o


sensor de luz e trocando a ligação do pino digital 7 para o
pino analógico 2.

• A função permite enviar um valor numérico para o


computador. Variando números digitais no intervalo de 0-
1024 (resolução de 1 Bit).

• Nesta função usamos a comunicação serial, com isso abra o


monitor serial para ler dados do sensor. – Após o código ser
copiado no Arduino.
Arduino MS
Montando o Circuito
Arduino MS
Código
int val = 0; // variável para armazenar o valor vindo do sensor
void setup() {
pinMode(13, OUTPUT); // declara o ledPin como uma saída
Serial.begin(9600); // usar a porta serial para comunicação
}
void loop() {
val = analogRead(2); // lê o valor do sensor
Serial.println(val); // imprime o valor para a porta serial
digitalWrite(13, HIGH); // ligar o LED
delay(val); // parar o programa por algum tempo
digitalWrite(13, LOW); // desligar o LED
delay(val); // tempo antes do proximo ciclo
}
Vetor de LEDs

• Monte na matriz de contato 5 leds, cada perna maior do


LED (VCC) será ligada a uma perna do resistor, a outra
perna do resistor será ligada em cada um dos seguinte
pinos Digital, 12, 11, 10, 9 e 8. A perna menor dos LEDs,
no GND (0v).

• A atividade é fazer esses LEDs acenderem em sequencia,


acendendo um LED de cada vez, com intervalos de 50
milisegundos por led, após todos acessos aguardar 1000
milisegundos e começar a apagar os leds, com o mesmo
intervalor de tempo.
Vetor de LEDs – Montando o circuito
Vetor de LEDs Código
int i; delay(50);
void setup() { }
pinMode(13, OUTPUT); delay(1000);
pinMode(12, OUTPUT); for(i=8;i<=13;i++){
pinMode(11, OUTPUT); digitalWrite(i, LOW);
pinMode(10, OUTPUT); delay(50);
pinMode(9, OUTPUT); }
} delay(1000);
void loop() { }
for(i=13;i>=8;i--){
digitalWrite(i, HIGH);
Vetor de LEDs com potenciômetro
Vetor de LEDs com potenciômetro
int i, port, potenc; }else{
float tensao=0; digitalWrite(port, LOW);
void setup() { }
pinMode(13, OUTPUT); port--;
pinMode(12, OUTPUT); }
pinMode(11, OUTPUT); Serial.print("Valor decimal = ");
pinMode(10, OUTPUT); Serial.print(potenc);
pinMode(9, OUTPUT); tensao=potenc*0.004883;
Serial.begin(9600); Serial.print(" - Tensao = ");
} Serial.print(tensao);
void loop() { Serial.println(" V");
potenc=analogRead(2); delay(500);
port=13; }
for(i=1;i<=5;i++){
if(potenc>((i*2-1)*100)){
digitalWrite(port, HIGH);
Arduino MS
Resumindo...

• Arduino é um projeto simples, popular e acessível


• Eletrônica e programação embarcada alto nível
• Na prática ligamos componentes nas portas analógicas e
digitais e escrevemos programas que usam as portas
• Existem diversas bibliotecas que encapsulam a lógica de
comunicação digital ou analógica: servo, motor de passo,
Android, display LCD
• Ter portas digitais analógicas e pmw é um grande valor do
microcontrolador utilizado
• A transfêrencia via USB e a ferramenta / IDE para
programação funcionam em múltiplas plataformas
• Open-source Hardware e Open-source software

Você também pode gostar