Contador com Botões no Arduíno UNO

Olá, como estão? A princípio iremos realizar um contador. Entretanto para esse projeto usaremos o KIT básico com Arduíno UNO da WJ Componentes.

Componentes Utilizados


OU

Funcionamento do Projeto Contador


Como foi comentado anteriormente, hoje iremos fazer um projeto para demonstrar como estar usar o botão no Arduíno UNO. Portanto iremos desenvolver um contador que incrementa +1, decrementa -1 ou reinicia a variável.

Montagem do Projeto Contador


Logo após compra dos componentes na WJ Componentes, vamos à montagem! Em seguida conectamos os botões na protoboard de um lado ligamos o GND da protoboard e do outro conectamos nos pinos 2, 3 e 4 do Arduíno UNO.

Obs.: cuidado ao conectar os botões, dependendo da forma que conecte eles podem não funcionar corretamente.

Contudo segue abaixo uma imagem que demonstra a montagem do circuito.

Push Button
Montagem do Circuito Eletrônico na Protoboard - Contador com Botões

Diagrama Esquemático do Projeto Contador


Diagrama do Circuito Eletrico - Contador com Botões

Código-fonte do Projeto Contador


Em seguida teremos o código completo do projeto do contador com Arduíno UNO.

//Definições -----------------------------------------------------------------------------------------
#define btn1 2                                               // Define pino do botão 1
#define btn2 3                                               // Define pino do botão 2
#define btn3 4                                               // Define pino do botão 3
	 
//Variáveis Globais ----------------------------------------------------------------------------------
byte cont = 0;                                               // Variável de Controle
	 
//Setup ----------------------------------------------------------------------------------------------
void setup() {
    Serial.begin(9600);                                      // Inicializa a serial com 9600
    pinMode(btn1, INPUT_PULLUP);                             // Configura o pino como INPUT PULL-UP
    pinMode(btn2, INPUT_PULLUP);                             // Configura o pino como INPUT PULL-UP
    pinMode(btn3, INPUT_PULLUP);                             // Configura o pino como INPUT PULL-UP
}
	 
//Loop -----------------------------------------------------------------------------------------------
void loop() {
    if(!digitalRead(btn1)){                                  // Verifica se o botão 1 foi pressionado
        cont++;                                              // Caso tenha incrementa +1 a cont
        while(!digitalRead(btn1)){delay(10);}                // Loop até que o botão 1 seja solto
        Serial.print(F("Contador: "));                       // Imprime a quantidade de cont na Serial
        Serial.println(cont);
    }
    else if(!digitalRead(btn2)){                             // Verifica se o botão 2 foi pressionado
        cont--;                                              // Caso tenha decrementa -1 a cont
        while(!digitalRead(btn2)){delay(10);}                // Loop até que o botão 2 seja solto
        Serial.print(F("Contador: " ));                      // Imprime a quantidade de cont na Serial
        Serial.println(cont); 
    }
    else if(!digitalRead(btn3)){                              // Verifica se o botão 3 foi pressionado
        while(!digitalRead(btn3)){cont = 0;}                  // Loop até que o botão 3 seja solto 
        Serial.println(F("Contador Reiniciado!"));            // Imprime que o contador foi reiniciado
    }
}

Vamos dar uma olhada mais de perto no código:

Definições de pinos

Primeiramente temos que estar definindo dos pinos que utilizamos em nosso projeto.

//Definições -----------------------------------------------------------------------------------------
#define btn1 2                                               // Define pino do botão 1
#define btn2 3                                               // Define pino do botão 2
#define btn3 4                                               // Define pino do botão 3

Variáveis Globais

Em seguida declaramos uma variável global para controle chamada cont, ela irá ser responsável por armazenar um valor que será impresso para o usuário.

//Variáveis Globais ----------------------------------------------------------------------------------
byte cont = 0;                                               // Variável de Controle

Função Setup

Então agora na função setup, iremos iniciar a serial com uma velocidade de 9600 e configurar os pinos dos botões como INPUT PULL-UP.

//Setup ----------------------------------------------------------------------------------------------
void setup() {
    Serial.begin(9600);                                      // Inicializa a serial com 9600
    pinMode(btn1, INPUT_PULLUP);                             // Configura o pino como INPUT PULL-UP
    pinMode(btn2, INPUT_PULLUP);                             // Configura o pino como INPUT PULL-UP
    pinMode(btn3, INPUT_PULLUP);                             // Configura o pino como INPUT PULL-UP
}

Função Loop

Indo agora para a função loop, iremos verificar se o botão 1 é igual a 0, ou seja, se o botão foi pressionado ou não. Contudo caso tenha sido pressionado iremos incrementar +1 a variável cont e fazemos um loop até que o botão seja solto. Assim que o botão for solto imprimimos o valor de cont na Serial. Em seguida realizamos esse mesmo procedimento para todos os botões, porém, ao invés de incrementar iremos decrementar ou atribuir 0 a cont.

//Loop -----------------------------------------------------------------------------------------------
void loop() {
    if(!digitalRead(btn1)){                                  // Verifica se o botão 1 foi pressionado
        cont++;                                              // Caso tenha incrementa +1 a cont
        while(!digitalRead(btn1)){delay(10);}                // Loop até que o botão 1 seja solto
        Serial.print(F("Contador: "));                       // Imprime a quantidade de cont na Serial
        Serial.println(cont);
    }
    else if(!digitalRead(btn2)){                             // Verifica se o botão 2 foi pressionado
        cont--;                                              // Caso tenha decrementa -1 a cont
        while(!digitalRead(btn2)){delay(10);}                // Loop até que o botão 2 seja solto
        Serial.print(F("Contador: " ));                      // Imprime a quantidade de cont na Serial
        Serial.println(cont); 
    }
    else if(!digitalRead(btn3)){                              // Verifica se o botão 3 foi pressionado
        while(!digitalRead(btn3)){cont = 0;}                  // Loop até que o botão 3 seja solto 
        Serial.println(F("Contador Reiniciado!"));            // Imprime que o contador foi reiniciado
    }
}

Assim finalizamos o código-fonte com a explicação do projeto contador com Arduíno UNO.

Resultado do Projeto


Por fim esse foi o resultado obtido com o projeto.

Serial - Contador com Botões

Agradecemos sua Presença


Por fim, espero que tenham gostado e aprendido. Então compartilhe com seus colegas e deixe um comentário de qual projeto deveria ser o próximo aqui no Blog da WJ Componentes!!
Enfim estarei deixando o arquivo do Arduíno e Fritzing, link dos posts anteriores referentes ao projeto e software e sites utilizados.
Fique à vontade para tirar suas dúvidas nos comentários.

Software e Sites Utilizados

Post Relacionados

Posts mais Recentes

Julio Cesar Bonow Manoel

Julio Cesar Bonow Manoel

Cursando Engenharia da Computação pelo Centro Universitário Facens e atua no desenvolvimento de projetos na WJ Componentes. Participante da equipe de robótica Omegabotz.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *