Não há outra ferramenta disponível que ajude na prototipagem fácil como o Arduino.  Qualquer placa baseada em microcontrolador AVR que siga o esquema padrão do Arduino e seja atualizada com o Arduino carregador de inicialização  pode ser chamada de placa Arduino.  O arduino pode ser usado como uma placa autônoma, cuja saída ou entradas podem ser retiradas das placas ou fornecidas à placa usando conectores convenientes.  Entradas e saídas digitais e analógicas estão disponíveis em todas as placas Arduino.  Quando se trata de programar a placa Arduino, qualquer pessoa que tenha conhecimento básico de programação C pode começar rapidamente a usar o IDE Arduino.
Como a placa Arduino pode atuar como um sistema independente, ela deve ter recursos para receber entradas, processar a entrada e, em seguida, gerar uma saída correspondente.  É através dessas entradas e saídas que o arduino como sistema pode se comunicar com o ambiente.  As placas Arduino podem se comunicar com outros dispositivos usando portas de comunicação padrão de entrada/saída digital, como USART, IIC e USB, etc. Este artigo explica como usar a entrada e saída digital da placa Arduino com a ajuda de um simples botão como dispositivo de entrada digital e um LED como dispositivo de saída digital.
 
 
 
Presume-se que o leitor tenha passado pelo projeto Primeiros passos com arduino e fiz todas as coisas discutidas nele.

Fig. 2: Placa Arduino Pro-Mini típica
Este projeto também utiliza a placa arduino pro-mini e a mesma versão do arduino IDE 1.0.3.
Fig. 3: Janela do software Arduino IDE
O dispositivo de saída digital neste projeto específico é um LED que é conectado ao pino número 5 da placa Arduino por meio de um resistor limitador de corrente de 1K.  Um botão é conectado ao pino número 13 usando um resistor pull down.  O código lê continuamente o status do pino número 13 que foi configurado como saída digital.  Devido à presença do resistor pull down o valor padrão será zero (o valor quando a tecla não é pressionada).  Quando a tecla é pressionada, o valor no pino 13 torna-se subitamente lógico alto e o código detecta a alteração e acende o LED conectado ao pino número 5.
O CÓDIGO
const int buttonPin = 13;             // o número do pino do botão
const int ledPin = 5;                    // o número do pino do LED
// variáveis irão mudar:
int estadodebotão = 0;                      //variável para leitura do status do botão
configuração nula 
{
  // inicializa o pino do LED como saída:
  pinMode(ledPin, SAÍDA);      
  // inicializa o pino do botão como uma entrada:
  pinMode(botãoPin, INPUT);     
}
loop vazio 
{
  // lê o estado do valor do botão:
  buttonState = digitalRead(buttonPin);
  // verifica se o botão está pressionado.
  // se for, o buttonState é HIGH:
  if (buttonState == ALTO) 
  {     
    //liga o LED:    
    digitalWrite(ledPin, ALTO);  
    atraso(100);
  } 
  outro 
  {
    //desliga o LED:
    digitalWrite(ledPin, LOW); 
  }
}
Todo o código do Arduino tem duas funções básicas, nomeadamente setup  e loop  explicadas no projeto Primeiros passos com arduino.  Além dessas funções, existem quatro outras funções de biblioteca usadas neste projeto, nomeadamente pinMode  , digitalRead  , digitalWrite   e delay .
pinMode 
A função pinMode  é uma função integrada usada para definir um pino específico como entrada ou saída.  O primeiro parâmetro é o número do pino e o segundo parâmetro sugere se o pino deve ser de entrada ou saída. 
Por exemplo, para tornar o pino número 5 como saída 
pinMode (5, SAÍDA);
Para tornar o pino número 6 como entrada
pinMode(6, ENTRADA);
escrita digital  
A digitalWrite  é outra função que pode ser usada para escrever um valor digital (lógico 0 ou lógico alto) em um determinado pino que já foi feito como saída usando a função pinMode .
Por exemplo, para tornar o pino número 5 como lógico alto
digitalWrite(5, ALTO);
E para deixar o mesmo pino lógico baixo
digitalWrite(5, BAIXO);
leitura digital 
O digitalRead é uma função que serve para ler o valor (logic0 ou logic1) em um pino que já foi inserido usando a função pinMode .  Suponha que se o pino número 13 for um pino de entrada, então pode-se usar a função pinMode   para armazenar o valor do pino número 13 em uma variável 'var', conforme mostrado no exemplo a seguir;
var = leitura digital(13);
A função retorna o valor 0 ou 1 de acordo com a tensão existente no pino número 13 na variável 'var' que pode ser do tipo inteiro ou caractere.
atraso 
A função delay  é uma função muito útil para quase todos os projetos e pode gerar um atraso em milissegundos entre as etapas do código.
Por exemplo, para gerar um atraso de 5 segundos,
atraso(5000);
Assim que a codificação for concluída, verifique o código e carregue-o na placa Arduino conforme mencionado no projeto como começar com o arduino.
Código fonte do projeto
###
/*================================= EG LABS =======================================
 Turns on and off a light emitting diode(LED) connected to digital  
 pin 5, when pressing a pushbutton attached to pin 13. 
 
 The circuit:
 * LED attached from pin 5 to ground through a 1K resistor
 * pushbutton attached to pin 13 from +5V
 * 10K resistor attached to pin 13 from ground
//================================= EG LABS =======================================*/
// constants won't change. They're used here to 
// set pin numbers:
const int buttonPin = 13;             // the number of the pushbutton pin
const int ledPin =  5;                    // the number of the LED pin
// variables will change:
int buttonState = 0;                      // variable for reading the pushbutton status
void setup 
{
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);      
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);     
}
void loop 
{
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);
  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == HIGH) 
  {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);  
    delay(100);
  } 
  else 
  {
    // turn LED off:
    digitalWrite(ledPin, LOW); 
  }
}
###
 
Diagramas de circuito
| Diagrama de circuito usando entrada digital-saída digital-Arduino | 
  | 
 
Componentes do Projeto
- Arduino ProMini
 
- LIDERADO
 
- Resistor
 
 
Vídeo do projeto