Controlando os LEDs do Nanoshield Interface
Nesta experiência, vamos explorar o assunto "pinos". Cada LED (bem como as outras entradas e saídas do seu Kit Nanoshields Iniciante) está ligado a um pino específico.
!Informações Importantes
O Arduino possui 20 pinos, que são numerados de D2 até D13 e de A0 até A7. Cada dispositivo de entrada ou de saída que se deseja controlar (como leds e botões por exemplo) utiliza um destes pinos, como D2, D4, D11, A1, etc.
Cada pino pode ser controlado separadamente, por exemplo: o pino D4 pode ser definido como HIGH ao mesmo tempo em que o pino D5 é estabelecido como LOW. Alguns pinos (como nós vamos descobrir mais tarde) têm propriedades especiais, mas quase todos (exceto A6 e A7) são, pelo menos, capazes de realizar as funções de entrada e saída digital.
Neste projeto, vamos trabalhar com os dois LEDs disponíveis no Nanoshield Interface. Clicando no link você confere todas as informações necessárias sobre esse shield. O LED amarelo está ligado ao pino A1 e o LED verde está ligado ao pino A2.
!Identificando os Componentes
Na figura abaixo, podemos observar os leds amarelo e verde que serão utilizados neste projeto.
!Componentes de Código
Na nossa última seção, explicamos brevemente o parâmetro pin
. Nesse ponto, porém, convém uma explicação melhor, uma vez que vamos utilizá-lo mais de uma vez.
Modo do Pino: pinMode([pin], [INPUT/OUTPUT])
Cada pino em um Arduino pode ser usado tanto como entrada quanto como saída, e um dos trabalhos do programador (você) é dizer qual é a função de cada pino no projeto. Para dizer qual é o papel de um pino, você usa a função pinMode()
.
pinMode()
recebe dois parâmetros dentro de seus parênteses. O primeiro valor é o número do pino que você deseja definir como uma entrada ou saída. O segundo parâmetro é o modo, que pode ser de entrada - INPUT
- ou saída - OUTPUT
. Esses parâmetros são case-sensitive, o que significa que letras maiúsculas são consideradas diferentes de letras minúsculas no nome do parâmetro. Nesse caso, os valores INPUT
e OUTPUT
precisam ser todos escritos em letra maiúscula.
No Arduino, os pinos nomeados de D2 até D13 são chamados somente pelo número, ou seja, sem a letra "D" na frente. Já os pinos nomeados de A0 até A7 necessitam ser chamados pelo nome completo, ou seja, precedidos pela letra "A".
Podemos então dizer que a função do Arduino que configura o pino D4 como saída é pinMode(4, OUTPUT);
, e a função que configura o pino A3 como entrada é pinMode(A3, INPUT);
.
Normalmente você vai colocar as chamadas a pinMode()
no início do seu programa, dentro da função setup()
. A declaração só precisa ser executada uma vez, logo no início de seu programa, e o pino manterá o estado até o final da execução do seu programa.
Neste programa, como iremos usar os pinos para acionar os leds, eles serão configurados como saída.
!Executando no Arduino
Execute o código abaixo no seu Arduino para controlar os LEDs. No código abaixo você pode conferir os comentários para entender melhor o seu funcionamento.
/* Programa: Controle LEDs Como acender e apagar cada um dos LEDs */ // Associando o LEDs aos Pinos correspondentes int ledAmarelo = A1; int ledVerde = A2; void setup() { // Inicializar cada pino do LED como saída pinMode(ledAmarelo,OUTPUT); pinMode(ledVerde,OUTPUT); } void loop() { // Acende o LED amarelo digitalWrite(ledAmarelo, HIGH); // Espera um segundo delay(1000); // Apaga o LED amarelo digitalWrite(ledAmarelo, LOW); // Espera mais um segundo delay(1000); // Acende o LED verde digitalWrite(ledVerde, HIGH); // Espera um segundo delay(1000); // Apaga o LED verde digitalWrite(ledVerde, LOW); // Espera mais um segundo delay(1000); }
!Sua vez!
Tente modificar o código acima para que os LEDs acendam e apaguem ao mesmo tempo. A resposta você pode conferir clicando na aba abaixo.
Resposta
/* Programa: Controle LEDs Como acender e apagar cada um dos LEDs */ // Associando o LEDs aos Pinos correspondentes int ledAmarelo = A1; int ledVerde = A2; void setup() { // Inicializar cada pino do LED como saída pinMode(ledAmarelo,OUTPUT); pinMode(ledVerde,OUTPUT); digitalWrite(ledAmarelo, LOW); digitalWrite(ledVerde, LOW); } void loop() { // Acende os LEDs digitalWrite(ledAmarelo, HIGH); digitalWrite(ledVerde, HIGH); // Espera um segundo delay(1000); // Apaga os LEDs digitalWrite(ledAmarelo, LOW); digitalWrite(ledVerde, LOW); // Espera mais um segundo delay(1000); }