Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Construa um Temporizador Regressivo Confiável com Arduino e Display de 7 Segmentos SparkFun

Componentes e Materiais

Componente Quantidade
Protoboard (genérico) 1
Jumpers (genéricos) 1
Display Serial de 7 Segmentos SparkFun - Vermelho 1
Cabo USB-A para Mini-USB 1
Arduino Mega 2560 1

Aplicativos e Serviços Online

Sobre o Projeto

Este projeto foi criado por necessidade: não tinha um temporizador à mão. Para utilizá-lo, basta fazer o upload do código para seu Arduino (qualquer modelo funciona) e a contagem regressiva iniciará automaticamente.

Para alterar o tempo total, modifique esta linha do código:

long n = 60000; // tempo inicial - PODE SER ALTERADO PARA QUALQUER TEMPO DESEJADO

Importante: 1000 = 1 segundo. Portanto, 60000 = 60 segundos. A fórmula (SEGUNDOS × 1000) fornece o valor a ser inserido no lugar de 60000. Ao pressionar o botão de reset, o contador reinicia automaticamente.

Código

O código abaixo controla o display de 7 segmentos de 4 dígitos diretamente (sem placa breakout), usando multiplexação para mostrar a contagem regressiva.

// Mapeamento de pinos: display de 7 segmentos -> pino Arduino
// pino 11 - A = 12 | pino 7 - B = 10 | pino 4 - C = 8 | pino 2 - D = 7
// pino 1 - E = 6  | pino 10 - F = 11 | pino 5 - G = 9  | pino 3 = decimal
// Dígitos: pino 12 = 1º | pino 9 = 2º | pino 8 = 3º | pino 6 = 4º

const int a = 12, b = 10, c = 8, d = 7, e = 6, f = 11, g = 9;
int p = 0;
int startStopReset = 13;
const int d1 = 1, d2 = 2, d3 = 3, d4 = 4;
long n = 60000; // tempo inicial em milissegundos (60s)
int x = 100;
int del = 55; // atraso em microssegundos para multiplexação

void setup() {
  pinMode(d1, OUTPUT); pinMode(d2, OUTPUT); pinMode(d3, OUTPUT); pinMode(d4, OUTPUT);
  pinMode(a, OUTPUT); pinMode(b, OUTPUT); pinMode(c, OUTPUT); pinMode(d, OUTPUT);
  pinMode(e, OUTPUT); pinMode(f, OUTPUT); pinMode(g, OUTPUT); pinMode(p, OUTPUT);
  pinMode(startStopReset, INPUT);
  digitalWrite(startStopReset, HIGH); // pull-up interno
}

void loop() {
  digitalWrite(p, HIGH);
  clearLEDs();
  pickDigit(1); pickNumber((n/x/1000)%10); delayMicroseconds(del);
  clearLEDs();
  pickDigit(2); pickNumber((n/x/100)%10); delayMicroseconds(del);
  clearLEDs();
  pickDigit(3); dispDec(3); pickNumber((n/x/10)%10); delayMicroseconds(del);
  clearLEDs();
  pickDigit(4); pickNumber(n/x%10); delayMicroseconds(del);
  
  n--; // use n++ para cronômetro progressivo
  
  if (digitalRead(13) == LOW) {
    n = 60000; // reinicia com o tempo original configurado
  }
}

void pickDigit(int x) {
  digitalWrite(d1, HIGH); digitalWrite(d2, HIGH);
  digitalWrite(d3, HIGH); digitalWrite(d4, HIGH);
  switch(x) {
    case 1: digitalWrite(d1, LOW); break;
    case 2: digitalWrite(d2, LOW); break;
    case 3: digitalWrite(d3, LOW); digitalWrite(p, HIGH); break;
    default: digitalWrite(d4, LOW); break;
  }
}

void pickNumber(int x) {
  switch(x) {
    default: zero(); break;
    case 1: one(); break; case 2: two(); break; case 3: three(); break;
    case 4: four(); break; case 5: five(); break; case 6: six(); break;
    case 7: seven(); break; case 8: eight(); break; case 9: nine(); break;
  }
}

void dispDec(int x) { digitalWrite(p, LOW); }

void clearLEDs() {
  digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW);
  digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW);
  digitalWrite(g, LOW); digitalWrite(p, LOW);
}

void zero()  { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, LOW); }
void one()   { digitalWrite(a, LOW);  digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW);  digitalWrite(e, LOW);  digitalWrite(f, LOW);  digitalWrite(g, LOW); }
void two()   { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, LOW);  digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, LOW);  digitalWrite(g, HIGH); }
void three() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW);  digitalWrite(f, LOW);  digitalWrite(g, HIGH); }
void four()  { digitalWrite(a, LOW);  digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW);  digitalWrite(e, LOW);  digitalWrite(f, HIGH); digitalWrite(g, HIGH); }
void five()  { digitalWrite(a, HIGH); digitalWrite(b, LOW);  digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW);  digitalWrite(f, HIGH); digitalWrite(g, HIGH); }
void six()   { digitalWrite(a, HIGH); digitalWrite(b, LOW);  digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, HIGH); }
void seven() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW);  digitalWrite(e, LOW);  digitalWrite(f, LOW);  digitalWrite(g, LOW); }
void eight() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, HIGH); }
void nine()  { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW);  digitalWrite(f, HIGH); digitalWrite(g, HIGH); }

Esquemático

Utilize o diagrama de conexão abaixo para ligar seu display de 4 dígitos ao Arduino:

Construa um Temporizador Regressivo Confiável com Arduino e Display de 7 Segmentos SparkFun

Processo de manufatura

  1. Crie um Sistema Ambilight Impressionante para Monitor com Arduino
  2. Construa o Clássico Jogo Pong no Arduino UNO com Display OLED – Tutorial Passo a Passo
  3. Detector de Frequência de Áudio com Arduino – Meça Picos de Som com Módulo de Alta Sensibilidade
  4. Construa Seu Próprio Tamagotchi com Arduino: Projeto DIY de Pet Digital
  5. Controlador Inteligente de Interruptor de Luz Sem Fio: Manipulador Remoto Baseado em Arduino
  6. Jogo da Velha com Arduino, Matriz LED MAX7219 e Caixa de Papelão
  7. Pistola de Água Inteligente com Detecção de Movimento usando Arduino Nano
  8. Timer de Lavagem de Mãos com Arduino: Ferramenta DIY Simples para Combater a COVID‑19
  9. Girassol Eletrônico com Arduino: Rastreador Solar Autônomo
  10. Construa Seu Próprio Carro RC Porsche com Arduino: Guia Passo a Passo