Este exemplo mostra como monitorar o estado de um interruptor estabelecendo a comunicação serial entre seu Arduino e o computador através da USB.

O Que Vou Aprender?

- Controlar uma entrada digital
- Ver dados pelo computador
- Monitor Serial
- Ler uma entrada digital

Conhecimentos Prévios

- Sinal digital
- Função digitalRead() e Serial.print
- Função digitalWrite() e Operadores de comparação

Código Fonte

Download do arquivo em formato .ino

Materiais Necessários

Para este tutorial você vai precisar de 1 Arduino Uno R3, 1 LED, 1 botão, 1 Resistor 10kΩ, 1 Protoboard, 1 Cabo USB - AB e Jumpers premium. Ou você pode utilizar os componentes do Kit Iniciante com Arduino Uno R3.

Tutorial Multilógica-Shop Arduino Botão

 

Diagrama

Tutorial Multilógica-Shop Arduino Botão

 

Código Fonte

Neste programa a primeira coisa que você vai fazer na função de configuração é começar a comunicação serial a 9600 bits de dados por segundo entre o Arduino e seu computador:

Serial.begin (9600);

Lembre-se de colocar o valor 9600 também no Monitor Serial (como explicado na página 73 do Guia Iniciante Arduino Multilógica-Shop).

Em seguida, inicializar o pino digital 2, o pino que vai fazer a leitura do botão como uma entrada digital:

int pushButton = 2;

Quando o botão for pressionado, 5 volts fluirão livremente através de seu circuito, e quando não for pressionado o pino de entrada será ligado ao terra. Esta é uma entrada digital, o que significa que a chave só pode ter um estado (visto pelo seu Arduino como "1", ou HIGH) ou um estado off (visto pelo seu Arduino como um "0", ou LOW), sem nada no meio.

Agora quando você abrir o seu Monitor Serial no ambiente Arduino você verá um fluxo de "0" se a sua chave estiver aberta, ou "1" se a sua chave estiver fechada.

/*
  DigitalReadSerial
  Le a entrada digital no pino 2 e imprime o resultado no monitor serial.
  Este exemplo e de dominio publico.
*/

int pushButton = 2;        // o pino 2 tem um botao ligado nele.
int ledPin = 13;           // entrada do LED no pino 13.

void setup() {
  // Inicializa a comunicacao serial a 9600 bits por segundo:
  Serial.begin(9600);
 
  pinMode(pushButton, INPUT);       // define o botao como uma entrada.
  pinMode(ledPin, OUTPUT);          //define o LED como uma saída.
}

void loop() {
  // faz a leitura do pino de entrada:
  int buttonState = digitalRead(pushButton);
  if (buttonState == 1) {
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }
  // imprime o estado do botao:
  Serial.println(buttonState);
  delay(1);        // delay entre leituras (em milissegundos)
}

 

Dicas

1 - O sistema binário é um sistema de numeração posicional em que todas as quantidades se representam com base em dois números, ou seja, zero e um (0 e 1). Os computadores trabalham internamente com dois níveis de tensão, pelo que o seu sistema de numeração natural é o sistema binário (aceso, apagado).

O sistema binário é base para a álgebra booleana que permite fazer operações lógicas e aritméticas usando-se apenas dois dígitos ou dois estados (sim e não, falso e verdadeiro, tudo ou nada, 1 ou 0, ligado e desligado). Toda a eletrônica digital e computação está baseada nesse sistema binário e na lógica de Boole, que permite representar por circuitos eletrônicos digitais (portas lógicas) os números, caracteres, realizar operações lógicas e aritméticas. Os programas de computadores são codificados sob forma binária e armazenados nas mídias (memórias, discos, etc) sob esse formato.

2 - Para lembrar:

- Para ler um sinal digital use: digitalRead(numeroPin).
- Para escrever um sinal digital use: digitalWrite(numeroPin, valor).
- Uma saída ou entrada digital sempre é HIGH ou LOW.

 

Exercício 1

Aqui faremos mais um exercício usando a mesma montagem deste Tutorial.
Uma vez que você tenha o botão funcionando, muitas vezes você quer fazer alguma ação com base no número de vezes que o botão for pressionado. Para isso, você precisa saber quando o botão muda de estado de desligado para ligado, e contar quantas vezes essa mudança de estado acontece. Isso é chamado de detecção de mudança de estado. Cada 4 pulsações o LED será ligado.


/*

Contador de pulsos (edge detection)
  criado em 27/09/2005, modificado em 30/08/2011 por Tom Igoe
  Este exemplo e de dominio publico.   
  http://arduino.cc/en/Tutorial/ButtonStateChange
*/

// constantes nao sao alteradas:
const int buttonPin = 2;     // o numero do pino do botao
const int ledPin = 13;       // o numero do pino do LED

// variaveis que devem mudar:
int buttonPushCounter = 0;   // contador para o numero de impressoes do botao
int buttonState = 0;         // atual estado do botao
int lastButtonState = 0;     // anterior estado do botao

void setup() {
  pinMode(buttonPin, INPUT);     // inicializa o pino do botao como entrada
  pinMode(ledPin, OUTPUT);       // inicializa o pino digital como saida
  Serial.begin(9600);            // inicializa a comunicacao serial
}

void loop() {
  // faz a leitura do valor do botao:
  buttonState = digitalRead(buttonPin);

  // compara o estado atual do botao com seu estado anterior
  if (buttonState != lastButtonState) {
    // se o estado do botao foi alterado, incrementar o contador
    if (buttonState == HIGH) {
      buttonPushCounter++;
      Serial.print("numero de pulsos:  ");
      Serial.println(buttonPushCounter);
    }
 }
      // salva o estado atual do botao como ultimo estado para iniciar o                    
      // proximo loop
  lastButtonState = buttonState;

  // Liga o LED cada 4 pulsacoes checando o modulo de contador de botao
     if (buttonPushCounter % 4 == 0) {
     digitalWrite(ledPin, HIGH);
     }else {
     digitalWrite(ledPin, LOW);
  }
}

Código Fonte

Download do arquivo do Exercício 1 em formato .ino

 

Este tutorial é parte integrante do Guia Iniciante Arduino, desenvolvido pela equipe da Multilógica-Shop. Faça download grátis do arquivo com 11 tutoriais. Neste guia você também vai encontrar, além de indicações de instalação e tutoriais, uma grande quantidade de informações sobre todo o ambiente que está ao redor desta plataforma.

Guia Arduino Iniciante Multilógica-Shop