Escolar Documentos
Profissional Documentos
Cultura Documentos
Slides Arduino
Slides Arduino
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
Mini Nano
LilyPad
Duemilinove
Mega
Arduino Duemilinove
Ou mais simplesmente
O que o Arduino?
Software
Vantagens
Pode operar sem a presena de um computador (standalone); Possibilidade de expandir a sua capacidade atravs da utilizao de shields.
Zigbee
Inputshield
Ethernet
Livros de texto
Making Things Talk, Tom Igoe, OREILLY, 2007. Getting started with Arduino, Massimo Banzi,
OREILLY, 2007.
Programming
2009.
Outros
Site
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
de e
ATmega168 (PDIP)
ATmega1280 (TQFP)
ATmega328 (PDIP)
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
Outros
Outros
Outros
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;
ATmega168/328
ATmega1280
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
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
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
Pinos alimentao
Pinos analgicos
Software
Uma abordagem sua utilizao
Software de desenvolvimento
Compilar
Novo
Upload
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
Funes Importantes
A funo void setup() apenas executada uma vez, sendo utilizada para:
Inicializao de variveis;
A funo void loop() uma funo executada em loop. Apenas outras funes, cuja chamada feita ao executar esta funo, sero executadas.
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 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