Mudanças entre as edições de "MCO018703 2018 2 AULA06"
Linha 230: | Linha 230: | ||
Figura 4 - ''Push-button'' de pólo simples com 2 ou 4 pinos de contato. | Figura 4 - ''Push-button'' de pólo simples com 2 ou 4 pinos de contato. | ||
</center> | </center> | ||
+ | |||
+ | LED, ou ''light emitter diode''' é um diodo emissor de luz que, quando alimentado corretamente, permite o fluxo de energia apenas em um sentido. É um componente polarizado (com pólos positivo e negativo) e deve ser corretamente conectado para funcionar. Note que o polo positivo possui uma perna maior (terminal maior) que a outra (veja a figura abaixo). Já o polo negativo possui a menor perna (terminal menor). | ||
+ | |||
+ | [[imagem:Fig004_MCO18703.jpg|600px|center]] | ||
+ | <center> | ||
+ | Figura 5 - ''Diodo emissor de luz. | ||
+ | </center> | ||
+ | |||
+ | <blockquote style="background: #FFEEFF; border: 1px solid red; margin-left: 0px; margin-right: 0px; padding: 1em;"> | ||
+ | Nota: Alguns LED's apresentam o polo negativo chanfrado (plano) no seu exterior. | ||
+ | </blockquote> | ||
=Referências= | =Referências= |
Edição das 15h22min de 4 de setembro de 2018
Objetivo
- Apresentar o mapa das entradas e saídas do Arduino;
- Entender suas funções na linguagem do Arduino.
Mapa das Entradas e Saídas do Arduino
Figura 1 - Mapa das Entradas e Saídas do Arduino.
- Pinos Digitais
- São usados para detecção ou transmissão de controles digitais.
- Funções em C:
- pinMode( )
- digitalRead( )
- digitalWrite( )
- analogWrite( )
- attachInterrupt( )
- pulseIn( )
- Pinos analógicos
- São usados para leitura de sinais de sensores análogicos.
- Funções em C:
- analogRead( )
- Porta USB
- É usada para comunicação serial com um computador.
- Funções em C:
- begin( )
- end( )
- available( )
- read( )
- print( )
- println( )
- Pinos de Alimentação
- São usados para alimentação de circuitos externos e reset do Arduino.
Portas de E/S do Arduino e suas Funções
Pinos Digitais
São 14 pinos marcados com o nome DIGITAL logo abaixo de duas barras de 8 pinos. São numerados de 0 a 13 da direita para a esquerda e podem ser configurados pela função pinMode( ) para detetarem ou transmitirem níveis lógicos digitais (verdadeiro/falso, 1/0 ou HIGH/LOW). A Figura 2 mostra o mapa de pinos Digitais do Arduino.
Figura 2 - Mapa dos Pinos Digitais do Arduino.
Função | Exemplo | Notas |
---|---|---|
pinMode(pino,modo)
Serve para estabelecer a direção do fluxo de informações em qualquer dos 14 pinos digitais. Dois parâmetros devem ser passados à função: o primeiro indica qual pino vai ser usado; o segundo, se esse pino vai ser entrada ou se vai ser saída dessas informações. |
pinMode(2,OUTPUT);
Aqui o pino 2 é selecionado para transmitir informações do Arduino para um circuito externo qualquer. Para configurar esse pino como entrada, o segundo parâmetro dessa função deve ser INPUT. |
Essa função é sempre
escrita dentro da função setup( ). |
digitalRead(pino)
Uma vez configurado um certo pino como entrada com a função pinMode( ), a informação presente nesse pino pode ser lida com a função digitalRead( ) e armazenada numa variável qualquer. |
int chave = digitalRead(3);
Nesse exemplo a variável inteira ‘chave’ vai guardar o estado lógico (verdadeiro/falso) presente no pino digital 3. |
|
digitalWrite(pino,valor)
Para enviar um nível lógico para qualquer pino digital do Arduino utiliza-se essa função. Dois parâmetros são requeri dos: o número do pino e o estado lógico (HIGH/LOW ) em que esse pino deve permanecer. |
digitalWrite(2,HIGH);
Aqui uma tensão de 5 volts é colo cada no pino 2. Para enviar terra para esse pino o segundo parâmetro deverá ser LOW. |
É necessário configurar previamente o
pino como saída com a função pinMode( ). |
analogWrite(pino,valor)
O Arduino pode gerar tensões analógicas em 6 de seus 14 pinos digitais com a função analogWrite( ). Dois parâmetros devem ser passados à função: o primeiro indica em qual pino será gerada a tensão; o segundo determina a amplitude dessa tensão, e deve ter valores entre 0 (para 0 volt) e 255 (para 5 volts). |
analogWrite(10,128);
Com esses parâmetros uma tensão analógica de 2,5 volts vai aparecer no pino 10. Não é necessário configurar um pino PWM como saída com a função pinMode( ) quando se chama função analogWrite( ). |
Modulação por Largura de Pulsos, ou
PWM (Pulse Width Modulation) na língua inglesa, é uma técnica usada para gerar tensões analógicas a partir de uma sequência de pulsos digitais. |
attachInterrupt(pino,função,modo)
Essa função é uma rotina de serviço de interrupção, ou ISR (Interrupt Service Routine) em inglês. Toda vez que ocorrer uma interrupção por hardware no pino digi tal 2 ou no 3 do Arduino uma outra função, criada pelo programador, vai ser chamada. O terceiro parâmetro, modo, informa como a interrupção vai ser disparada, se na borda de subida do pulso detetado no pino do Arduino, se na borda de descida, se quando o pulso for baixo ou se na mudança de nível desse pulso. |
attachInterrupt(0,contador,RISING);
Nesse exemplo a função ‘contador’ vai ser chamada quando o Arduino detetar uma mudança do nível LOW para o nível HIGH em seu pino 2. Nessa ISR o parâmetro 0 monitora o pino 2, o parâmetro 1 monitora o pino 3. |
LOW - dispara a interrupção quando
o pino está em 0; CHANGE - dispara sempre que o pino muda de estado (de 0 para 1, ou vice-versa); RISING - somente quando o pino muda de 0 para 1; FALLING - somente quando o pino muda de 1 para 0. |
pulseIn(pino,valor,espera)
Essa função mede a largura em microssegundos de um pulso em qualquer pino digital. O parâmetro ‘valor’ diz à função que tipo de pulso deve ser medido, se HIGH ou LOW. O parâmetro ‘espera’ (time out) é opcional e se passado à função faz com que a medida do pulso só comece após o tempo em microssegundos ali especificado. |
pulseIn(4,HIGH);
Aqui essa função vai monitorar o pino 4, e quando o nível nesse pino mudar de LOW para HIGH a sua largura vai ser medida até que seu nível volte para LOW. Se, por exemplo, for passado o valor 100 como terceiro parâmetro, a medida da largura do pulso só será disparada após 100 uS. |
Uma aplicação interessante para
essas duas últimas funções seria o de montar um contador de dois dígitos com mostradores de 7-segmentos. |
Exemplo
No programa abaixo essas três funções (pinMode(), digitalRead() e digitalWrite() são utilizadas para acender um LED no pino 2 toda vez que uma chave normalmente aberta no pino 3 for pressionada.
void setup()
{
pinMode(2,OUTPUT);
// led no pino 2 como saída
pinMode(3,INPUT); // Pode-se definir um resistor interno de pull-up com INPUT_PULLUP
// chave no pino 3 como entrada
}
void loop()
{
int chave = digitalRead(3);
// variável ‘chave’ guarda estado do pino 3
if (chave==HIGH)
digitalWrite(2,LOW);
else
digitalWrite(2,HIGH);
// estado de ‘chave’ é passado para pino 2.
}
A Figura 3 mostra como ficaria as ligações para acender o LED toda vez que a chave for pressionada.
Figura 3 - Fios vermelhos são 5V, fios pretos GND e fios verdes conexões com os Pinos de E/S.
O botão push-button também é chamado micro switch. A Figura 4 ilustra o seu funcionamento.
Figura 4 - Push-button de pólo simples com 2 ou 4 pinos de contato.
LED, ou light emitter diode' é um diodo emissor de luz que, quando alimentado corretamente, permite o fluxo de energia apenas em um sentido. É um componente polarizado (com pólos positivo e negativo) e deve ser corretamente conectado para funcionar. Note que o polo positivo possui uma perna maior (terminal maior) que a outra (veja a figura abaixo). Já o polo negativo possui a menor perna (terminal menor).
Figura 5 - Diodo emissor de luz.
Nota: Alguns LED's apresentam o polo negativo chanfrado (plano) no seu exterior.
Referências
[1] http://ordemnatural.com.br/pdf-files/CartilhadoArduino_ed1.pdf
[2] https://www.tinkercad.com/circuits