INTRODUÇÃO AO
MICROCONTROLADOR
ARDUINO
PROF. LEANDRO MOMENTÉ ALMADA
FATEC - SERTÃOZINHO
Objetivo
• O curso de introdução ao Microcontrolador Arduino tem como objetivo familiarizar
o aluno com a plataforma arduino e sua programação. Trata-se de um curso
introdutório onde o aluno terá noções gerais sobre implementação de circuitos
eletrônicos e instrumentação eletrônica, arquitetura básica do arduíno e algumas
aplicações utilizando hardwares específicos para o microcontrolador.
Ementa:
Introdução aos circuitos eletrônicos e microprocessadores, Instrumentação eletrônica
e componentes eletrônicos;Utilizando o multímetro e protoboard; Arquitetura básica
do arduino e programação; Hello word com led blink; Iluminação sequencial com
LEDs; Matriz de Leds e Led RGB; Projetos com Termistor;Projetos com Fotoresistor;
Servomotor e aplicações; Projetos com Sensor de inclinação; Projetos com Sensor de
distância; Projetos com display; Trocando informações com o Arduino; Mão robótica.
Desenvolvimento:
O curso terá duração de 30 horas que serão divididas entre aulas teóricas e praticas
de implementação. Serão realizadas aulas semanais com duração de 2 horas onde
será desenvolvida uma breve introdução sobre os assuntos a serem tratados para a
implementação do experimento em questão. As aulas presenciais serão
desenvolvidas no campus da FATEC de Sertãozinho no período de 12 de março de
2018 à 14 de junho de 2018.
Previsão de calendário:
12/03 – aula 1: Apresentação do curso e Introdução aos circuitos eletrônicos e microprocessadores;
19/03 – aula 2: Instrumentação eletrônica e componentes eletrônicos;
26/03 – aula 3: Utilizando o multímetro e protoboard;
02/04 – aula 4: Arquitetura básica do arduino e programação;
09/04 – aula 5: Hello word com led blink
16/04 – aula 6: Iluminação sequencial com LEDs
23/04 – aula 7: Matriz de Leds e Led RGB
30/04 – aula 8: Projetos com Termistor
Previsão de calendário:
07/05 – aula 9: Projetos com Fotoresistor
14/05 – aula 10: Servomotor e aplicações
21/05 – aula 11: Projetos com Sensor de inclinação
28/05 – aula 12: Projetos com Sensor de distância
04/06 – aula 13: Projetos com display
11/06 – aula 14: Trocando informações com o Arduino
18/06 – aula 15: Mão robótica.
Circuitos Elétricos
Leis de Ohm
V = R.I
Lei de Ohm
Fonte de 6V
Vamos supor que nosso led causa um
queda de tensão de 1.8V e suporta uma
corrente máxima de 0.02A.
Se o led causa uma queda de tensão de
1.8V, então a tensão nos terminais do V=r ∙ i
resistor é a tensão “que sobra” da fonte,
ou seja, 6 – 1.8 = 4.2V. logo
Agora que sabemos a tensão nos V/i = r
terminais do resistor, aplicamos a lei de 4.2/0.02 = r
Ohm (V=r ∙ i) para acharmos a r = 210 Ω
resistência:
Ensaios de circuitos em
laboratório
• Fontes de alimentação
• Protoboard
• Resistores
• Cargas
Ensaios de circuitos em
laboratório
• Fontes de alimentação
• Protoboard
• Resistores
• Cargas
Ensaios de circuitos em
laboratório
• Fontes de alimentação
• Protoboard
• Resistores
• Cargas
Ensaios de circuitos em
laboratório
• Fontes de alimentação
• Protoboard
• Resistores
• Cargas
Modos de operação diferentes
(Fonte AC, Carga CC)
Dificuldades
de se Compatibilidade entre níveis de
trabalhar com tensão e corrente dos
componentes utilizados;
circuitos
elétricos
Ruídos nos sinais de saída dos
controles
Contornando
dificuldades
• O que é uma onda de sinal
alternado?
• O que é uma onda de sinal
contínuo?
Contornando
dificuldades
• O que é uma onda de sinal contínuo?
Contornando dificuldades
Conversão de sinais
Retificadores
Transformam energia de CA para CC
Contornando dificuldades Diodo
Retificadores
Contornando dificuldades Capacitor
Retificadores
Contornando dificuldades Resistor
Ajustando os Níveis dos Sinais
Contornando dificuldades
Ajustando os Níveis dos Sinais
Associação de Resistores
Série;
Paralelo;
Mista.
Experimento:
Acendimento de LED com resistor
1. Escolher um LED e um resistor;
2. Identificar através do Código de cores o valor da Resistencia do resistor;
3. Conectar o resistor em série com o LED no protoboard;
4. Fazer a alimentação dos elementos utilizando as saídas 5V e GND do Arduino.
Microcontroladores
• Os avanços tecnológicos atingidos com
o desenvolvimento dos circuitos
Integrados demandam cada vez mais
dispositivos eletrônicos;
• A cada dia são criados componentes
mais versáteis e poderosos;
• Nesta categoria, estão os
microcontroladores que apresentam
uma excelente performance;
• Permitem o projeto relativamente
rápido e fácil de novos equipamentos,
devido a sua facilidade de uso em
ampla faixa de aplicações.
Microcontroladores
• Um microcontrolador contém um
processador, acesso a memória e
periféricos de entrada/saída.
• Basicamente, o uso de um
microcontrolador consiste no
processamento de dados obtidos em
um de seus periféricos, tendo como
saída outro conjunto de dados.
Microcontrolador
Arduino
Arduino UNO
A placa Arduino UNO já está em sua terceira
revisão e você pode baixar seu esquema
elétrico em formato PDF no site do Arduino, ou
até mesmo todos os arquivos do projeto para
edição. Ela tem duas camadas apenas e várias
características interessantes de projeto. A
seguir serão apresentadas as principais
características do seu hardware.
Alimentação da placa
Arduino UNO
A placa pode ser
alimentada pela
conexão USB ou por
uma fonte de
alimentação externa,
conforme exibido na
figura abaixo:
.
Alimentação da placa
Arduino UNO
A placa pode ser
alimentada pela
conexão USB ou por
uma fonte de
alimentação externa, A alimentação externa é feita através do conector Jack
com positivo no centro, onde o valor de tensão da fonte
conforme exibido na externa deve estar entre os limites 6V a 20V porém se
figura: alimentada com uma tensão abaixo de 7V, a tensão de
funcionamento da placa, que no Arduino Uno é 5V, pode
. ficar instável e quando alimentada com tensão acima de
12V, o regulador de tensão da placa pode sobreaquecer e
danificar a placa.
Dessa forma, é recomendado para tensões de fonte
externa valores de 7V. a 12V.
Alimentação de Shields
no Arduino UNO
• IOREF - Fornece uma tensão de
referência para que shields possam
selecionar o tipo de interface
apropriada, dessa forma shields que
funcionam com a placas Arduino que
são alimentadas com 3,3V. podem se
adaptar para ser utilizados em 5V. e
vice-versa.
5 V - Fornece tensão de 5 V para alimentação de shields e
• RESET - pino conectado a pino de circuitos externos.
RESET do microcontrolador. Pode ser
utilizado para um reset externo da GND - pinos de referência, terra.
placa Arduino.
VIN - pino para alimentar a placa através de shield ou bateria
• 3,3 V. - Fornece tensão de 3,3V. para externa. Quando a placa é alimentada através do conector Jack,
alimentação de shield e módulos a tensão da fonte estará nesse pino.
externos. Corrente máxima de 50 mA.
Entradas e Saídas o
Arduino UNO
• Conforme exibido na figura, a
placa Arduino UNO possui 14
pinos que podem ser usados
como entrada ou saída digitias.
Estes Pinos operam em 5 V,
onde cada pino pode fornecer
ou receber uma corrente PWM : 3,5,6,9,10 e 11 podem ser usados como saídas PWM de
máxima de 40 mA. 8 bits através da função analogWrite();
Comunicação serial: 0 e 1 podem ser utilizados para
• Cada pino possui resistor de comunicação serial. Deve-se observar que estes pinos são
pull-up interno que pode ser ligados ao microcontrolador responsável pela comunicação USB
habilitado por software. Alguns com o PC;
desse pinos possuem funções Interrupção externa: 2 e 3 . Estes pinos podem ser
especiais:. configurados para gera uma interrupção externa, através da
função attachInterrupt().
Resumo da placa
Bibliografia
• MALVINO, Albert Paul. Eletrônica - Vol. 1 e 2. 4ª ed. São Paulo: Pearson.
• BOYLESTAD, Robert L.; NASHELSKY, Louis. Dispositivos Eletrônicos e Teoria de
Circuitos. 8ª ed. São Paulo: Pearson. 696 p.
• TOCCI, Ronald J.; WIDMER, Neal S.; MOSS, Gregory L..Sistemas Digitais: Princípios e
Aplicações. 10ª ed. São Paulo: Pearson, 2007. 830 p.
• MCROBERTS, Michael, Arduino Básico, 2 ed. São Paulo – SP: Novatec Editora Ltda,
2012, 456p;
• MONK, Simon. 30 Projetos com Arduino, 2 ed. Porto Alegre: Bookman, 2014, 214p.
Aula 2
Instrumentação eletrônica
e componentes
eletrônicos
PROF. LEANDRO MOMENTÉ ALMADA
FATEC - SERTÃOZINHO
Objetivo
• Proporcionar ao aluno uma visão geral sobre eletrônica e os componentes básicos
de eletrônica que serão utilizados no curso.
O que veremos nesta aula?
Circuitos Eletroeletrônicos;
Semicondutores e suas aplicações na construção de Diodos e Transistores;
Resistores e código de cores;
Potenciômetro;
Capacitores;
LED;
Circuitos Elétricos
Leis de Ohm
V = R.I
Lei de Ohm
Fonte de 6V
Vamos supor que nosso led cause uma
queda de tensão de 1.8V e suporta
corrente máxima de 0.02A.
Se o led causa uma queda de tensão de
1.8V, então a tensão nos terminais do 𝐕𝐕 = 𝑹𝑹𝑹𝑹
resistor é a tensão “que sobra” da fonte,
ou seja, 6 – 1.8 = 4.2V. Logo
𝑽𝑽
Agora que sabemos a tensão nos 𝑰𝑰
= 𝑹𝑹
terminais do resistor, aplicamos a lei de
Ohm (V=r ∙ i) para acharmos a 𝟒𝟒. 𝟐𝟐
resistência: = 𝑹𝑹
𝟎𝟎. 𝟎𝟎𝟎𝟎
R = 210 Ω
Ensaios de circuitos em
laboratório
• Fontes de alimentação
• Protoboard
• Resistores
• Cargas
Ensaios de circuitos em
laboratório
• Fontes de alimentação
• Protoboard
• Resistores
• Cargas
Ensaios de circuitos em
laboratório
• Fontes de alimentação
• Protoboard
• Resistores
• Cargas
Ensaios de circuitos em
laboratório
• Fontes de alimentação
• Protoboard
• Resistores
• Cargas
Modos de operação diferentes
(Fonte AC, Carga CC)
Dificuldades
de se Compatibilidade entre níveis de
trabalhar com tensão e corrente dos
componentes utilizados;
circuitos
elétricos
Ruídos nos sinais de saída dos
controles
Modos de operação diferentes (Fonte
AC, Carga CC)
CONVERSORES DE ENERGIA
CONTORNANDO Compatibilidade entre níveis de tensão e corrente
dos componentes utilizados;
DIFICULDADES RESISTORES FAZENDO LIMITAÇÃO DE CORRENTE
Ruídos nos sinais de saída dos
controles
FILTROS CAPACITIVOS
Contornando
dificuldades
• O que é uma onda de sinal
alternado?
• O que é uma onda de sinal
contínuo?
Contornando
dificuldades
• O que é uma onda de sinal contínuo?
Contornando dificuldades
Conversão de sinais
Retificadores
Transformam energia de CA para CC
Contornando dificuldades Diodo
Retificadores
Contornando dificuldades Capacitor
Retificadores
Contornando dificuldades Resistor
Ajustando os Níveis dos Sinais
DISPOSITIVOS SEMICONDUTORES
Estrutura Atômica
Eletrosfera é a região externa
do núcleo do átomo onde se
localizam os elétrons.
Estrutura Atômica
Os elétrons dão o chamado salto quântico e
saem da região onde se encontram confinados
pelas cargas elétricas, saltando a barreira de
potencial. Os elétrons ganham energia
suficiente, e transpassam a barreira de
potencial ao invés de saltá-la. Após o salto,
existe a possibilidade da recombinação.
Alguns elétrons ganham energia
suficiente e transpassam a barreira de
potencial ao invés de saltá-la. Se esta for
a ultima eletrosfera, este elétron torna-se
um Elétron Livre, ou seja, não sofre mais
a influência do núcleo atômico ao qual
pertencia
Semicondutor
Trata se de um elemento com
propriedades elétricas
intermediária entre condutor e
isolador.
Camada de Valência e
Recombinação
Camada de valência: é a última
camada a receber elétron no átomo ou
o nível de maior número quântico
principal e secundário na distribuição
eletrônica.
Normalmente os elétrons pertencentes
à camada de valência são os que
participam de alguma ligação química,
pois são os mais externos.
Camada de Valência e
Recombinação
A camada de valência necessita, na maior parte dos átomos,
de 8 elétrons para que seja estável.
Essa é a teoria do octeto. Quando não há
estabilidade, os átomos tendem a fazer ligações
químicas com elementos que possam
proporcionar os elétrons faltantes.
Representação dos núcleos de cobre e
silício
Um elétron de Valência Quatro elétrons de Valência
Cobre Silício
+1 +4
O núcleo e as órbitas de elétrons internos
Átomos de silício em um cristal
compartilham elétrons.
Devido às ligações covalentes, um cristal de silício à
temperatura ambiente é quase um isolante perfeito.
Semicondutor intrínseco
• Semicondutor puro
• Um cristal de silício será chamdado de intrínseco
se for formado apenas por átomos de silício
Dopagem
• Adição de impureza num cristal intrinsico com objetivo de alterar
suas características de condutibilidade
• Um semiconductor dopado é chamado de extrinsico
Cristais de silício dopados para
fornecer portadores permanentes.
Eletron livre Lacuna
(n tipo) (p tipo)
Dopagem pentavalente Dopagem trivalente
Cristais de silício dopados para
fornecer portadores permanentes.
Dopagem pentavalente Dopagem trivalente
Dopando cristais com ambos os tipos de
impurezas constitui um diodo de junção pn.
Polarização direta
Polarização Reversa
Polarizações do Diodo
Contornando dificuldades
Ajustando os Níveis dos Sinais
Associação de Resistores
Série;
Paralelo;
Mista.
Associação de Resistores
• Associação Série
Saída na entrada
Grandeza comum: corrente elétrica
• Associação Paralelo
Entrada com Entrada
Grandeza comum: diferença de potencial
Associação de Resistores
• Associação Série
Saída na entrada 𝑅𝑅𝑒𝑒𝑒𝑒 = 𝑅𝑅1 + 𝑅𝑅2 + 𝑅𝑅3 +... +𝑅𝑅𝑛𝑛
Grandeza comum: corrente elétrica
1 1 1 1 1
• Associação Paralelo = + + +... +
𝑅𝑅𝑒𝑒𝑒𝑒 𝑅𝑅1 𝑅𝑅2 𝑅𝑅3 𝑅𝑅𝑛𝑛
Entrada com Entrada
Grandeza comum: diferença de potencial
Associação de Resistores
• Associação Série
Saída na entrada
Grandeza comum: corrente elétrica
• Associação Paralelo
Entrada com Entrada
Grandeza comum: diferença de potencial
Experimento:
Acendimento de LED com resistores em série
1. Escolher um LED e um resistor;
2. Identificar através do Código de cores o valor da Resistencia do resistor;
3. Conectar os resistores em série com o LED no protoboard;
4. Fazer a alimentação dos elementos utilizando as saídas 5V e GND do Arduino.
5. Verificar a intensidade da luz do LED
Experimento:
Acendimento de LED com resistores em série
1. Escolher outro resistor
2. Identificar através do Código de cores o valor da Resistencia do resistor;
3. Conectar os resistores em série com o LED no protoboard;
4. Fazer a alimentação dos elementos utilizando as saídas 5V e GND do Arduino.
5. Verificar a intensidade da luz do LED
Experimento:
Acendimento de LED com resistores paralelo
1. Escolher dois resistors e um LED ;
2. Identificar através do Código de cores o valor das Resistencias dos resistores;
3. Conectar um resistor em série com o LED no protoboard;
4. Fazer a alimentação dos elementos utilizando as saídas 5V e GND do Arduino.
5. Verificar a intesidade da luz do LED
Experimento:
Acendimento de LED com resistores paralelo
1. Escolher outro resistor
2. Identificar através do Código de cores o valor da Resistencia do resistor;
3. Conectar os resistores em paralelo com o LED no protoboard;
4. Fazer a alimentação dos elementos utilizando as saídas 5V e GND do Arduino.
5. Verificar a intensidade da luz do LED
Bibliografia
• MALVINO, Albert Paul. Eletrônica - Vol. 1 e 2. 4ª ed. São Paulo: Pearson.
• BOYLESTAD, Robert L.; NASHELSKY, Louis. Dispositivos Eletrônicos e Teoria de
Circuitos. 8ª ed. São Paulo: Pearson. 696 p.
• TOCCI, Ronald J.; WIDMER, Neal S.; MOSS, Gregory L..Sistemas Digitais: Princípios e
Aplicações. 10ª ed. São Paulo: Pearson, 2007. 830 p.
• MCROBERTS, Michael, Arduino Básico, 2 ed. São Paulo – SP: Novatec Editora Ltda,
2012, 456p;
• MONK, Simon. 30 Projetos com Arduino, 2 ed. Porto Alegre: Bookman, 2014, 214p.
Aula 3
Programação com Arduino
PROF. LEANDRO MOMENTÉ ALMADA
FATEC - SERTÃOZINHO
Objetivo
• Fornecer ao aluno noções sobre declaração de variáveis e programação
O que veremos nesta aula?
Declaração de variáveis
Memória e Processador
Variáveis de
programação
Interface do Arduino
Baixando o software do Arduino:
[Link]
Interface do
Arduino
Interface do
Arduino
Void
Interface do Arduino
Void xxx() – a função void não retorna nenhum
resultado, sendo utilizada apenas para diferenciar as
linhas de comando de setup (void setup), que serão lidas
uma única vez pelo microprocessador e as linhas em loop
infinito (void loop), as quais serão monitoradas pelo
micro enquanto o mesmo estiver operando
Interface do Arduino
Instruções Básicas:
// - insere comentário na linha de programação;
int – define uma variável da programação e em que
porta a mesma será apresentada. Variáveis inseridas
dentro do void setup tem escopo global, ou seja, podem
ser vistas por todos os laços da rotina, enquanto
variáveis inseridas no void loop tem escopo local, sendo
vistas apenas neste contexto da rotina.
Interface do Arduino
Instruções Básicas:
pinMode(pino, modo) – Essa função é utilizada para configurar
um pino como entrada ou saída digital. Ela geralmente é utilizada
dentro da função void setup().
INPUT: Entrada digital;
INPUT_PULLUP: Entrada digital com resistor de pull-up (ligado
ao VCC) interno habilitado;
OUTPUT: Saída digital;
Interface do Arduino
Instruções Básicas:
digitalWrite (saída,nível)– Altera o estado de uma saída entre
nível lógico alto (HIGH) ou baixo (LOW);
delay ( milissegundos) - insere um valor de intervalo para pausa
na linha de comando onde a função é inserida
Interface do Arduino
Instruções Básicas
Exemplo: Hello World
int LED = 13;
void setup ( ) {
pinMode (LED, OUTPUT);
}
Interface do Arduino
Instruções Básicas
Exemplo: Hello word
void loop ( ) {
digitalWrite (LED, HIGH);
delay ( 1000);
digitalWrite (LED, LOW);
delay ( 1000);
}
Interface do Arduino
Instruções Básicas
Exemplo: Implementação com Hardware
Dados de operação do Hardware
Saída Arduino: 5V, 40mA;
Leds: 2V,35mA
Interface do Arduino
Instruções Básicas
Exemplo: Implementação com Hardware
int LEDVERDE= 10;
int LEDVERMELHO= 9;
int INTERV= 500;
void setup ( ) {
pinMode (LEDVERDE, OUTPUT);
pinMode (LEDVERMELHO, OUTPUT);
}
Interface do Arduino
Instruções Básicas
Exemplo: Implementação com Hardware
void loop ( ) {
digitalWrite (LEDVERDE, HIGH);
digitalWrite (LEDVERMELHO, LOW);
delay (INTERV);
digitalWrite (LEDVERDE, LOW);
digitalWrite (LEDVERMELHO, HIGH);
delay (INTERV);
}
Bibliografia
• MALVINO, Albert Paul. Eletrônica - Vol. 1 e 2. 4ª ed. São Paulo: Pearson.
• BOYLESTAD, Robert L.; NASHELSKY, Louis. Dispositivos Eletrônicos e Teoria de
Circuitos. 8ª ed. São Paulo: Pearson. 696 p.
• TOCCI, Ronald J.; WIDMER, Neal S.; MOSS, Gregory L..Sistemas Digitais: Princípios e
Aplicações. 10ª ed. São Paulo: Pearson, 2007. 830 p.
• MCROBERTS, Michael, Arduino Básico, 2 ed. São Paulo – SP: Novatec Editora Ltda,
2012, 456p;
• MONK, Simon. 30 Projetos com Arduino, 2 ed. Porto Alegre: Bookman, 2014, 214p.
Aula 4
LED RGB com Arduíno
PROF. LEANDRO MOMENTÉ ALMADA
FATEC - SERTÃOZINHO
Objetivo
• Fornecer ao aluno nocões sobre o LED RGB e suas aplicações envolvendo o uso do
arduino
O que veremos nesta aula?
Controle de LED RGB com Arduino e suas aplicações
O LED RGB, na verdade, é um conjunto de
três LEDs encapsulados, cada um com uma cor
distinta: o vermelho (Red), o verde (Green) e o azul
(Blue). O RGB se refere, portanto, às cores
primárias para a luz. Misturando-se as três e
mudando suas intensidades individualmente,
podemos fazer qualquer cor do espectro visível.
O que é o LED RGB?
Quais os tipos de LED
RGB?
LED TRANSPARENTE
São os três LEDs de cores diferentes – um vermelho,
um verde e um azul – unidos em uma cápsula
transparente. Se mais de um LED é aceso, é possível
distingui-los, não sendo este tipo de LED indicado
para colorização. Seu brilho é mais intenso que o do
LED difuso.
LED DIFUSO
A cápsula deste LED é feita com
material translúcido, ou seja,
não deixa a luz escapar
diretamente. Quando mais de
uma cor é acesa, elas se
misturam dentro da cápsula,
formando uma nova cor. Para
colorização de ambientes, este
é o tipo indicado.
LED BICOLOR
Seguem o mesmo princípio dos LEDs RGB,
porém, só possuem duas cores – geralmente,
o verde e o vermelho, mas existem outras
opções disponíveis. Suas cores também
podem ser combinadas para formar outras.
LED SMD
São LEDs muito pequenos, podendo chegar a 1
mm, muito usados em fitas e pequenos
circuitos eletrônicos. São encontrados nos
diferentes tipos citados anteriormente
OLED
OLED é a sigla para Organic LED
(LED orgânico). Trata-se do tipo
mais avançado, utilizado em telas
de smartphones e TVs. Por ser
uma tecnologia recente, ainda
possui um alto custo.
COMO ESCOLHER A
COR DO LED RGB?
Diferentemente de uma lâmpada comum, que
você compra somente uma cor, no caso do LED
RGB você compra as três cores em um único
LED. Isso permite que você escolha e mude a
cor quando quiser! Só que, para isso, você
precisa de um controlador RGB.
O que é um
controlador RGB?
O controlador RGB é um dispositivo projetado para
controlar as cores, intensidade e efeitos de um LED
RGB. Os controladores comerciais geralmente
possuem um determinado número de cores pré-
ajustadas e efeitos como flash e fade – efeito que
diminui e aumenta a intensidade, além de controlar
sua velocidade. Alguns modelos permitem que você
personalize outras cores.
É possível construir um controlador caseiro com a
placa arduino. Existem diversos tutoriais na internet
ensinando como fazer.
ONDE USAR
LED RGB?
ONDE USAR LED RGB?
Controlando o
LED RGB com
arduino
// Firmware para Controle de Cores do LED RGB
#define RED 3 // Define o pino 3 com PWM como RED
#define BLUE 5 // Define o pino 5 com PWM como BLUE
#define GREEN 6 // Define o pino 6 com PWM como GREEN
int red = 255, green = 255, blue = 255; // valores de 0 a 255 (variá-los para obter cores diferentes).
void setup() {
pinMode (RED, OUTPUT); // Pino 3 declarado como saída
pinMode (BLUE, OUTPUT); // Pino 5 declarado como saída
pinMode (GREEN, OUTPUT); // Pino 6 declarado como saída
}
void loop() {
analogWrite (GREEN, green); // Envia o sinal de "green" para o terminal de cor verde do LED
analogWrite (BLUE, blue); // Envia o sinal de "blue" para o terminal de cor azul do LED
analogWrite (RED, red); // Envia o sinal de "red" para o terminal de cor vermelha do LED
}
Bibliografia
• MALVINO, Albert Paul. Eletrônica - Vol. 1 e 2. 4ª ed. São Paulo: Pearson.
• BOYLESTAD, Robert L.; NASHELSKY, Louis. Dispositivos Eletrônicos e Teoria de
Circuitos. 8ª ed. São Paulo: Pearson. 696 p.
• TOCCI, Ronald J.; WIDMER, Neal S.; MOSS, Gregory L..Sistemas Digitais: Princípios e
Aplicações. 10ª ed. São Paulo: Pearson, 2007. 830 p.
• MCROBERTS, Michael, Arduino Básico, 2 ed. São Paulo – SP: Novatec Editora Ltda,
2012, 456p;
• MONK, Simon. 30 Projetos com Arduino, 2 ed. Porto Alegre: Bookman, 2014, 214p.
Aula 5
Termistor + LED RGB com
Arduíno
PROF. LEANDRO MOMENTÉ ALMADA
FATEC - SERTÃOZINHO
Objetivo
• Introduzir os conceitos necessários para a utilização do Termistor NTC com arduino
O que veremos nesta aula?
O conceito de Termistor
Controle de LED RGB com termistor a partir do Arduino
Termistor é um semicondutor resistente à
temperatura, ou seja, dependendo da temperatura
ao qual o termistor é submetido, sua resistência
sofre variação. Cada tipo de termistor possui uma
curva característica que mostra a diminuição ou
aumento em menor ou maior grau dependendo da
faixa de temperatura, para verificar qual é a curva
característica do seu modelo de termistor, você
deve verificar o datasheet do seu modelo.
O que é o Termistor?
Quais os tipos de
Termistores?
TERMISTOR NTC
• (Negative Temperature Coefficient), nesse
tipo de termistor o coeficiente de
variação de resistência com a
temperatura é negativo, ou seja, quanto
maior a temperatura, menor é a
resistência.
Termistor PTC
(Positive Temperature
Coefficient), nesse tipo de
termistor o coeficiente de
variação de resistência com a
temperatura é positivo, ou seja,
quanto maior a temperatura,
maior é a resistência.
ONDE SÃO APLICADOS TERMISTORES?
COMO TRABALHAR COM O TERMISTOR?
Para determinação da temperatura através da
resistência indicada pelo NTC, existem dois
métodos:
Método de Steinhart-Hart;
Método do fator Beta.
A equação de Steinhart-Hart para a temperatura como uma função da resistência é a seguinte:
1 ⁄T = A + B [Ln(R)] + C [Ln(R)]3
Onde: A, B e C são constantes, derivadas de 3 pontos de ensaio de temperatura.
R = Resistência do termistor em Ω
T = Temperatura em graus K
Montagem
Arduino Uno R3 + Cabo Usb
Sensor de Temperatura Ntc
Resistor CR25 10k 1/4W
Protoboard
Jumpers
Código
1 #include <Thermistor.h> // inclui a biblioteca Thermistor no código
2 Thermistor temp(0);
3 void setup() {
4 [Link](9600); //seta a quantidade de bits que serão transmitidos por
5 seguinto na conexão serial com o computador
6 }
7 void loop() {
8 int temperature = [Link]();
9 [Link]("Temperatura: ");
10 [Link](temperature);
11 [Link]("°C");
12 delay(1000);
}
Onde: B é constantes e derivada de ensaio de temperatura.
R = Resistência assumida pelo termistor em Ω
R0 = Resistencia inicial do ensaio.
Montagem
Arduino Uno R3 + Cabo Usb
Sensor de Temperatura Ntc
Resistor CR25 10k 1/4W
Protoboard
Jumpers
1 //Fonte: Fórum [Link]
2
Código 3 #define pinterm A0 //Pino onde o termistor está ligado
4 #define termres 10000 //Valor do termistor, no caso estamos utilizando
5 um termistor de 10k
6 #define tempnominal 25 //Temperatura nominal do ntc utilizado, esse
7 dado deve ser pesquisado no datasheet
8 //do ntc que você está utilizando
9 #define numsamples 5 //Número de amostras
10 #define beta 3977 //Valor do beta, esse valor varia conforme ntc, você
11 deve verificar o datasheet
12 #define res 10000
13
14 int amostra[numsamples];
15 int i;
16 void setup(void) {
17 [Link](9600);
18 analogReference(EXTERNAL);
19 }
20
21 void loop(void) {
22 float media;
23
24 for (i=0; i< numsamples; i++) {
25 amostra[i] = analogRead(pinterm);
26 delay(10);
27 }
28
1
2 media = 0;
Código 3 //quantidade de amostras
4 for (i=0; i< numsamples; i++) {
5 media += amostra[i];
6 }
7 media /= numsamples;
8 // conversão do valor de tensão em resistência
9 media = 1023 / media - 1;
10 media = res / media;
11
12 //Faz o cálculo pela fórmula do Fator Beta
13 float temperatura;
14 temperatura = media / termres; // (R/Ro)
15 temperatura = log(temperatura); // ln(R/Ro)
16 temperatura /= beta; // 1/B * ln(R/Ro)
17 temperatura += 1.0 / (tempnominal + 273.15); // + (1/To)
18 temperatura = 1.0 / temperatura; // Inverte o valor
19 temperatura -= 273.15; // Converte para Celsius
20
21 [Link]("Temperatura: ");
22 [Link](temperatura);
23 [Link](" °C");
24
25 delay(1000);
26 }
27
28
// definindo o pino analógico de entrada (A0)
#define THERMISTORPIN A0
// resistência do thermistor a 25° C
#define THERMISTORNOMINAL 10000
// temp. para resistência nominal (quase sempre 25 C)
#define TEMPERATURENOMINAL 25
//número de amostras para fazer a média
#define NUMSAMPLES 5
//Coeficiente Betha do thermistor (geralmente entre 3000-4000)
#define BCOEFFICIENT 3950
// valor do outro resistor
#define SERIESRESISTOR 13300
// temperatura fria
#define COLDTEMP 20
//temperatura quente
#define HOTTEMP 40
int samples[NUMSAMPLES];
int redPin = 11;
int greenPin = 10;
int bluePin = 9;
void setup(void) {
[Link](9600);
analogReference(EXTERNAL);
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop(void) {
uint8_t i;
float average;
// armazena N amostras num vetor, dentro de um pequeno intervalo de tempo(delay)
for (i=0; i< NUMSAMPLES; i++) {
samples[i] = analogRead(THERMISTORPIN);
delay(10);
// faz a média das amostras
average = 0;
for (i=0; i< NUMSAMPLES; i++) {
average += samples[i];
average /= NUMSAMPLES;
// [Link](“Leitura média das amostras ");
// [Link](average);
// convertendo os valores em resistencias
average = 1023 / average - 1;
average = SERIESRESISTOR / average;
// [Link]("Thermistor resistance ");
// [Link](average);
float steinhart;
steinhart = average / THERMISTORNOMINAL; // (R/Ro)
steinhart = log(steinhart); // ln(R/Ro)
steinhart /= BCOEFFICIENT; // 1/B * ln(R/Ro)
steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)
steinhart = 1.0 / steinhart; // Invert
steinhart -= 273.15; // convert to C
[Link]("Temperature ");
[Link](steinhart);
[Link](" *C");
uint8_t red, blue;
float temp = steinhart;
if (temp < COLDTEMP) temp = COLDTEMP;
if (temp > HOTTEMP) temp = HOTTEMP;
// map temperature to red/blue color
// hotter temp -> more red
red = map(temp, COLDTEMP, HOTTEMP, 0, 255);
// [Link]("Thermistor resistance ");
// [Link](average);
float steinhart;
steinhart = average / THERMISTORNOMINAL; // (R/Ro)
steinhart = log(steinhart); // ln(R/Ro)
steinhart /= BCOEFFICIENT; // 1/B * ln(R/Ro)
steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)
steinhart = 1.0 / steinhart; // Invert
steinhart -= 273.15; // convert to C
[Link]("Temperature ");
[Link](steinhart);
[Link](" *C");
uint8_t red, blue;
float temp = steinhart;
if (temp < COLDTEMP) temp = COLDTEMP;
if (temp > HOTTEMP) temp = HOTTEMP;
// map temperature to red/blue color
// hotter temp -> more red
red = map(temp, COLDTEMP, HOTTEMP, 0, 255);
// hotter temp -> less blue
blue = map(temp, COLDTEMP, HOTTEMP, 255, 0);
setColor(red, 0, blue);
delay(1000);
void setColor(int red, int green, int blue)
#ifdef COMMON_ANODE
red = 255 - red;
green = 255 - green;
blue = 255 - blue;
#endif
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
Bibliografia
• MALVINO, Albert Paul. Eletrônica - Vol. 1 e 2. 4ª ed. São Paulo: Pearson.
• BOYLESTAD, Robert L.; NASHELSKY, Louis. Dispositivos Eletrônicos e Teoria de
Circuitos. 8ª ed. São Paulo: Pearson. 696 p.
• [Link]
• [Link]
com-arduino
Aula 6
Sensor de Luz com
Arduíno + Condicional if e
Switch case
PROF. LEANDRO MOMENTÉ ALMADA
FATEC - SERTÃOZINHO
Objetivo
• Introduzir os conceitos necessários para a utilização do LDR com Arduino
• Introduzir o uso do condicional IF
• Introduzir o uso do switch case
O que veremos nesta aula?
O conceito de LDR
Controle do LDR com Arduino
O condicional IF e o controle de comandos
Switch case e o direcionamento do algoritmo.
O LDR, sigla em inglês de Light-Dependent
Resistor, que significa resistor dependente de luz,
nada mais é do que o que o próprio nome diz.
Tipicamente, quanto maior a luz incidente nesse
componente, menor será sua resistência.
Aprendendo a usar o LDR com Arduino
O LDR é constituído de um semicondutor de alta
resistência, que ao receber uma grande quantidade
de fótons oriundos da luz incidente, ele absorve
elétrons que melhoram sua condutibilidade,
reduzindo assim sua resistência.
Dessa forma, esse semicondutor pode assumir
resistências na ordem de mega Ohm no escuro e
resistência na ordem de poucas centenas quando
exposto a luz.
Aprendendo a usar o LDR com Arduino
Mãos à obra
Fazendo um sensor de luz com LDR
Montagem
1 //Sensor de luz com LDR
Código 2
3 int ledPin = 7; //Led no pino 7
4 int ldrPin = 0; //LDR no pino analígico A0
5 int ldrValor = 0; //Valor lido do LDR
6
7 void setup() {
8 pinMode(ledPin,OUTPUT); //define a porta 7 como saída
9 //pinMode(ldrPin, INPUT); //define A0 como entrada
10 [Link](9600); //Inicia a comunicação serial
11 }
12
13 void loop() {
14 ///ler o valor do LDR
15 ldrValor = analogRead(ldrPin); //O valor lido será entre 0 e 1023
16
17 //se o valor lido for maior que 500, liga o led
18 if (ldrValor>= 500) digitalWrite(ledPin,HIGH);
19 // senão, apaga o led
20 else digitalWrite(ledPin,LOW);
21
22 //imprime o valor lido do LDR no monitor serial
23 [Link](ldrValor);
24 delay(1000);
}
if / else
if/else permite que você tenha mais controle sobre o
fluxo do seu código do que apenas utilizando a
declaração If.
Permite que você faça múltiplos testes agrupados entre
si.
if (input < 500)
Por exemplo, se você quiser testar um {
input analógico e baseado no seu valor // fazer A
realizar certa tarefa ou caso contrário
realizar outra tarefa, por exemplo: se o }
input for menor que 500 faça alguma
coisa, caso contrário faça outra: else // caso contrário, isto é input > 500
{
// fazer B
}
else pode executar outro teste de if, e if (input < 500)
então testes múltiplos e mutualmente {
exclusivos podem ser executados ao // fazer A
mesmo tempo }
else if (input >= 1000)
{
// fazer B
}
else
{
// fazer C
}
Você pode ter um número ilimitado desses ramos condicionais. Outra forma de trabalhar com testes
ramificados e mutualmente condicionais é usar switch case.
Exemplo
switch (valor) {
case 1:
//fazer algo quando valor == 1
Assim como na instrução if, o break;
switch...case permite programar case 2:
diferentes blocos de instruções para //fazer algo quando valor == 2
diferentes condições. break;
default:
// se nada mais encaixa, fazer o padrão
Em particular, o switch compara o valor }
de uma única variável com diferentes
valores especificados nas declarações switch (letra) {
do case. case "a":
//fazer algo quando letra == "a"
Quando um valor do case é igual ao break;
valor da variável, o código definido case "b":
naquele caso é executado. //fazer algo quando letra == "b"
break;
default:
// se nada mais encaixa, fazer o padrão
}
Exemplo
switch (valor) {
case 1:
//fazer algo quando valor == 1
O comando break para o teste do break;
switch, e normalmente é utilizado no case 2:
fim de cada caso, case. //fazer algo quando valor == 2
break;
default:
Sem o break, o switch continuará
// se nada mais encaixa, fazer o padrão
executando as instruções seguintes até }
que encontre um break ou chegue no
fim da expressão do switch. switch (letra) {
case "a":
//fazer algo quando letra == "a"
break;
case "b":
//fazer algo quando letra == "b"
break;
default:
// se nada mais encaixa, fazer o padrão
}
Sintaxe
switch (var) {
case valor:
// instruções
break;
case valor:
// instruções
break;
default:
// instruções
}
Parametros
var: variável a ser comparada com os diferente casos, case.
valor: um valor a ser comparado com a variável var
default: instrução padrão caso nenhum caso seja verificado
Mãos à obra
Direcionar um caminho usando switch case
Montagem
void setup() {
// inicializa a comunicação serial
Código [Link](9600);
// define os pinos de conexão dos leds
for (int thisPin = 2; thisPin < 7; thisPin++)
{
pinMode(thisPin, OUTPUT);
}
}
void loop() {
if ([Link]() > 0) //verifica se algum byte foi enviado via teclado
{
Código
int inByte = [Link](); //salva o byte enviado na variável inByte
// a sequencia de comandos switch irá direcionar o nível lógico alto para o led
relacionado à letra escolhida
switch (inByte) {
case 'a':
digitalWrite(2, HIGH);
break;
case 'b':
digitalWrite(3, HIGH);
break;
case 'c':
digitalWrite(4, HIGH);
break;
case 'd':
digitalWrite(5, HIGH);
break;
case 'e':
digitalWrite(6, HIGH);
break;
default:
// mantem os leds apagados
for (int thisPin = 2; thisPin < 7; thisPin++) {
digitalWrite(thisPin, LOW);
}
}
}
}
DESAFIOS
Bibliografia
• BANZI, M. Primeiros passos com o Arduino, São Paulo: O´Reilly Novatec, 2010
• McROBERTS, M. Arduino Básico, São Paulo: Novatec, 2011
• MONK, S. Programação com Arduino, Porto Alegre: Bookman Editora, 2013
• MONK, S. Programação com Arduino II, Porto Alegre: Bookman Editora, 2015
• BLUM, J. Exploring Arduino, New York: John Wiley, 2013
• [Link]
keyboard-for-data-collection-old-version/[Link]
utilizar-o-termistor-ntc-com-arduino
• [Link]
• [Link]