Você está na página 1de 49

Introduo ao Arduino

Pessanha Santos ASPOF EN-AEL

Programa
1. 2. 3. 4. 5. Introduo plataforma de desenvolvimento Arduino Anlise sua constituio Software de desenvolvimento Arduino Estrutura e Sintaxe do seu cdigo 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
de utilizao (Programao, utilizao); Cross-platform; Baixo custo; Open-Source.
Simplicidade

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.

Mini Nano

LilyPad

Duemilinove

Mega

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.

Zigbee

Inputshield

Ethernet

Mas existem muitas mais.

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 Arduino Duemilinove Arduino Diecimilia Arduino Mega Arduino Nano LilyPad Pro Pro mini

Microcontrolador utilizado ATmega168 ou ATmega328 ATmega168 ATmega1280 ATmega168 ou ATmega328 ATmega168V ATmega168 ou ATmega328 ATmega168

Basicamente baseia-se em trs modelos microcontrolador: ATmega168, ATmega328 ATmega1280

de e

Microcontroladores utilizados (Exemplos de apresentao)

ATmega168 (PDIP)

ATmega1280 (TQFP)

ATmega328 (PDIP)

ATmega168/328/1280 Algumas caractersticas


ATmega168
Flash SRAM 16 KB 1 KB

ATmega328
Flash SRAM 32 KB 2 KB

ATmega1280
Flash SRAM 128 KB 8 KB

EEPROM
Clock mximo ADC

512 bytes
20 MHz 10 bit

EEPROM
ADC

1 KB
10 bit

EEPROM
ADC

4 KB
10 bit

Clock mximo 20 MHz Clock mximo 16 MHz

Consumo a 25C (Modo activo)

250 A 1 MHz (1.8 V)


PWM I2C SPI RS232

Consumo a 25C (Modo activo)

0.2 mA 1 MHz (1.8 V)


PWM I2C SPI RS232

Consumo a 25C (Modo activo)

500 A 1 MHz (1.8 V)


PWM I2C SPI RS232

Outros

Outros

Outros

ATmega168/328/1280 Algumas caractersticas (Cont.)

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

ATmega1280

Arduino Duemilinove vs Mega


Arduino Duemilinove
Microcontrolador
Tenso de operao

Arduino Mega
Microcontrolador
Tenso de operao

Atmega168/328
5V 6-20V 14 6 6 40 mA 50 mA

ATmega1280
5V 6-20V 54 16 14 40 mA 50 mA

Tenso de entrada (limites)


Pinos de I/O digital Pinos analgico Pinos PWM Corrente DC por pino de I/O Corrente DC (3.3V)

Tenso de entrada (limites)


Pinos de I/O digital Pinos analgico Pinos PWM Corrente DC por pino de I/O Corrente DC (3.3V)

Arduino Duemilinove vs Mega

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).

Atmega168/328 Anlise ao seu pinout vs Arduino

Arduino Duemilinove
Referncia Analgica Pinos digitais Power led Cristal FTDI Microcontrolador Reset Alimentao (Standalone) Boto de reset

Pinos alimentao

Pinos analgicos

Arduino Mega
Referencia Analgica Pinos digitais (PWM) Pinos de comunicao

FTDI

ICSP

Pinos digitais

Microcontrolador Reset Cristal Boto de reset

Pinos alimentao

Pinos analgicos

Software
Uma abordagem sua utilizao

Software de desenvolvimento Algumas caractersticas

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

Compilar

Novo

Upload

Abrir Parar Compilar Leitura porta srie

Leitura da porta srie (Software Arduino)

Possibilita tambm a leitura e envio de dados utilizando a porta srie

Envio de dados Visualizar dados recebidos

Seleccionar a Baud rate

Ciclo de desenvolvimento
Editar Compilar Uploading Executar

Estrutura e Sintaxe
Instrues e estrutura do cdigo a utilizar

Estrutura do sketch
//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 }

Declarao de bibliotecas

Declarao de variveis globais

Funo setup Obrigatoriamente do tipo - void Funo loop

void loop() { //Instruo 3 //Instruo 4 }

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 Vdc 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 LOW o 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

Você também pode gostar