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.

LEDs Interface

!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);                             
}