You are on page 1of 49

Introduo ao Arduino

Pessanha Santos
ASPOF EN-AEL
Programa
1. Introduo plataforma de desenvolvimento Arduino
2. Anlise sua constituio
3. Software de desenvolvimento Arduino
4. Estrutura e Sintaxe do seu cdigo
5. Estudo de alguns exemplos
Introduo
Plataforma de desenvolvimento Arduino
O que o ARDUINO?
Plataforma de desenvolvimento
Simples placa de circuito impresso com um microcontrolador
ATMega da ATMEL (mas vamos j ver exemplos!?!??).
Caractersticas principais
Simplicidade de utilizao (Programao, utilizao);
Cross-platform;
Baixo custo;
Open-Source.
A possibilidade de actuar no Mundo que nos rodeia.
Arduino o que consigo fazer?
Ler valores provenientes de sensores
Acelermetros, LDR, ultra-sons, entre muitos outros.
Actuar no Mundo exterior
Leds, Motores, Displays(LCD), entre muitos outros.
Capacidade de efectuar prottipos rapidamente e com
grande simplicidade.
E muito mais..
O que o Arduino? Exemplos ?
Algumas apresentaes possveis.
Duemilinove
Mega
LilyPad
Mini
Nano
Arduino Duemilinove
Ou mais simplesmente
Ou ainda mais simplesmente
O que o Arduino?
Software
Vantagens
Claramente ser uma ferramenta Open-Source
(Software e Hardware);
Tem uma enorme comunidade de seguidores por todo
o Mundo (Permite uma constante actualizao e
inovao);
Pode operar sem a presena de um computador
(standalone);
Possibilidade de expandir a sua capacidade atravs da
utilizao de shields.
O que so shields? Exemplos ?
Algumas apresentaes possveis.
Inputshield Zigbee
Mas existem muitas mais.
Ethernet
Bibliografia (Alguns exemplos...)
Livros de texto
Making Things Talk, Tom Igoe, OREILLY, 2007.
Getting started with Arduino, Massimo Banzi,
OREILLY, 2007.
Programming Interactivity, Joshua Noble, OREILLY,
2009.
Outros
Site oficial (www.arduino.cc) ;
Alguns Fruns (Lusorobtica, Portugal-a-Programar).
Hardware
Anlise sua constituio
Microcontroladores utilizados
Modelo Microcontrolador utilizado
Arduino Duemilinove ATmega168 ou ATmega328
Arduino Diecimilia ATmega168
Arduino Mega ATmega1280
Arduino Nano ATmega168 ou ATmega328
LilyPad ATmega168V
Pro ATmega168 ou ATmega328
Pro mini ATmega168
Basicamente baseia-se em trs modelos de
microcontrolador: ATmega168, ATmega328 e
ATmega1280
ATmega168
(PDIP)
Microcontroladores utilizados
(Exemplos de apresentao)
ATmega328
(PDIP)
ATmega1280
(TQFP)
ATmega168/328/1280
Algumas caractersticas
ATmega168 ATmega328 ATmega1280
Flash 16 KB Flash 32 KB Flash 128 KB
SRAM 1 KB SRAM 2 KB SRAM 8 KB
EEPROM 512 bytes EEPROM 1 KB EEPROM 4 KB
Clock mximo 20 MHz Clock mximo 20 MHz Clock mximo 16 MHz
ADC 10 bit ADC 10 bit ADC 10 bit
Consumo a
25C
(Modo activo)
250 A
1 MHz
(1.8 V)
Consumo a
25C
(Modo activo)
0.2 mA
1 MHz
(1.8 V)
Consumo a
25C
(Modo activo)
500 A
1 MHz
(1.8 V)
Outros
PWM
Outros
PWM
Outros
PWM
I
2
C I
2
C I
2
C
SPI SPI SPI
RS232 RS232 RS232
Existe claramente uma diferena em termos de
memria disponvel (SRAM, Flash e EEPROM);
O ATmega328 apresenta a mesma arquitectura do
ATmega168 mas com diferentes capacidades em
termos de quantidade de memria disponvel;
Consumo energtico do ATmega1280 inferior ao do
ATmega328 nas mesmas condies de
funcionamento;
Todos os modelos apresentados possuem a mesma
resoluo no seu conversor A/D.
ATmega168/328/1280
Algumas caractersticas (Cont.)
ATmega168/328
ATmega1280
Arduino Duemilinove vs Mega
Arduino Duemilinove Arduino Mega
Microcontrolador Atmega168/328 Microcontrolador ATmega1280
Tenso de
operao
5V
Tenso de
operao
5V
Tenso de entrada
(limites)
6-20V
Tenso de entrada
(limites)
6-20V
Pinos de I/O
digital
14
Pinos de I/O
digital
54
Pinos analgico 6 Pinos analgico 16
Pinos PWM 6 Pinos PWM 14
Corrente DC por
pino de I/O
40 mA
Corrente DC por
pino de I/O
40 mA
Corrente DC (3.3V) 50 mA Corrente DC (3.3V) 50 mA
Existe uma diferena clara em termos de nmero de
pinos analgicos e digitais disponveis, com vantagem
para o Arduino Mega;
O Arduino Mega apresenta maiores dimenses que o
Duemilinove, o que dependendo da aplicao pode
um factor importante;
Funcionam ambos com as mesmas tenses de
alimentao;
Mas no podemos esquecer que o ATmega1280
(Arduino Mega) apresenta uma maior quantidade de
memria disponvel (EEPROM, SRAM e Flash).
Arduino Duemilinove vs Mega
Atmega168/328
Anlise ao seu pinout vs Arduino
Arduino Duemilinove
Pinos digitais
Pinos analgicos
Boto de
reset
Power
led
FTDI
Referncia
Analgica
Microcontrolador
Cristal
Alimentao
(Standalone)
Reset
Pinos alimentao
Arduino Mega
Pinos
digitais
Referencia
Analgica
Pinos alimentao
Reset
FTDI
Boto de
reset
ICSP
Microcontrolador
Pinos analgicos
Pinos digitais (PWM) Pinos de comunicao
Cristal
Software
Uma abordagem sua utilizao
Disponvel para download directamente do site oficial
Arduino (www.arduino.cc);
Open-Source;
Cross-platform;
Ambiente de desenvolvimento escrito em java;
Sintaxe utilizada baseada na linguagem de
programao de alto nvel C (Basicamente C..);
Enorme simplicidade de utilizao, devido ao
bootloader previamente gravado no microcontrolador.
Software de desenvolvimento
Algumas caractersticas
Software de desenvolvimento
Compilar
Parar
Compilar
Novo
Abrir
Upload
Leitura
porta srie
Possibilita tambm a leitura e envio de dados
utilizando a porta srie
Leitura da porta srie
(Software Arduino)
Seleccionar a Baud rate
Visualizar
dados
recebidos
Envio de
dados
Ciclo de desenvolvimento
Editar Compilar Uploading Executar
Estrutura e Sintaxe
Instrues e estrutura do cdigo a utilizar
//Declarao de bibliotecas
#include <Client.h>
#include <Ethernet.h>
#include <Server.h>
//Declarao de variveis globais
int i=0;
float x=5.67;
void setup() {
//Instruo 1
//Instruo 2
}
void loop() {
//Instruo 3
//Instruo 4
}
Estrutura do sketch
Declarao de bibliotecas
Declarao de variveis globais
Funo setup
Funo loop
Obrigatoriamente do
tipo - void
Funes Importantes
A funo void setup() apenas executada uma vez,
sendo utilizada para:
Inicializao de variveis;
Inicializao de da utilizao de bibliotecas;
Definio dos pinos a utilizar;
Incio do uso da comunicao srie.
A funo void loop() uma funo executada em
loop. Apenas outras funes, cuja chamada feita ao
executar esta funo, sero executadas.
Funes Analgicas e Digitais
//Definio do pino Nmero do pino como INPUT ou OUTPUT
pinMode(Nmero do Pino, Modo);
EX: pinMode(13, OUTPUT);
//Definio do pino Nmero do pino como HIGH ou LOW
digitalWrite(Nmero do Pino, Modo);
EX: digitalWrite(13, OUTPUT);
//Permite a leitura do valor digital presente no Nmero do pino
Varivel do tipo integer = digitalRead(Nmero do Pino);
EX: leitura = digitalRead(5);
// Permite a leitura do valor analgico presente no Nmero do pino
Varivel do tipo integer = analogRead(Nmero do Pino);
EX: leitura = analogRead(2);
//Permite a criao de um pulso PWM com o duty cicle definido pelo valor
analogWrite(Nmero do Pino, valor);
EX: analogWrite(11,255);
PWM Pulse Width Modulation
PWM Pulse Width Modulation
Podemos ento concluir que a tenso mdia V
dc

directamente proporcional ao duty cicle do sinal PWM.


Ciclo if.else.
//Ciclo que utilizado para descrever uma condio
If(condio){
Instruo 1;
Instruo 2;
}
else{
Instruo 3;
Instruo 4;
}
A condio referida anteriormente tem de respeitar as condies descritas na
tabela acima. No caso descrito em cima se a condio se verificar o instruo 1
e 2 executada, caso contrrio so executadas a instruo 3 e 4.
Ciclo for
//Ciclo que utilizado quando se pretende executar um determinado conjunto
de instrues um certo nmero de vezes
for( inicializao; condio; Incremento a efectuar){
Instruo 1;
Instruo 2;
()
}
A condio referida anteriormente tem de respeitar as condies descritas na
tabela acima. A inicializao da varivel apenas efectuada no inicio do ciclo,
sendo a cada execuo do ciclo efectuado o respectivo incremento na varivel
de controlo do ciclo.
Ciclo switch / case
//Ciclo que normalmente utilizado para descrever uma lista de casos
possveis para uma determinada varivel
switch(varivel){
case 1:
Instruo a executar quando a varivel for 1 (varivel == 1)
break;
case 2:
Instruo a executar quando a varivel for 1 (varivel == 2)
break;
()
default:
Conjunto de instrues a executar se nenhuma das condies for verificada. A
utilizao desta condio opcional.
break;
}
Ciclo while
//Ciclo que utilizado quando se pretende executar um determinado conjunto
de instrues um certo nmero de vezes
while(condio){
Instruo 1;
Instruo 2;
}
Ciclo do..while
//Ciclo bastante semelhante ao ciclo while mas a condio apenas testada no
fim do ciclo, sendo sempre executado o ciclo pelo menos uma vez
do{
Instruo 1;
Instruo 2;
()
while(condio);
Exemplos
Aplicao do exposto anteriormente a casos prticos
Exerccio 1
Faa com que um led acenda e apague com uma
frequncia de 2 Hz.
//Declarao de variveis globais
int ledpin=13;
void setup() {
pinMode(ledPin,OUTPUT);
}
void loop() {
digitalWrite(ledPin,HIGH);
Delay(500);
digitalWrite(ledPin,LOW);
Delay(500);
}
Exerccio 2
Utilize um sinal digital de entrada (HIGH ou LOW)
para fazer com que o led acenda ou apague (valor
digital de entrada HIGH o led liga, valor digita de
entrada LOWo led encontra-se desligado).
Exerccio 2 - Resoluo
//Declarao de variveis globais
int ledPin = 13;
int comando=2;
int val=0;
void setup() {
pinMode(ledPin,OUTPUT);
pinMode(comando,INPUT);
}
void loop() {
val=digitalRead(comando);
if (val==LOW)
{
digitalWrite(ledPin,LOW);
}
else{
digitalWrite(ledPin, HIGH);
}
Exerccio 3
Recorrendo a leituras sucessivas ao valor de sada de
um simples potencimetro faa um regulador de
luminosidade para o nosso to famoso led.
Exerccio 3 - Resoluo
//Declarao de variveis globais
int ledPin = 13;
int comando=2;
int val=0;
void setup() {
pinMode(entrada_analogica,INPUT);
pinMode(ledPin,OUTPUT);
}
void loop() {
val=analogRead(entrada_analogica);
val=(val/4);
analogWrite(ledPin,val);
}
Exerccio 4
Obtenha o valor, em tempo real, da varivel utilizada
para controlar a luminosidade do led.
Exerccio 4 - Resoluo
//Declarao de variveis globais
int ledPin = 13;
int comando=2;
int val=0;
void setup() {
pinMode(entrada_analogica,INPUT);
pinMode(ledPin,OUTPUT);
Serial.begin(9600);
}
void loop() {
val=analogRead(entrada_analogica);
val=(val/4);
analogWrite(ledPin,val);
Serial.println(val);
}
FIM

You might also like