Contador com Arduino

Contador com Arduino

Espalhe o amor!
  • 1
    Share

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.

Arduino

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.

Conntador com Arduino

Monte, teste, invente, modifique, mas não deixe de fazer para aprender.

Asista o video

Pagina oficial do Arduino

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 ++;

}


Espalhe o amor!
  • 1
    Share

Deixe uma resposta

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