Arduino: Entradas e Saidas: mudanças entre as edições

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
Sem resumo de edição
Linha 53: Linha 53:
;Semáforo:  
;Semáforo:  
*Montar hardware para acionamento de  '''3 leds''' (vermelho, verde e amarelo), comandados por 3 saídas digitais independentes do Arduíno, utilizando '''resistores''' de proteção adequados.
*Montar hardware para acionamento de  '''3 leds''' (vermelho, verde e amarelo), comandados por 3 saídas digitais independentes do Arduíno, utilizando '''resistores''' de proteção adequados.
*Modificar programa '''''Blink''''' para acionar os leds como um '''semáforo''', com '''temporização''' adequada para cada cor.
*Modificar programa '''Arquivo/Exemplos/Basic/Blink''' para acionar os leds como um '''semáforo''', com '''temporização''' adequada para cada cor.


<!--
<!--

Edição das 01h09min de 21 de abril de 2017

Minicurso: Arduíno e eletrônica

Este minicurso tem como objetivos realizar uma introdução ao microcontrolador Arduíno e a eletrônica a partir de atividades teóricas e práticas.

O minicurso está organizados em módulos, cada um deles trabalhando conceitos específicos sobre o microcontrolador Arduíno e os correspondentes conceitos de eletricidade e eletrônica envolvidos.

Características do microcontrolador Arduíno

Arduíno

Saídas digitais

O Arduíno UNO possui 14 Entradas/Saídas Digitais
  • As entradas/saídas digitais estão localizadas nos pinos 0 a 13.
  • Estas entradas/saídas operam com valores digitais LOW e HIGH, os quais correspondem aos valores de tensão 0 V e 5 V, respectivamente..
  • Cada pino fornece corrente de até 20 mA, sendo que qualquer corrente solicitada acima de 40mA pode danificar o Arduíno.
pinMode
Comando da linguagem de programação do Arduíno que configura o pino digital como entrada (INPUT) ou saída (OUTPUT).
Exemplo:
pinMode(13, OUTPUT);
digitalWrite
Comando para escrever na saída digital.
digitalWrite(13, HIGH/LOW);

Laboratório 1: Saída digital

Blink
  • Carregar no Arduíno o programa exemplo Arquivo/Exemplos/Basic/Blink para piscar o led do pino 13, mantendo acesso por 1 seg e em seguida apagada por 1 seg. O led do pino 13 é um led instalado na própria placa do Arduíno.
  • Modificar o tempo (delay) e verificar a mudança na frequência do piscar do led.

Leds

Um led é um diodo emissor de luz (light emitting diode). Ele se comporta como um diodo, conduzindo apenas quanto polarizado diretamente.

Um led não pode receber tensão diretamente em seus terminais sob risco de colocar o componente em curto-circuito. A corrente no led deve ser limitada, tipicamente entre 15 mA a 30 mA por um resistor externo.

A queda de tensão direta nos leds depende da cor do led. De modo simplificado, tipicamente se usa-se queda de tensão de 2 V.

Exemplo cálculo do resistor de proteção de um circuito com led

Soma das quedas de tensão ao longo da malha:
V = Vled + R.I
V = 5V, Vled = 2V, I = 10mA
R = (5 - 2)/15 = 300Ω 
Valores comerciais:
270Ω ou 330Ω
Código de cores de resistores

Laboratório 2: Semáforo automatizado com leds

Semáforo
  • Montar hardware para acionamento de 3 leds (vermelho, verde e amarelo), comandados por 3 saídas digitais independentes do Arduíno, utilizando resistores de proteção adequados.
  • Modificar programa Arquivo/Exemplos/Basic/Blink para acionar os leds como um semáforo, com temporização adequada para cada cor.


Entradas digitais

Um pino digital do Arduíno pose ser definido como entrada (INPUT).

pinMode(2, INPUT);
digitalRead
Comando para ler o estado de uma entrada digital.
int estadoPino; 
estadoPino = digitalRead(2);

Neste caso o Arduíno vai ler se o estado do pino é LOW (0 V) ou HIGH (5 V).

Chave digital

Uma chave digital fornecerá 0 V (LOW) ou 5 V (HIGH) caso estiver aberta ou fechada.

  • Caso a chave estiver aberta, não haverá corrente no o resistor e a tensão entregue ao pino do Arduíno será 0 V.
  • Caso a chave estiver fechada, haverá corrente no resistor e a tensão entregue ao pino do Arduíno será 5 V.
    • Corrente no resistor:
I = V / R
5 (V) / 10k (Ω) = 0,5 mA

Laboratório 3: Chave digital

Button
  • Montar hardware com chave (push botton), utilizando resistores de proteção de 10 KΩ.
  • Carregar programa exemplo Arquivo/Exemplos/Digital/Button para ligar ou desligar led em função de pressão em chave digital.
  • Carregar programa exemplo Arquivo/Exemplos/Basic/ReadSerial para verificar no terminal serial o valor da chave digital.

Laboratório 4: Coreografia com leds

Implementar uma coreografia de luzes com 6 leds e 2 chaves digitais, de forma que, a cada combinação de chaves acionadas uma coreografia de luzes seja executada.

Entradas Analógicas

O Arduíno UNO possui 6 entradas analógicas
As entradas analógicas utilizam um processo de Conversão Analógico Digital (ADC) para obter valores digitais correspondentes a cada entrada.
  • As entradas analógicas são nomeadas de A0 até A5.
  • Cada entrada analógica recebe valores analógicos entre 0 V e 5 V.
  • Os valores analógicos são convertidos para valores digitais com 10 bits de resolução (valores entre 0 (0000000000) a 1023 (1111111111).
analogRead
Comando para ler entrada analógica.
valorPino = analogRead(A0);

Divisor de Tensão

Quando uma tensão é aplicada sobre resistores em série, a tensão total sobre os dois resistores é igual a somas das quedas de tensão sobre cada resistor.

Quedas de tensão ao longo da malha:
V = V1 + V2
V = I.R1 + I.R2
Note que a corrente I é a mesma sobre os dois resistores.

ou

V1 = R1/(R1 + R2) . V
V2 = R2/(R1 + R2) . V
Simulação do funcionamento do Divisor de Tensão
Circuits -> Basic -> Voltage Divider

Potenciômetros

São resistências variáveis através de um cursor.

Na figura, através de um potenciômetro é possível implementar um divisor de tensão com uma tensão variável Vx obtida a partir do terminal central do potenciômetro.

Simulação do funcionamento do Potenciômetro Divisor de Tensão
Circuits -> Basic -> Potentiometer Divider

Laboratório 5: Leitura de entrada analógica

AnalogReadSerial
  • Montar hardware com utilizando o ponto central de um potenciômetro conectado a entrada analógica A0 (com os demais terminais conectados ao GND e 5V, respectivamente).
  • Carregar programa exemplo Arquivo/Exemplos/Basic/AnalogReadSerial e verificar o valor da entrada analógica no monitor serial.
  • Carregar programa exemplo Arquivo/Exemplos/Basic/ReadAnalogVoltage e verificar o valor da entrada analógica em Volts no monitor serial.

Aplicação do Divisor de Tensão

Sensores baseados em resistência variável para Arduíno

Sensores de luminosidade (LDR) e sensores de temperatura (como o NTC) possuem um resistor variável em função da grandeza que estão medindo.

Laboratório 6: Entrada analógica

AnalogInput
  • Montar hardware com utilizando o ponto central de um potenciômetro conectado a entrada analógica A0 (com os demais terminais conectados ao GND e 5V, respectivamente).
  • Carregar programa exemplo Arquivo/Exemplos/Analog/AnalogInput e verificar o valor da frequência do pulsar do led em função do valor do potenciômetro.
Sensor de luminosidade LDR
  • Montar hardware com o sensor LDR, conforme mostrado no link do exemplo Analog/AnalogInput, e verificar o valor da frequência do pulsar do led em função do valor da luminosidade.

Laboratório 7: Sensor de luminosidade LDR

LDR
  • Montar hardware com sensor LDR e três leds (vermelho, amarelo e verde), utilizando divisor de tensão para o sensor e resistores de proteção adequados para os leds.
  • Construir programa para acender led verde com alta luminosidade, led amarelo com média luminosidade e led vermelho com baixa luminosidade.

Saídas Analógicas

O Arduíno emula saídas analógicas através de modulação PWM (Pulse Width Modulation). O sinal PWM é uma onda quadrada, com frequência constante, mas a fração de tempo em que o sinal é HIGH (5V) (duty cycle) pode variar entre 0 e 100%, fornencedo uma média de tensão variável na saída [1].

As 6 Saídas PWM são identificadas pelo sinal ~ e fornecem saídas analógicas através de pulsos PWM de 8 bits, possibilitando, portanto, 256 valores diferentes de tensão analógica entre 0V e 5V, com passos de 0 a 255.



Referências


--Evandro.cantu (discussão) 16h33min de 12 de setembro de 2016 (BRT)