- Tweet
- 1Share
E vamos para mais um projeto com Arduino, é um contador up down, com display de leds.
Temos dois botões, um para imcrementar a contagem e outro para decrementar.
Serve de base para outros projetos, e aqui vai uma variação.

Um contador que quando chega a um certo valor, encerra a contagem e aciona um dispositivo de alarme;.
Pode ser um buzzer, no caso aqui mostrado um som gerado pelo próprio arduino é reproduzido por um pequeno alto falante.
Mas podemos usar varias formas de indicar que o numero que foi pre-determinado na programação foi atingido.
Uma sirene uma lampada e muitos outros meios de indicação.
Com um botão para incrementar e outro para decrementar a contagem, que podem ser substituidos por um sensor de presença, por exemplo.
Isso é muiito útil nessa época de pandemia, para contar pessoas que entram e saem de um estabelecimento comercial.
Cda pessoa que entra aumenta um numero e cada pessoa que sai, diminui.
E se atingir o numero pre determinado na programação, o indicador é acionado para que não entre mais ninguém.

Monte, teste, invente, modifique, mas não deixe de fazer para aprender.
Asista o video
Codigo a ser programado
//Conta sobe desce com botao, anodo ou catodo comum
// 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
}
Conta ate atingir numero pre programado
//prtotipo das funçoes
void numero0 (void);
void numero1 (void);
void numero2 (void);
void numero3 (void);
void numero4 (void);
void numero5 (void);
void numero6 (void);
void numero7 (void);
void numero8 (void);
void numero9 (void);
int SEGA = 2;
int SEGB = 3;
int SEGC = 4;
int SEGD = 5;
int SEGE = 6;
int SEGF = 7;
int SEGG = 8;
int BOT1 = 11;
int BOT2= 12;
int led1 = 13;
int x=0;
const int duracao =2000;
int freq = 0;
void setup()
{
pinMode(SEGA, OUTPUT);
pinMode(SEGB, OUTPUT);
pinMode(SEGC, OUTPUT);
pinMode(SEGD, OUTPUT);
pinMode(SEGE, OUTPUT);
pinMode(SEGF, OUTPUT);
pinMode(SEGG, OUTPUT);
pinMode (BOT1, INPUT_PULLUP);
pinMode (BOT2, INPUT_PULLUP);
}
void loop(){
if (digitalRead(BOT1)==0)
{
delay(200);//pode mudar o delay
x ++;
}
if (digitalRead(BOT2)==0)
{
delay(1000);//pode mudar o delay
x –;
}
if(x==0) numero0();
if(x==1) numero1();
if(x==2) numero2();
if(x==3) numero3();
if(x==4) numero4();
if(x==5) numero5();
if(x==6) numero6();
if(x==7) numero7();
if(x==8) numero8();
if(x==9) numero9();
if(x==10) numero0();
delay(200);
if (x > 9) {x = 0;}
if(x==5){
for (freq = 200; freq < 2000; freq++)
{
tone(led1, freq, duracao);
delay(2);
}
for (freq = 2000; freq > 200; freq –)
{
tone(led1, freq, duracao);
delay(2);
}
delay(100);
x=0;
}
}
void numero0 ()
{ digitalWrite (SEGA, LOW);
digitalWrite (SEGB, LOW);
digitalWrite (SEGC, LOW);
digitalWrite (SEGD, LOW);
digitalWrite (SEGE, LOW);
digitalWrite (SEGF, LOW);
digitalWrite (SEGG, HIGH);
}
void numero1()
{ digitalWrite (SEGA, HIGH);
digitalWrite (SEGB, LOW);
digitalWrite (SEGC, LOW);
digitalWrite (SEGD, HIGH);
digitalWrite (SEGE, HIGH);
digitalWrite (SEGF, HIGH);
digitalWrite (SEGG, HIGH);
}
void numero2()
{ digitalWrite (SEGA, LOW);
digitalWrite (SEGB, LOW);
digitalWrite (SEGC, HIGH);
digitalWrite (SEGD, LOW);
digitalWrite (SEGE, LOW);
digitalWrite (SEGF, HIGH);
digitalWrite (SEGG, LOW);
}
void numero3()
{ digitalWrite (SEGA, LOW);
digitalWrite (SEGB, LOW);
digitalWrite (SEGC, LOW);
digitalWrite (SEGD, LOW);
digitalWrite (SEGE, HIGH);
digitalWrite (SEGF, HIGH);
digitalWrite (SEGG, LOW);
}
void numero4()
{ digitalWrite (SEGA, HIGH);
digitalWrite (SEGB, LOW);
digitalWrite (SEGC, LOW);
digitalWrite (SEGD, HIGH);
digitalWrite (SEGE, HIGH);
digitalWrite (SEGF, LOW);
digitalWrite (SEGG, LOW);
}
void numero5()
{ digitalWrite (SEGA, LOW);
digitalWrite (SEGB, HIGH);
digitalWrite (SEGC, LOW);
digitalWrite (SEGD, LOW);
digitalWrite (SEGE, HIGH);
digitalWrite (SEGF, LOW);
digitalWrite (SEGG, LOW);
}
void numero6()
{ digitalWrite (SEGA, LOW);
digitalWrite (SEGB, HIGH);
digitalWrite (SEGC, LOW);
digitalWrite (SEGD, LOW);
digitalWrite (SEGE, LOW);
digitalWrite (SEGF, LOW);
digitalWrite (SEGG, LOW);
}
void numero7()
{ digitalWrite (SEGA, LOW);
digitalWrite (SEGB, LOW);
digitalWrite (SEGC, LOW);
digitalWrite (SEGD, HIGH);
digitalWrite (SEGE, HIGH);
digitalWrite (SEGF, HIGH);
digitalWrite (SEGG, HIGH);
}
void numero8()
{ digitalWrite (SEGA, LOW);
digitalWrite (SEGB, LOW);
digitalWrite (SEGC, LOW);
digitalWrite (SEGD, LOW);
digitalWrite (SEGE, LOW);
digitalWrite (SEGF, LOW);
digitalWrite (SEGG, LOW);
}
void numero9()
{ digitalWrite (SEGA, LOW);
digitalWrite (SEGB, LOW);
digitalWrite (SEGC, LOW);
digitalWrite (SEGD, LOW);
digitalWrite (SEGE, HIGH);
digitalWrite (SEGF,LOW);
digitalWrite (SEGG, LOW);
}
Conta ate atingir numero, dispara aviso, acende led
//prtotipo das funçoes
void numero0 (void);
void numero1 (void);
void numero2 (void);
void numero3 (void);
void numero4 (void);
void numero5 (void);
void numero6 (void);
void numero7 (void);
void numero8 (void);
void numero9 (void);
int SEGA = 2;
int SEGB = 3;
int SEGC = 4;
int SEGD = 5;
int SEGE = 6;
int SEGF = 7;
int SEGG = 8;
int BOT1 = 11;
int BOT2= 12;
int led1 = 13;
int x=0;
const int duracao =2000;
int freq = 0;
void setup()
{
pinMode(SEGA, OUTPUT);
pinMode(SEGB, OUTPUT);
pinMode(SEGC, OUTPUT);
pinMode(SEGD, OUTPUT);
pinMode(SEGE, OUTPUT);
pinMode(SEGF, OUTPUT);
pinMode(SEGG, OUTPUT);
pinMode (BOT1, INPUT_PULLUP);
pinMode (BOT2, INPUT_PULLUP);
}
void loop(){
if (digitalRead(BOT1)==0)
{
delay(200);//pode mudar o delay
x ++;
}
- Tweet
- 1Share