Leonardo Mauro P. Moraes - UFMS/CPPP
Arduino
Introdução aos Componentes Básicos
Leonardo Mauro P. Moraes
Universidade Federal de Mato Grosso do Sul - UFMS Ponta Porã - MS
Leonardo Mauro P. Moraes - UFMS/CPPP
1 Introdução
2 Arduino
3 Componentes
Leonardo Mauro P. Moraes - UFMS/CPPP Introdução Arduino 1 Introdução Arduino Versões Segurança 2 Arduino 3 Componentes 4 Encerramento
Leonardo Mauro P. Moraes - UFMS/CPPP Introdução
Arduino
O que é o Arduino?
Arduino é uma plataforma de prototipagem eletrônica de hardware livre, com suporte de entrada/saída embutido e uma linguagem de programação padrão, a qual tem origem em Wiring (essencialmente C/C++).
Arduino é uma ferramenta para criar computadores que podem sentir e controlar mais o mundo que seu PC. Ele é uma plataforma física de computação de código aberto baseado numa simples placa microcontroladora, e um ambiente de desenvolvimento para escrever o código da placa.
Leonardo Mauro P. Moraes - UFMS/CPPP Introdução
Arduino
Exemplos
Leonardo Mauro P. Moraes - UFMS/CPPP Introdução Versões
Versões Famosas
(a)Mega (b)Uno (c) NanoLeonardo Mauro P. Moraes - UFMS/CPPP Introdução Versões
Versões Famosas
(a)Due (b)Intel GalileoLeonardo Mauro P. Moraes - UFMS/CPPP Introdução
Versões
Versões Famosas
(a)Flora (b)Lilypad
Leonardo Mauro P. Moraes - UFMS/CPPP Introdução
Segurança
Segurança: Importante!
Não utilize "fios"totalmente desencapados;
Observe a utilização de resistores em alguns componentes; Não conecte em fontes de alta voltagem;
Desconecte do computador ao mexer no circuito; Evite conectar algo sem saber o que está fazendo.
Leonardo Mauro P. Moraes - UFMS/CPPP Arduino Placa 1 Introdução 2 Arduino Placa Programação 3 Componentes 4 Encerramento
Leonardo Mauro P. Moraes - UFMS/CPPP Arduino Placa
Principais Portas
GND - Pino Tera; 5V e 3.3V - Pino Energia; 0 a 13 - Portas Digitais; A0 e A5 - Portas Analogicas.Leonardo Mauro P. Moraes - UFMS/CPPP Arduino
Programação
"Hello World"
1. Instalar a IDE;
2. Plugar e instalar o driver do Arduino;
(Caso não dê para instalar: Atualizar o driver em Gerenciador de Dispositivos);
3. Ferramentas Õ Placa Õ Arduino UNO;
4. Ferramentas Õ Porta Õ (Selecionar Porta);
Leonardo Mauro P. Moraes - UFMS/CPPP Arduino
Programação
"Hello World"
Setup():
Executado uma única vez, é a inicialização do programa;
Loop():
Função principal, realiza repetições enquanto o Arduino estiver ligado.
Leonardo Mauro P. Moraes - UFMS/CPPP Arduino Programação
"Hello World"
Setup() v o i d s e t u p( ) { // S e t a p o r t a d i g i t a l 13 como s a i d a pinMode( 1 3 , OUTPUT) ; } Loop() v o i d l o o p( ) { // Exemplo p a r a p i s c a r o LED d i g i t a l W r i t e( 1 3 , HIGH) ; d e l a y( 1 0 0 0 ) ; d i g i t a l W r i t e( 1 3 , LOW) ; d e l a y( 1 0 0 0 ) ; }Leonardo Mauro P. Moraes - UFMS/CPPP Arduino Programação
Conceitos
Declaração: int Led = 13; Case-sensitive. Setup: pinMode(Led, OUTPUT); OUTPUT ou INPUT ;Define o modo de operação do pino.
Declaração
// D e c l a r a c a o de v a r i a v e l
i n t Led = 1 3 ;
v o i d s e t u p( ) {
pinMode(Led, OUTPUT) ; }
Leonardo Mauro P. Moraes - UFMS/CPPP Arduino Programação
Conceitos
Loop: digitalWrite(Led, HIGH); HIGH = Ligar (1); LOW = Desligar (0); delay(200);Esta função faz com que o processo fique parado por 200 ms; Declaração v o i d l o o p( ) { // Exemplo p a r a p i s c a r o LED, // com v a r i a v e l d i g i t a l W r i t e(Led, HIGH) ; d e l a y( 2 0 0 ) ; d i g i t a l W r i t e(Led, LOW) ; d e l a y( 2 0 0 ) ; }
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes Base 1 Introdução 2 Arduino 3 Componentes Base Buzzer
Pulse Width Modulation Potenciômetro Mensagem Serial Sensor de Luminosidade Push Button Sensor de Temperatura 4 Encerramento
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes
Base
Introdução
Componentes Base:
Componentes, normalmente, necessários para a realização de projetos;
Protoboard; Jumper; Led; Resistores;
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes
Base
Protoboard
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes
Base
Jumper
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes
Base
Protoboard + Jumper
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes
Base
Led
Figura:Led: Lampadas coloridas de baixa voltagem.
Importante: A "perna"maior do Led sempre será
conectada ao resistor;
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes
Base
Resistores
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes
Base
Resistores
Finalidade: diminuir a tensão
entre os terminais; Medido em OHMs;
Fórmula: V = R * I;
V: voltagem/tensão (Volts - V);
R: resistência (OHMs -Ω);
I: Intensidade (Amperes - A).
Problema
Um aluno precisa ligar um led ao Arduino. Sabendo que o Arduino Trabalha em 5 Volts e o Led usa apenas 2 Volts numa corrente de 10 mA. Calcule a resistência que é necessária para o led acender sem queimar.
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes
Base
Resistores
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes Base
Projeto 1
Lembre-se: "Perna"menor do Led no GND; "Perna"maior do Led no resistor no pino 7. ProblemaUsando a porta 7 do Arduino, acenda um led durante 2 segundos e apague por 1/3 segundo.
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes Base
Projeto 1
Figura:Circuito. Código /∗ P r o j e t o 1 ∗/ i n t Led = 7 ; v o i d s e t u p( ) {pinMode(Led, OUTPUT) ; } v o i d l o o p( ) { d i g i t a l W r i t e(Led, HIGH) ; d e l a y( 2 0 0 0 ) ; d i g i t a l W r i t e(Led, LOW) ; d e l a y( 3 0 0 ) ; }
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes Base
Projeto 2
Problema Faça um semáforo:Tem 3 estados de luzes: apenas vermelho; apenas verde; ou a amarelo piscando.
O semáforo fica verde por 2 segundos;
O semáforo fica vermelhor por 4 segundos;
A luz amarela pisca 5 vezes antes de mudar para o verde, isso demora 2 segundos.
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes Base
Projeto 2
Código /∗ P r o j e t o 2 ∗/ i n t Vermelho = 3 ; i n t Amarelo = 4 ; i n t Verde = 5 ; v o i d s e t u p( ) {pinMode(Vermelho, OUTPUT) ; pinMode(Amarelo, OUTPUT) ; pinMode(Verde, OUTPUT) ; } v o i d l o o p( ) { i n t i; // Vermelho d i g i t a l W r i t e(Vermelho, HIGH) ; d i g i t a l W r i t e(Amarelo, LOW) ; d i g i t a l W r i t e(Verde, LOW) ; d e l a y( 4 0 0 0 ) ; // Amarelo d i g i t a l W r i t e(Vermelho, LOW) ; f o r(i=0; i<5; i++){ d i g i t a l W r i t e(Amarelo, HIGH) ; d e l a y( 2 0 0 ) ; d i g i t a l W r i t e(Amarelo, LOW) ; d e l a y( 2 0 0 ) ; } // Verde d i g i t a l W r i t e(Verde, HIGH) ; d e l a y( 2 0 0 0 ) ; }
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes
Buzzer
Buzzer
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes Buzzer
Projeto 3
Figura:Circuito. Problema Faça o Buzzer apitar durante 0.5 segundo de 1 em 1 segundo.Leonardo Mauro P. Moraes - UFMS/CPPP Componentes Buzzer
Projeto 3
Figura:Circuito. Código /∗ P r o j e t o 3 ∗/ i n t B u z z e r = 3 ; v o i d s e t u p( ) {pinMode(Buzzer, OUTPUT) ; } v o i d l o o p( ) { d i g i t a l W r i t e(Buzzer, HIGH) ; d e l a y( 5 0 0 ) ; d i g i t a l W r i t e(Buzzer, LOW) ; d e l a y( 1 0 0 0 ) ; }
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes
Pulse Width Modulation
Pulse Width Modulation - PWM
Significa Modulação por largura de pulso;
Liga e desliga a porta tão rapidamente que nossos olhos não conseguem enxergar;
Utilizado para controlar intensidade;
Há 6 saídas PWM no Arduino UNO; São as
portas que tem o antes do
número. Como fazer? PWM v o i d l o o p( ) { // p o r t a d i g i t a l 11 − 0% a n a l o g W r i t e( 1 1 , 0 ) ; // p o r t a d i g i t a l 11 − 25% a n a l o g W r i t e( 1 1 , 6 4 ) ; // p o r t a d i g i t a l 11 − 50% a n a l o g W r i t e( 1 1 , 1 2 7 ) ; // p o r t a d i g i t a l 11 − 75% a n a l o g W r i t e( 1 1 , 1 9 1 ) ; // p o r t a d i g i t a l 11 − 100% a n a l o g W r i t e( 1 1 , 2 5 5 ) ; }
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes
Pulse Width Modulation
Projeto 4
Problema:
Utilize uma das saídas PWM do Arduino para acender um led de forma dimerizada (de 0 a 100%), ida e volta. Como fazer? PWM v o i d l o o p( ) { // p o r t a d i g i t a l 11 − 0% a n a l o g W r i t e( 1 1 , 0 ) ; // p o r t a d i g i t a l 11 − 25% a n a l o g W r i t e( 1 1 , 6 4 ) ; // p o r t a d i g i t a l 11 − 50% a n a l o g W r i t e( 1 1 , 1 2 7 ) ; // p o r t a d i g i t a l 11 − 75% a n a l o g W r i t e( 1 1 , 1 9 1 ) ; // p o r t a d i g i t a l 11 − 100% a n a l o g W r i t e( 1 1 , 2 5 5 ) ; }
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes
Pulse Width Modulation
Projeto 4
Código
/∗ P r o j e t o 4 ∗/
i n t Led = 1 1 ;
v o i d s e t u p( ) {
pinMode(Led, OUTPUT) ; } v o i d l o o p( ) { i n t i; f o r(i=0; i<256; i++){ a n a l o g W r i t e(Led, i) ; } f o r(i=255; i>=0; i−−){ a n a l o g W r i t e(Led, i) ; } }
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes
Potenciômetro
Potenciômetro
Figura:Potenciômetro: componente eletrônico que possui resistência
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes Potenciômetro
Potenciômetro
Declaração: pinMode(pino, INPUT): Declara que o pino do potenciômetro é de entrada de dados;var = analogWrite(pino):
Faz a leitura analógica do potenciômetro e salva em armazenamento.
Como fazer? Potenciômetro /∗ P o t e n c i o m e t r o ∗/
i n t Pot = A0;
v o i d s e t u p( ) {
pinMode(Pot, INPUT) ; }
v o i d l o o p( ) {
i n t l e i t u r a;
l e i t u r a = a n a l o g R e a d(Pot) ; }
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes Potenciômetro
Projeto 5
Figura:Circuito. ProblemaFaça o led piscar mais rápido ou mais
devagar conforme o giro do
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes Potenciômetro
Projeto 5
Figura:Circuito. Código /∗ P r o j e t o 5 ∗/ i n t Pot = A0; i n t Led = 7 ; v o i d s e t u p( ) {pinMode(Pot, INPUT) ; pinMode(Led, OUTPUT) ; } v o i d l o o p( ) { i n t l e i t u r a = 3 ∗ a n a l o g R e a d(Pot) ; d i g i t a l W r i t e(Led, HIGH) ; d e l a y(l e i t u r a) ; d i g i t a l W r i t e(Led, LOW) ; d e l a y(l e i t u r a) ; }
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes Mensagem Serial
Mensagem Serial
Declaração: Serial.begin(9600): Configuração da taxa de transferência; Serial.println(msg): Transmite por serial a mensagem com quebra de linha;Serial.print(msg): Transmite por serial a mensagem sem quebra de linha.
Aplicação:
Basicamente um meio para transmitir mensagens
console, para o
computador;
Possui diversos canais para o uso de mais de um Arduino, simultaneamente;
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes
Mensagem Serial
Projeto 6
Como fazer? Mensagem Serial // S e t a s a i d a d a s mensagens v o i d s e t u p( ) { S e r i a l.b e g i n( 9 6 0 0 ) ; } v o i d l o o p( ) { i n t v a r = 5 ; S e r i a l.p r i n t(" Mensagem : ") ; S e r i a l.p r i n t l n(v a r) ; } Problema Leia o valor do potenciômetro e imprima no console (9600).
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes Mensagem Serial
Projeto 6
Código /∗ P r o j e t o 6 ∗/ i n t Pot = A0; v o i d s e t u p( ) { S e r i a l.b e g i n( 9 6 0 0 ) ; pinMode(Pot, INPUT) ; } v o i d l o o p( ) { i n t l e i t u r a = a n a l o g R e a d(Pot) ; S e r i a l.p r i n t(" P o t e n c i o m e t r o : ") ; S e r i a l.p r i n t l n(l e i t u r a) ; }Leonardo Mauro P. Moraes - UFMS/CPPP Componentes
Sensor de Luminosidade
Sensor de Luminosidade - LDR
Figura:Sensor de Luminosidade: componente eletrônico que realiza
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes Sensor de Luminosidade
Projeto 7
Figura:Circuito. Problema Leia o sensor de luminosidade e acenda um led, caso esteja baixo o valor.Leonardo Mauro P. Moraes - UFMS/CPPP Componentes Sensor de Luminosidade
Projeto 7
Figura:Circuito. Código // Lendo S e n s o r i n t Pot = A0; v o i d s e t u p( ) {pinMode(Pot, INPUT) ; }
v o i d l o o p( ) {
i n t l e i t u r a = a n a l o g R e a d(Pot) ;
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes Sensor de Luminosidade
Projeto 7
Código /∗ P r o j e t o 7 ∗/ i n t Pot = A0; i n t Led = 7 ; v o i d s e t u p( ) {pinMode(Pot, INPUT) ; pinMode(Led, OUTPUT) ; } v o i d l o o p( ) { i n t l e i t u r a = a n a l o g R e a d(Pot) ; i f(l e i t u r a < xxx) { d i g i t a l W r i t e(Led, HIGH) ; } e l s e{ d i g i t a l W r i t e(Led, LOW) ; } }
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes
Push Button
Push Button
Figura:Push Button: componente de toque, ao ser pressionado é
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes
Push Button
Push Button
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes Push Button
Push Button
Figura:Circuito. Código // L e i t u r a de Botao i n t Button = 2 ; v o i d s e t u p( ) { S e r i a l.b e g i n( 9 6 0 0 ) ; pinMode(Button, INPUT) ; }v o i d l o o p( ) {
i n t l e i t u r a = d i g i t a l R e a d(Button) ;
S e r i a l.p r i n t l n(" C l i c k : "+l e i t u r a) ; }
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes Push Button
Projeto 8
Figura:Circuito. ProblemaImplementar um mecanismo de senha, no qual deve-se saber se os botões foram clicados na ordem correta, so então o led será acesso.
Lembre-se: utilizar 3 botões para gerar a senha; a senha pode ter a ordem que você preferir.
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes
Push Button
Projeto 8
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes Push Button
Projeto 8
Código /∗ P r o j e t o 8 ∗/ i n t But1 = 4 ; i n t But2 = 3 ; i n t But3 = 2 ; i n t Led = 7 ; i n t s e n h a = 0 ; v o i d s e t u p( ) { S e r i a l.b e g i n( 9 6 0 0 ) ; pinMode(But1, INPUT) ; pinMode(But2, INPUT) ; pinMode(But3, INPUT) ; pinMode(Led, OUTPUT) ; s e n h a = 0 ; } v o i d l o o p( ) { i n t l e i t u r a 1 = d i g i t a l R e a d(But1) ; i n t l e i t u r a 2 = d i g i t a l R e a d(But2) ; i n t l e i t u r a 3 = d i g i t a l R e a d(But3) ; S e r i a l.p r i n t l n("−−−−−−−−−−−−−−−−−−") ; S e r i a l.p r i n t l n(" Senha : "+s e n h a) ; S e r i a l.p r i n t l n(" C l i c k 1 : "+l e i t u r a 1) ; S e r i a l.p r i n t l n(" C l i c k 2 : "+l e i t u r a 2) ; S e r i a l.p r i n t l n(" C l i c k 3 : "+l e i t u r a 3) ; // Botao 1 i f(s e n h a == 0 && l e i t u r a 1 == 1 ) { s e n h a = 1 ; d e l a y( 1 0 0 0 ) ; } e l s e i f(s e n h a != 0 && l e i t u r a 1 == 1 ) { s e n h a = 0 ; d i g i t a l W r i t e(Led, LOW) ; }Leonardo Mauro P. Moraes - UFMS/CPPP Componentes Push Button
Projeto 8
Código // Botao 2 i f(s e n h a == 1 && l e i t u r a 3 == 1 ) { s e n h a = 2 ; d e l a y( 1 0 0 0 ) ; } e l s e i f(s e n h a != 1 && l e i t u r a 3 == 1 ) { s e n h a = 0 ; d i g i t a l W r i t e(Led, LOW) ; } // Botao 3 i f(s e n h a == 2 && l e i t u r a 3 == 1 ) { s e n h a = 0 ; d i g i t a l W r i t e(Led, HIGH) ; d e l a y( 1 0 0 0 ) ; } e l s e i f(s e n h a != 2 && l e i t u r a 3 == 1 ) { s e n h a = 0 ; d i g i t a l W r i t e(Led, LOW) ; } }Leonardo Mauro P. Moraes - UFMS/CPPP Componentes
Sensor de Temperatura
Sensor de Temperatura - LM35
Figura:Sensor de Temperatura: componente eletrônico que realiza
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes Sensor de Temperatura
Projeto 9
Figura:Circuito. Problema Faça a leitura do LM35 e acenda um led quando atemperatura for maior que 30 graus
(multiplique o valor por 0,48875855)
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes Sensor de Temperatura
Projeto 9
Figura:Circuito. Código // Lendo S e n s o r i n t Pot = A0; v o i d s e t u p( ) {pinMode(Pot, INPUT) ; }
v o i d l o o p( ) {
i n t l e i t u r a = a n a l o g R e a d(Pot) ;
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes
Sensor de Temperatura
Projeto 9
Leonardo Mauro P. Moraes - UFMS/CPPP Componentes Sensor de Temperatura
Projeto 9
Código /∗ P r o j e t o 9 ∗/ i n t Pot = A0; i n t Led = 7 ; v o i d s e t u p( ) {pinMode(Pot, INPUT) ; pinMode(Led, OUTPUT) ; } v o i d l o o p( ) { i n t l e i t u r a = 0 . 4 8 8 7 5 8 5 5 ∗ a n a l o g R e a d(Pot) ; i f(l e i t u r a > xxx) { d i g i t a l W r i t e(Led, HIGH) ; } e l s e{ d i g i t a l W r i t e(Led, LOW) ; } }
Leonardo Mauro P. Moraes - UFMS/CPPP Encerramento Projeto 10 1 Introdução 2 Arduino 3 Componentes 4 Encerramento Projeto 10 Referências
Leonardo Mauro P. Moraes - UFMS/CPPP Encerramento
Projeto 10
Projeto 10 - Final Plus Ultra
Problema
Idéia: Competição de Projetos;
Faça o projeto de sua preferência com os componentes disponíveis;
Utilize pelo menos 5 (cinco) componentes estudados; Lembre-se: Vocês vão apresentar o projeto, no minimo 10 (dez) minutos e no máximo 15 (quinze);
Dupla, de dois.
Leonardo Mauro P. Moraes - UFMS/CPPP Encerramento Referências