/******************************************************************************* * * Projeto 59: Contador de cliques com display 7 segmentos - Arduino * http://squids.com.br/arduino * *******************************************************************************/ // Variaveis liga e desliga p/ display 7 segmentos const int l = 1, d = 0; // Display 7 segmentos (catodo comum) //const int l = 0, d = 1; // Display 7 segmentos (anodo comum) byte displaySeteSeg[10][7] = { { l,l,l,l,l,l,d }, //DIGITO 0 { d,l,l,d,d,d,d }, //DIGITO 1 { l,l,d,l,l,d,l }, //DIGITO 2 { l,l,l,l,d,d,l }, //DIGITO 3 { d,l,l,d,d,l,l }, //DIGITO 4 { l,d,l,l,d,l,l }, //DIGITO 5 { l,d,l,l,l,l,l }, //DIGITO 6 { l,l,l,d,d,d,d }, //DIGITO 7 { l,l,l,l,l,l,l }, //DIGITO 8 { l,l,l,d,d,l,l } //DIGITO 9 }; byte btesq=12; // botão decremento (esquerda) byte btdir=11; // botão incremento (direita int number = 0; // número a ser mostrado no display deve ser int (inteiros posit. e negat.) void setup(){ for (int i = 2; i < 10; i++) { pinMode(i, OUTPUT); //conexão pinos dos 7 segmentos + o ponto } pinMode(btesq, INPUT_PULLUP); pinMode(btdir, INPUT_PULLUP); } void loop() { if (digitalRead(btdir) == 0 ){ // verifica se o botão direito foi acionado number += 1; while (digitalRead(btdir) == 0) {} // loop vazio - aguarda soltar o botão (evita a númeração constante } if (!digitalRead(btesq)){ // verifica se o esquerdo foi acionado number -= 1; while (!digitalRead(btesq)) {} // loop vazio - aguarda soltar o botão (evita a númeração constante } // reseta em caso de estouro (<0 ou >9) if (number < 0) {number = 9;} if (number > 9) {number = 0;} // mostra o número no display for (int j = 2; j < 9; j++) { digitalWrite(j, displaySeteSeg[number][j-2]); } delay(150); // evitar que o botão seja acionado em um mesmo clique (quick interno) }