SlideShare uma empresa Scribd logo
1 de 49
Baixar para ler offline
Introdução ao Arduino
Pessanha Santos
ASPOF EN-AEL
Programa
1. Introdução à plataforma de desenvolvimento Arduino
2. Análise à sua constituição
3. Software de desenvolvimento Arduino
4. Estrutura e Sintaxe do seu código
5. Estudo de alguns exemplos
Introdução
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!?!??).
 Características principais
 Simplicidade de utilização (Programação, utilização…);
 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
 Acelerómetros, LDR, ultra-sons, entre muitos outros.
 Actuar no Mundo exterior
 Leds, Motores, Displays(LCD), entre muitos outros.
 Capacidade de efectuar protótipos rapidamente e com
grande simplicidade.
 E muito mais……..
O que é o Arduino? Exemplos ?
 Algumas apresentações possíveis….
Duemilinove Mega
LilyPadMini
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 actualização e
inovação);
 Pode operar sem a presença de um computador
(standalone);
 Possibilidade de expandir a sua capacidade através da
utilização de shields.
O que são shields? Exemplos ?
 Algumas apresentações possíveis….
InputshieldZigbee
Mas existem muitas mais….
Ethernet
Bibliografia (Alguns exemplos...)
 Livros de texto
Making Things Talk, Tom Igoe, O´REILLY, 2007.
Getting started with Arduino, Massimo Banzi,
O´REILLY, 2007.
Programming Interactivity, Joshua Noble, O´REILLY,
2009.
 Outros…
 Site oficial (www.arduino.cc) ;
 Alguns Fóruns (Lusorobótica, Portugal-a-Programar).
Hardware
Análise à sua constituição
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 três modelos de
microcontrolador: ATmega168, ATmega328 e
ATmega1280
ATmega168
(PDIP)
Microcontroladores utilizados
(Exemplos de apresentação)
ATmega328
(PDIP)
ATmega1280
(TQFP)
ATmega168/328/1280
Algumas características
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 máximo 20 MHz Clock máximo 20 MHz Clock máximo 16 MHz
ADC 10 bit ADC 10 bit ADC 10 bit
Consumo a
25ºC
(Modo activo)
250 μA
1 MHz
(1.8 V)
Consumo a
25ºC
(Modo activo)
0.2 mA
1 MHz
(1.8 V)
Consumo a
25ºC
(Modo activo)
500 μA
1 MHz
(1.8 V)
Outros
PWM
Outros
PWM
Outros
PWM
I2C I2C I2C
SPI SPI SPI
RS232 RS232 RS232
 Existe claramente uma diferença em termos de
memória disponível (SRAM, Flash e EEPROM);
 O ATmega328 apresenta a mesma arquitectura do
ATmega168 mas com diferentes capacidades em
termos de quantidade de memória disponível;
 Consumo energético do ATmega1280 é inferior ao do
ATmega328 nas mesmas condições de
funcionamento;
 Todos os modelos apresentados possuem a mesma
resolução no seu conversor A/D.
ATmega168/328/1280
Algumas características (Cont.)
ATmega168/328
ATmega1280
Arduino Duemilinove vs Mega
Arduino Duemilinove Arduino Mega
Microcontrolador Atmega168/328 Microcontrolador ATmega1280
Tensão de
operação
5V
Tensão de
operação
5V
Tensão de entrada
(limites)
6-20V
Tensão de entrada
(limites)
6-20V
Pinos de I/O
digital
14
Pinos de I/O
digital
54
Pinos analógico 6 Pinos analógico 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 diferença clara em termos de número de
pinos analógicos e digitais disponíveis, com vantagem
para o Arduino Mega;
 O Arduino Mega apresenta maiores dimensões que o
Duemilinove, o que dependendo da aplicação pode
um factor importante;
 Funcionam ambos com as mesmas tensões de
alimentação;
 Mas não podemos esquecer que o ATmega1280
(Arduino Mega) apresenta uma maior quantidade de
memória disponível (EEPROM, SRAM e Flash).
Arduino Duemilinove vs Mega
Atmega168/328
Análise ao seu pinout vs Arduino
Arduino Duemilinove
Pinos digitais
Pinos analógicos
Botão de
reset
Power
led
FTDI
Referência
Analógica
Microcontrolador
Cristal
Alimentação
(Standalone)
Reset
Pinos alimentação
Arduino Mega
Pinos
digitais
Referencia
Analógica
Pinos alimentação
Reset
FTDI
Botão de
reset
ICSP
Microcontrolador
Pinos analógicos
Pinos digitais (PWM) Pinos de comunicação
Cristal
Software
Uma abordagem à sua utilização
 Disponível 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
programação de alto nível C (Basicamente é C…..);
 Enorme simplicidade de utilização, devido ao
bootloader previamente gravado no microcontrolador.
Software de desenvolvimento
Algumas características
Software de desenvolvimento
Compilar
Parar
Compilar
Novo
Abrir
Upload
Leitura
porta série
 Possibilita também a leitura e envio de dados
utilizando a porta série
Leitura da porta série
(Software Arduino)
Seleccionar a Baud rate
Visualizar
dados
recebidos
Envio de
dados
Ciclo de desenvolvimento
Editar Compilar Uploading Executar
Estrutura e Sintaxe
Instruções e estrutura do código a utilizar
//Declaração de bibliotecas
#include <Client.h>
#include <Ethernet.h>
#include <Server.h>
//Declaração de variáveis globais
int i=0;
float x=5.67;
void setup() {
//Instrução 1
//Instrução 2
}
void loop() {
//Instrução 3
//Instrução 4
}
Estrutura do sketch
Declaração de bibliotecas
Declaração de variáveis globais
Função setup
Função loop
Obrigatoriamente do
tipo - void
Funções Importantes
 A função void setup() é apenas executada uma vez,
sendo utilizada para:
 Inicialização de variáveis;
 Inicialização de da utilização de bibliotecas;
 Definição dos pinos a utilizar;
 Início do uso da comunicação série.
 A função void loop() é uma função executada em
loop. Apenas outras funções, cuja chamada é feita ao
executar esta função, serão executadas.
Funções Analógicas e Digitais
//Definição do pino “Número do pino” como “INPUT” ou “OUTPUT”
pinMode(Número do Pino, Modo);
EX: pinMode(13, OUTPUT);
//Definição do pino “Número do pino” como “HIGH” ou “LOW”
digitalWrite(Número do Pino, Modo);
EX: digitalWrite(13, OUTPUT);
//Permite a leitura do valor digital presente no “Número do pino”
Variável do tipo integer = digitalRead(Número do Pino);
EX: leitura = digitalRead(5);
// Permite a leitura do valor analógico presente no “Número do pino”
Variável do tipo integer = analogRead(Número do Pino);
EX: leitura = analogRead(2);
//Permite a criação de um pulso PWM com o duty cicle definido pelo “valor”
analogWrite(Número do Pino, valor);
EX: analogWrite(11,255);
PWM – Pulse Width Modulation
PWM – Pulse Width Modulation
 Podemos então concluir que a tensão média Vdc é
directamente proporcional ao duty cicle do sinal PWM.
Ciclo if….else….
//Ciclo que é utilizado para descrever uma condição
If(condição){
Instrução 1;
Instrução 2;
}
else{
Instrução 3;
Instrução 4;
}
A condição referida anteriormente tem de respeitar as condições descritas na
tabela acima. No caso descrito em cima se a condição se verificar o instrução 1
e 2 é executada, caso contrário são executadas a instrução 3 e 4.
Ciclo for
//Ciclo que é utilizado quando se pretende executar um determinado conjunto
de instruções um certo número de vezes
for( inicialização; condição; Incremento a efectuar){
Instrução 1;
Instrução 2;
(……)
}
A condição referida anteriormente tem de respeitar as condições descritas na
tabela acima. A inicialização da variável apenas é efectuada no inicio do ciclo,
sendo a cada execução do ciclo efectuado o respectivo incremento na variável
de controlo do ciclo.
Ciclo switch / case
//Ciclo que é normalmente utilizado para descrever uma lista de casos
possíveis para uma determinada variável
switch(variável){
case 1:
Instrução a executar quando a variável for 1 (variável == 1)
break;
case 2:
Instrução a executar quando a variável for 1 (variável == 2)
break;
(……)
default:
Conjunto de instruções a executar se nenhuma das condições for verificada. A
utilização desta condição é opcional.
break;
}
Ciclo while
//Ciclo que é utilizado quando se pretende executar um determinado conjunto
de instruções um certo número de vezes
while(condição){
Instrução 1;
Instrução 2;
}
Ciclo do…..while
//Ciclo bastante semelhante ao ciclo while mas a condição apenas é testada no
fim do ciclo, sendo sempre executado o ciclo pelo menos uma vez
do{
Instrução 1;
Instrução 2;
(……)
while(condição);
Exemplos
Aplicação do exposto anteriormente a casos práticos
Exercício 1
 Faça com que um led acenda e apague com uma
frequência de 2 Hz. //Declaração de variáveis globais
int ledpin=13;
void setup() {
pinMode(ledPin,OUTPUT);
}
void loop() {
digitalWrite(ledPin,HIGH);
Delay(500);
digitalWrite(ledPin,LOW);
Delay(500);
}
Exercício 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).
Exercício 2 - Resolução
//Declaração de variáveis 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);
}
Exercício 3
 Recorrendo a leituras sucessivas ao valor de saída de
um simples potenciómetro faça um regulador de
luminosidade para o nosso tão famoso led.
Exercício 3 - Resolução
//Declaração de variáveis 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);
}
Exercício 4
 Obtenha o valor, em tempo real, da variável utilizada
para controlar a luminosidade do led.
Exercício 4 - Resolução
//Declaração de variáveis 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

Mais conteúdo relacionado

Mais procurados

Robotics and Arduino (Arduino UNO)
Robotics and Arduino (Arduino UNO)Robotics and Arduino (Arduino UNO)
Robotics and Arduino (Arduino UNO)Dragos Ionita
 
Original Mosfet F3205S 3205 IRF3205S IRF3205 55V 110A D2Pak New
Original Mosfet F3205S 3205 IRF3205S IRF3205 55V 110A D2Pak NewOriginal Mosfet F3205S 3205 IRF3205S IRF3205 55V 110A D2Pak New
Original Mosfet F3205S 3205 IRF3205S IRF3205 55V 110A D2Pak NewAUTHELECTRONIC
 
Raspberrypi best ppt
Raspberrypi best ppt Raspberrypi best ppt
Raspberrypi best ppt SOMRAJ GAUTAM
 
Tipler física - vol 2
Tipler   física - vol 2Tipler   física - vol 2
Tipler física - vol 2UNILAGO
 
LED CUBE PROJECT.pptx
LED CUBE PROJECT.pptxLED CUBE PROJECT.pptx
LED CUBE PROJECT.pptxromairshad1
 
Sensor Lecture Interfacing
 Sensor Lecture Interfacing Sensor Lecture Interfacing
Sensor Lecture Interfacingutpal sarkar
 
Introduction to Arduino Hardware and Programming
Introduction to Arduino Hardware and ProgrammingIntroduction to Arduino Hardware and Programming
Introduction to Arduino Hardware and ProgrammingEmmanuel Obot
 
ESP8266 and IOT
ESP8266 and IOTESP8266 and IOT
ESP8266 and IOTdega1999
 
IOTC08 The Arduino Platform
IOTC08 The Arduino PlatformIOTC08 The Arduino Platform
IOTC08 The Arduino PlatformEoin Brazil
 
Motorola solutions ap7181 access point installation guide wi ng 5.5 version...
Motorola solutions ap7181 access point installation guide   wi ng 5.5 version...Motorola solutions ap7181 access point installation guide   wi ng 5.5 version...
Motorola solutions ap7181 access point installation guide wi ng 5.5 version...Advantec Distribution
 
Hmi vfd modbus communication
Hmi  vfd modbus communication Hmi  vfd modbus communication
Hmi vfd modbus communication Pankaj Pundir
 
Instalaciones 4º ESO
Instalaciones 4º ESOInstalaciones 4º ESO
Instalaciones 4º ESOrlopez33
 
Speed controller for fan
Speed controller for fanSpeed controller for fan
Speed controller for fanRifatkhasru009
 
Temperature sensor with raspberry pi
Temperature sensor with raspberry piTemperature sensor with raspberry pi
Temperature sensor with raspberry piSantosh Kumar Kar
 
Arduino Platform with C programming.
Arduino Platform with C programming.Arduino Platform with C programming.
Arduino Platform with C programming.Govind Jha
 

Mais procurados (20)

Domotics
DomoticsDomotics
Domotics
 
Robotics and Arduino (Arduino UNO)
Robotics and Arduino (Arduino UNO)Robotics and Arduino (Arduino UNO)
Robotics and Arduino (Arduino UNO)
 
Original Mosfet F3205S 3205 IRF3205S IRF3205 55V 110A D2Pak New
Original Mosfet F3205S 3205 IRF3205S IRF3205 55V 110A D2Pak NewOriginal Mosfet F3205S 3205 IRF3205S IRF3205 55V 110A D2Pak New
Original Mosfet F3205S 3205 IRF3205S IRF3205 55V 110A D2Pak New
 
Introduction to Arduino
Introduction to ArduinoIntroduction to Arduino
Introduction to Arduino
 
Raspberrypi best ppt
Raspberrypi best ppt Raspberrypi best ppt
Raspberrypi best ppt
 
Tipler física - vol 2
Tipler   física - vol 2Tipler   física - vol 2
Tipler física - vol 2
 
LED CUBE PROJECT.pptx
LED CUBE PROJECT.pptxLED CUBE PROJECT.pptx
LED CUBE PROJECT.pptx
 
Arduino
ArduinoArduino
Arduino
 
Sensor Lecture Interfacing
 Sensor Lecture Interfacing Sensor Lecture Interfacing
Sensor Lecture Interfacing
 
Introduction to Arduino Hardware and Programming
Introduction to Arduino Hardware and ProgrammingIntroduction to Arduino Hardware and Programming
Introduction to Arduino Hardware and Programming
 
ESP8266 and IOT
ESP8266 and IOTESP8266 and IOT
ESP8266 and IOT
 
IOTC08 The Arduino Platform
IOTC08 The Arduino PlatformIOTC08 The Arduino Platform
IOTC08 The Arduino Platform
 
Motorola solutions ap7181 access point installation guide wi ng 5.5 version...
Motorola solutions ap7181 access point installation guide   wi ng 5.5 version...Motorola solutions ap7181 access point installation guide   wi ng 5.5 version...
Motorola solutions ap7181 access point installation guide wi ng 5.5 version...
 
Hmi vfd modbus communication
Hmi  vfd modbus communication Hmi  vfd modbus communication
Hmi vfd modbus communication
 
Instalaciones 4º ESO
Instalaciones 4º ESOInstalaciones 4º ESO
Instalaciones 4º ESO
 
Arduino
ArduinoArduino
Arduino
 
Speed controller for fan
Speed controller for fanSpeed controller for fan
Speed controller for fan
 
Temperature sensor with raspberry pi
Temperature sensor with raspberry piTemperature sensor with raspberry pi
Temperature sensor with raspberry pi
 
Arduino Platform with C programming.
Arduino Platform with C programming.Arduino Platform with C programming.
Arduino Platform with C programming.
 
Raspberry pi
Raspberry piRaspberry pi
Raspberry pi
 

Destaque

Mini-curso de Introdução a Eletrônica com Arduino
Mini-curso de Introdução a Eletrônica com ArduinoMini-curso de Introdução a Eletrônica com Arduino
Mini-curso de Introdução a Eletrônica com ArduinoFelipe Martins
 
Apostila para Programar Arduino
Apostila para Programar ArduinoApostila para Programar Arduino
Apostila para Programar ArduinoIsvaldo Souza
 
Programação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoProgramação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoEvânio Moreira
 
C.E.S.A.R Introducao ao Arduino
C.E.S.A.R Introducao ao ArduinoC.E.S.A.R Introducao ao Arduino
C.E.S.A.R Introducao ao ArduinoTiago Barros
 
Arduino - Dicas & Truques
Arduino - Dicas & TruquesArduino - Dicas & Truques
Arduino - Dicas & TruquesÁlvaro Justen
 
Palestra: Robótica com Arduino
Palestra: Robótica com ArduinoPalestra: Robótica com Arduino
Palestra: Robótica com ArduinoFelipe Martins
 
Programação em C para Arduino
Programação em C para ArduinoProgramação em C para Arduino
Programação em C para ArduinoRodrigo Rosa
 
Curso de Arduino Completo
Curso de Arduino CompletoCurso de Arduino Completo
Curso de Arduino CompletoTiago Barros
 
Programação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoProgramação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoFátima Bernardes
 
Android e Arduino para automação residencial
Android e Arduino para automação residencialAndroid e Arduino para automação residencial
Android e Arduino para automação residencialÁlvaro Justen
 
Segurança Física de Servidores e Redes
Segurança Física de Servidores e RedesSegurança Física de Servidores e Redes
Segurança Física de Servidores e Redeselliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao ArduinoPeslPinguim
 
Literatura infantil recurso_metodologico_ensino_aprendizagem_matematica
Literatura infantil recurso_metodologico_ensino_aprendizagem_matematicaLiteratura infantil recurso_metodologico_ensino_aprendizagem_matematica
Literatura infantil recurso_metodologico_ensino_aprendizagem_matematicaandre luis
 

Destaque (20)

Curso de arduino
Curso de arduinoCurso de arduino
Curso de arduino
 
Mini-curso de Introdução a Eletrônica com Arduino
Mini-curso de Introdução a Eletrônica com ArduinoMini-curso de Introdução a Eletrônica com Arduino
Mini-curso de Introdução a Eletrônica com Arduino
 
Apostila para Programar Arduino
Apostila para Programar ArduinoApostila para Programar Arduino
Apostila para Programar Arduino
 
Programação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoProgramação em-arduino-módulo-básico
Programação em-arduino-módulo-básico
 
Arduino day-2015-v1
Arduino day-2015-v1Arduino day-2015-v1
Arduino day-2015-v1
 
C.E.S.A.R Introducao ao Arduino
C.E.S.A.R Introducao ao ArduinoC.E.S.A.R Introducao ao Arduino
C.E.S.A.R Introducao ao Arduino
 
Arduino - Dicas & Truques
Arduino - Dicas & TruquesArduino - Dicas & Truques
Arduino - Dicas & Truques
 
Palestra: Robótica com Arduino
Palestra: Robótica com ArduinoPalestra: Robótica com Arduino
Palestra: Robótica com Arduino
 
Programação em C para Arduino
Programação em C para ArduinoProgramação em C para Arduino
Programação em C para Arduino
 
Curso de Arduino Completo
Curso de Arduino CompletoCurso de Arduino Completo
Curso de Arduino Completo
 
Programação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoProgramação em-arduino-módulo-básico
Programação em-arduino-módulo-básico
 
Android e Arduino para automação residencial
Android e Arduino para automação residencialAndroid e Arduino para automação residencial
Android e Arduino para automação residencial
 
Week plan
Week planWeek plan
Week plan
 
O que é arduino?
O que é arduino?O que é arduino?
O que é arduino?
 
Mini Curso Introdutório ao Arduino
Mini Curso Introdutório ao ArduinoMini Curso Introdutório ao Arduino
Mini Curso Introdutório ao Arduino
 
Arduino Básico
Arduino BásicoArduino Básico
Arduino Básico
 
Segurança Física de Servidores e Redes
Segurança Física de Servidores e RedesSegurança Física de Servidores e Redes
Segurança Física de Servidores e Redes
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Introdução a plataforma arduino
Introdução a plataforma arduinoIntrodução a plataforma arduino
Introdução a plataforma arduino
 
Literatura infantil recurso_metodologico_ensino_aprendizagem_matematica
Literatura infantil recurso_metodologico_ensino_aprendizagem_matematicaLiteratura infantil recurso_metodologico_ensino_aprendizagem_matematica
Literatura infantil recurso_metodologico_ensino_aprendizagem_matematica
 

Semelhante a Introdução ao Arduino

Introdução-à-Programação-Embarcada-com-Arduino.pdf
Introdução-à-Programação-Embarcada-com-Arduino.pdfIntrodução-à-Programação-Embarcada-com-Arduino.pdf
Introdução-à-Programação-Embarcada-com-Arduino.pdfCliverRaimundo2
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerGlobalcode
 
Workshop iniciação à robótica - Farrusco
Workshop iniciação à robótica - FarruscoWorkshop iniciação à robótica - Farrusco
Workshop iniciação à robótica - FarruscoArticacc, Lda
 
V2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduinoV2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduinoSamir Siqueira
 
Aula básica Arduino
Aula básica Arduino Aula básica Arduino
Aula básica Arduino Edgley Xavier
 
Mini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosMini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosSuzana Viana Mota
 
Introdução ao arduino palestra
Introdução ao arduino palestraIntrodução ao arduino palestra
Introdução ao arduino palestraVitor Ferreira
 
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Cláudio Alves
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicampFrancisco Fambrini
 
Programação básica de microcontroladores
Programação básica de microcontroladoresProgramação básica de microcontroladores
Programação básica de microcontroladoresDanilo Morais Pagano
 
Ufes erus minicurso arduino
Ufes erus minicurso arduinoUfes erus minicurso arduino
Ufes erus minicurso arduinotamarasalvatori
 
EL66J_Slides_arduino.pdf
EL66J_Slides_arduino.pdfEL66J_Slides_arduino.pdf
EL66J_Slides_arduino.pdfssuser56423c1
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptxfmtpereira
 
Minicurso Arduino com Projetos Praticos - Jotacisio Oliveira
Minicurso Arduino com Projetos Praticos - Jotacisio OliveiraMinicurso Arduino com Projetos Praticos - Jotacisio Oliveira
Minicurso Arduino com Projetos Praticos - Jotacisio OliveiraPotiLivre Sobrenome
 

Semelhante a Introdução ao Arduino (20)

Introdução-à-Programação-Embarcada-com-Arduino.pdf
Introdução-à-Programação-Embarcada-com-Arduino.pdfIntrodução-à-Programação-Embarcada-com-Arduino.pdf
Introdução-à-Programação-Embarcada-com-Arduino.pdf
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius Senger
 
Workshop iniciação à robótica - Farrusco
Workshop iniciação à robótica - FarruscoWorkshop iniciação à robótica - Farrusco
Workshop iniciação à robótica - Farrusco
 
V2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduinoV2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduino
 
Aula básica Arduino
Aula básica Arduino Aula básica Arduino
Aula básica Arduino
 
Mini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosMini Curso Sistemas Embarcados
Mini Curso Sistemas Embarcados
 
Introdução ao arduino palestra
Introdução ao arduino palestraIntrodução ao arduino palestra
Introdução ao arduino palestra
 
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicamp
 
Oficina Arduino
Oficina ArduinoOficina Arduino
Oficina Arduino
 
Minicurso de Arduino Básico
Minicurso de Arduino BásicoMinicurso de Arduino Básico
Minicurso de Arduino Básico
 
Programação básica de microcontroladores
Programação básica de microcontroladoresProgramação básica de microcontroladores
Programação básica de microcontroladores
 
Ufes erus minicurso arduino
Ufes erus minicurso arduinoUfes erus minicurso arduino
Ufes erus minicurso arduino
 
Erus minicurso arduino
Erus minicurso arduinoErus minicurso arduino
Erus minicurso arduino
 
Treinamento arduino (1).pptx
Treinamento arduino (1).pptxTreinamento arduino (1).pptx
Treinamento arduino (1).pptx
 
3 aula do curso de automação - Arduino
3 aula do curso de automação - Arduino3 aula do curso de automação - Arduino
3 aula do curso de automação - Arduino
 
EL66J_Slides_arduino.pdf
EL66J_Slides_arduino.pdfEL66J_Slides_arduino.pdf
EL66J_Slides_arduino.pdf
 
Cartilhado arduino ed1
Cartilhado arduino ed1Cartilhado arduino ed1
Cartilhado arduino ed1
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptx
 
Minicurso Arduino com Projetos Praticos - Jotacisio Oliveira
Minicurso Arduino com Projetos Praticos - Jotacisio OliveiraMinicurso Arduino com Projetos Praticos - Jotacisio Oliveira
Minicurso Arduino com Projetos Praticos - Jotacisio Oliveira
 

Mais de elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 
From Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn IntroductionFrom Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn Introductionelliando dias
 

Mais de elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 
From Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn IntroductionFrom Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn Introduction
 

Introdução ao Arduino

  • 1. Introdução ao Arduino Pessanha Santos ASPOF EN-AEL
  • 2. Programa 1. Introdução à plataforma de desenvolvimento Arduino 2. Análise à sua constituição 3. Software de desenvolvimento Arduino 4. Estrutura e Sintaxe do seu código 5. Estudo de alguns exemplos
  • 4. O que é o ARDUINO?  Plataforma de desenvolvimento  Simples placa de circuito impresso com um microcontrolador ATMega da ATMEL (mas vamos já ver exemplos!?!??).  Características principais  Simplicidade de utilização (Programação, utilização…);  Cross-platform;  Baixo custo;  Open-Source.  A possibilidade de actuar no Mundo que nos rodeia.
  • 5. Arduino o que consigo fazer?  Ler valores provenientes de sensores  Acelerómetros, LDR, ultra-sons, entre muitos outros.  Actuar no Mundo exterior  Leds, Motores, Displays(LCD), entre muitos outros.  Capacidade de efectuar protótipos rapidamente e com grande simplicidade.  E muito mais……..
  • 6. O que é o Arduino? Exemplos ?  Algumas apresentações possíveis…. Duemilinove Mega LilyPadMini Nano
  • 9. Ou “ainda” mais simplesmente…
  • 10. O que é o Arduino?  Software……
  • 11. Vantagens…  Claramente ser uma ferramenta Open-Source (Software e Hardware);  Tem uma enorme comunidade de seguidores por todo o Mundo (Permite uma constante actualização e inovação);  Pode operar sem a presença de um computador (standalone);  Possibilidade de expandir a sua capacidade através da utilização de shields.
  • 12. O que são shields? Exemplos ?  Algumas apresentações possíveis…. InputshieldZigbee Mas existem muitas mais…. Ethernet
  • 13. Bibliografia (Alguns exemplos...)  Livros de texto Making Things Talk, Tom Igoe, O´REILLY, 2007. Getting started with Arduino, Massimo Banzi, O´REILLY, 2007. Programming Interactivity, Joshua Noble, O´REILLY, 2009.  Outros…  Site oficial (www.arduino.cc) ;  Alguns Fóruns (Lusorobótica, Portugal-a-Programar).
  • 14. Hardware Análise à sua constituição
  • 15. 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 três modelos de microcontrolador: ATmega168, ATmega328 e ATmega1280
  • 16. ATmega168 (PDIP) Microcontroladores utilizados (Exemplos de apresentação) ATmega328 (PDIP) ATmega1280 (TQFP)
  • 17. ATmega168/328/1280 Algumas características 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 máximo 20 MHz Clock máximo 20 MHz Clock máximo 16 MHz ADC 10 bit ADC 10 bit ADC 10 bit Consumo a 25ºC (Modo activo) 250 μA 1 MHz (1.8 V) Consumo a 25ºC (Modo activo) 0.2 mA 1 MHz (1.8 V) Consumo a 25ºC (Modo activo) 500 μA 1 MHz (1.8 V) Outros PWM Outros PWM Outros PWM I2C I2C I2C SPI SPI SPI RS232 RS232 RS232
  • 18.  Existe claramente uma diferença em termos de memória disponível (SRAM, Flash e EEPROM);  O ATmega328 apresenta a mesma arquitectura do ATmega168 mas com diferentes capacidades em termos de quantidade de memória disponível;  Consumo energético do ATmega1280 é inferior ao do ATmega328 nas mesmas condições de funcionamento;  Todos os modelos apresentados possuem a mesma resolução no seu conversor A/D. ATmega168/328/1280 Algumas características (Cont.)
  • 21. Arduino Duemilinove vs Mega Arduino Duemilinove Arduino Mega Microcontrolador Atmega168/328 Microcontrolador ATmega1280 Tensão de operação 5V Tensão de operação 5V Tensão de entrada (limites) 6-20V Tensão de entrada (limites) 6-20V Pinos de I/O digital 14 Pinos de I/O digital 54 Pinos analógico 6 Pinos analógico 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
  • 22.  Existe uma diferença clara em termos de número de pinos analógicos e digitais disponíveis, com vantagem para o Arduino Mega;  O Arduino Mega apresenta maiores dimensões que o Duemilinove, o que dependendo da aplicação pode um factor importante;  Funcionam ambos com as mesmas tensões de alimentação;  Mas não podemos esquecer que o ATmega1280 (Arduino Mega) apresenta uma maior quantidade de memória disponível (EEPROM, SRAM e Flash). Arduino Duemilinove vs Mega
  • 23. Atmega168/328 Análise ao seu pinout vs Arduino
  • 24. Arduino Duemilinove Pinos digitais Pinos analógicos Botão de reset Power led FTDI Referência Analógica Microcontrolador Cristal Alimentação (Standalone) Reset Pinos alimentação
  • 25. Arduino Mega Pinos digitais Referencia Analógica Pinos alimentação Reset FTDI Botão de reset ICSP Microcontrolador Pinos analógicos Pinos digitais (PWM) Pinos de comunicação Cristal
  • 26. Software Uma abordagem à sua utilização
  • 27.  Disponível 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 programação de alto nível C (Basicamente é C…..);  Enorme simplicidade de utilização, devido ao bootloader previamente gravado no microcontrolador. Software de desenvolvimento Algumas características
  • 29.  Possibilita também a leitura e envio de dados utilizando a porta série Leitura da porta série (Software Arduino) Seleccionar a Baud rate Visualizar dados recebidos Envio de dados
  • 30. Ciclo de desenvolvimento Editar Compilar Uploading Executar
  • 31. Estrutura e Sintaxe Instruções e estrutura do código a utilizar
  • 32. //Declaração de bibliotecas #include <Client.h> #include <Ethernet.h> #include <Server.h> //Declaração de variáveis globais int i=0; float x=5.67; void setup() { //Instrução 1 //Instrução 2 } void loop() { //Instrução 3 //Instrução 4 } Estrutura do sketch Declaração de bibliotecas Declaração de variáveis globais Função setup Função loop Obrigatoriamente do tipo - void
  • 33. Funções Importantes  A função void setup() é apenas executada uma vez, sendo utilizada para:  Inicialização de variáveis;  Inicialização de da utilização de bibliotecas;  Definição dos pinos a utilizar;  Início do uso da comunicação série.  A função void loop() é uma função executada em loop. Apenas outras funções, cuja chamada é feita ao executar esta função, serão executadas.
  • 34. Funções Analógicas e Digitais //Definição do pino “Número do pino” como “INPUT” ou “OUTPUT” pinMode(Número do Pino, Modo); EX: pinMode(13, OUTPUT); //Definição do pino “Número do pino” como “HIGH” ou “LOW” digitalWrite(Número do Pino, Modo); EX: digitalWrite(13, OUTPUT); //Permite a leitura do valor digital presente no “Número do pino” Variável do tipo integer = digitalRead(Número do Pino); EX: leitura = digitalRead(5); // Permite a leitura do valor analógico presente no “Número do pino” Variável do tipo integer = analogRead(Número do Pino); EX: leitura = analogRead(2); //Permite a criação de um pulso PWM com o duty cicle definido pelo “valor” analogWrite(Número do Pino, valor); EX: analogWrite(11,255);
  • 35. PWM – Pulse Width Modulation
  • 36. PWM – Pulse Width Modulation  Podemos então concluir que a tensão média Vdc é directamente proporcional ao duty cicle do sinal PWM.
  • 37. Ciclo if….else…. //Ciclo que é utilizado para descrever uma condição If(condição){ Instrução 1; Instrução 2; } else{ Instrução 3; Instrução 4; } A condição referida anteriormente tem de respeitar as condições descritas na tabela acima. No caso descrito em cima se a condição se verificar o instrução 1 e 2 é executada, caso contrário são executadas a instrução 3 e 4.
  • 38. Ciclo for //Ciclo que é utilizado quando se pretende executar um determinado conjunto de instruções um certo número de vezes for( inicialização; condição; Incremento a efectuar){ Instrução 1; Instrução 2; (……) } A condição referida anteriormente tem de respeitar as condições descritas na tabela acima. A inicialização da variável apenas é efectuada no inicio do ciclo, sendo a cada execução do ciclo efectuado o respectivo incremento na variável de controlo do ciclo.
  • 39. Ciclo switch / case //Ciclo que é normalmente utilizado para descrever uma lista de casos possíveis para uma determinada variável switch(variável){ case 1: Instrução a executar quando a variável for 1 (variável == 1) break; case 2: Instrução a executar quando a variável for 1 (variável == 2) break; (……) default: Conjunto de instruções a executar se nenhuma das condições for verificada. A utilização desta condição é opcional. break; }
  • 40. Ciclo while //Ciclo que é utilizado quando se pretende executar um determinado conjunto de instruções um certo número de vezes while(condição){ Instrução 1; Instrução 2; } Ciclo do…..while //Ciclo bastante semelhante ao ciclo while mas a condição apenas é testada no fim do ciclo, sendo sempre executado o ciclo pelo menos uma vez do{ Instrução 1; Instrução 2; (……) while(condição);
  • 41. Exemplos Aplicação do exposto anteriormente a casos práticos
  • 42. Exercício 1  Faça com que um led acenda e apague com uma frequência de 2 Hz. //Declaração de variáveis globais int ledpin=13; void setup() { pinMode(ledPin,OUTPUT); } void loop() { digitalWrite(ledPin,HIGH); Delay(500); digitalWrite(ledPin,LOW); Delay(500); }
  • 43. Exercício 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).
  • 44. Exercício 2 - Resolução //Declaração de variáveis 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); }
  • 45. Exercício 3  Recorrendo a leituras sucessivas ao valor de saída de um simples potenciómetro faça um regulador de luminosidade para o nosso tão famoso led.
  • 46. Exercício 3 - Resolução //Declaração de variáveis 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); }
  • 47. Exercício 4  Obtenha o valor, em tempo real, da variável utilizada para controlar a luminosidade do led.
  • 48. Exercício 4 - Resolução //Declaração de variáveis 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); }
  • 49. FIM