- PROJETO DADO ELETRÔNICO -

Com este projeto, você pode simular o funcionamento de um semáforo para carros e pedestres de maneira realista e educativa.
Nosso kit inclui todos os componentes necessários para montar um semáforo completo: LEDs que representam as luzes de trânsito para veículos e pedestres, e um buzzer que emite um som de alerta quando a luz dos pedestres está prestes a mudar.
Este kit é ideal tanto para iniciantes quanto para entusiastas da eletrônica e programação, proporcionando uma experiência educacional completa e envolvente.

Kit dado eletrônico acrilico
Kit dado eletrônico acrilico

O Kit Dado Eletrônico

O kit acompanha um Arduino SMD, uma protoboard de 400 pontos e uma base de acrílico utilizada para fixação dos mesmos, garantindo uma montagem estável e organizada. Além disso, inclui dois suportes de acrílico com conectores para LEDs, que devem ser fixados à protoboard, simulando os semáforos de carros e pedestres.

O semáforo de pedestres também possui acoplamento para o buzzer. Com todos esses componentes, o kit oferece tudo o que você precisa para montar e testar este projeto de maneira prática e eficiente.

Logo Arduino

Neste projeto acionartemos o dado através de um componente chamado LDR, ele fará a função de uma chave táctil, com a vantagem de não ser necessário nenhum contato fisico com o projeto, apenas passando levemente a mão na frente do mesmo.
Para que isso ocorra é necessário entender como fazer uma calibração de um valor médio do sinal para seu acionamento.

Kit Acrílico

Você já conhece nossos acessórios em acrílicos que tornam este projeto ainda mais atrativo e elegante? Isso mesmo disponibilizamos kits de acrílicos que facilitam a organização na montagem deste projeto.

ONDE COMPRAR
Kit dado eletrônico acrilico

Componentes Necessários

Logo abaixo temos a lista de componentes utilizado neste exemplo, e sua ligação com o Arduino.

  • 1 x Arduino Uno SMD
  • 1 x Cabo USB para comunicação
  • 1 x Protoboard 400 pontos
  • 1 x Buzzer Ativo
  • 7 x LEDs Vermelhos
  • 1 x LDR
  • 1 x Resistore 10K
  • 7 x Resistores 220Ω
  • 3 x Jumpers macho/macho
  • 18 x Jumpers macho/fêmea
Esquema dado eletrônico

Código exemplo

No método setup(), os pinos dos LEDs e do buzzer são configurados como saídas. Na função loop(), o semáforo para veículos é controlado, inicialmente acendendo o LED vermelho por 5 segundos, seguido pelo LED verde por mais 5 segundos e então o LED amarelo por 2 segundos. Enquanto isso, o semáforo para pedestres é sincronizado para emitir bipes sonoros e piscar o LED verde enquanto o semáforo de veículos está verde, indicando que é seguro atravessar.
Ao posicionar o cursor sobre o código apresentado, surgirão botões à direita da janela, permitindo que você o copie facilmente.

IDE Arduino

const int buzzer = 9;                       // Pino do Buzzer
const int ledPinos[] = {2, 3, 4, 5, 6, 7, 8};  // Pinos dos LEDs
const int ldr = A0;                       // Pino do Push Button
int Valorldr = 0; //variavel que ira receber o valor do LDR
int numero_dado = 0;
int resultado = 0;
boolean lendo = true;

void setup() {
  // Inicializa o gerador de números aleatórios com um valor único (por exemplo, tempo atual)
  randomSeed(analogRead(0));
  pinMode(ldr, INPUT);
  pinMode(buzzer, OUTPUT);
  Serial.begin(9600);

  for (int i = 0; i < 7; i++) {
    pinMode(ledPinos[i], OUTPUT);
  }
}

void loop() {
  
  if (lendo==true){
    
    Valorldr = analogRead(ldr); //O valor lido será entre 0 e 1023    
    if (Valorldr<=800){
      // Piscar LEDs aleatoriamente por 4 segundos
      for (int i = 0; i < 40; i++) {
        piscarAleatorio();
        delay(100);
      // Exibir resultado do dado
      resultado = random(1, 7);
      exibirResultado(resultado);
      }
      lendo = false;
      Serial.println("False");

      for (int i = 0; i < resultado; i++){
        // tone(buzzer,330,150);
        tone(buzzer,1000);
        delay(200);
        noTone(buzzer);
        delay(200);
      } 

      delay(2000);
      exibirResultado(0);
    } 
    Serial.println(Valorldr);
  }else{
   Serial.println("True");
  lendo = true;
}
  }


void piscarAleatorio() {
  for (int i = 0; i < 7; i++) {
    digitalWrite(ledPinos[i], random(2) == 0 ? HIGH : LOW);
  }
}

void exibirResultado(int numero) {
  // Desligar todos os LEDs
  for (int i = 0; i < 7; i++) {
    digitalWrite(ledPinos[i], LOW);
  }

  // Acender os LEDs correspondentes ao número
  switch (numero) {
    case 0:
      digitalWrite(ledPinos[0], LOW);
      digitalWrite(ledPinos[1], LOW);
      digitalWrite(ledPinos[2], LOW);
      digitalWrite(ledPinos[3], LOW);
      digitalWrite(ledPinos[4], LOW);
      digitalWrite(ledPinos[5], LOW);
      digitalWrite(ledPinos[6], LOW);
      Serial.println("0");
      break;
    case 1:
      digitalWrite(ledPinos[3], HIGH);
      Serial.println("1");
      break;
    case 2:
      digitalWrite(ledPinos[0], HIGH);
      digitalWrite(ledPinos[6], HIGH);
      Serial.println("2");
      break;
    case 3:
      digitalWrite(ledPinos[2], HIGH);
      digitalWrite(ledPinos[3], HIGH);
      digitalWrite(ledPinos[4], HIGH);
      Serial.println("3");
      break;
    case 4:
      digitalWrite(ledPinos[0], HIGH);
      digitalWrite(ledPinos[2], HIGH);
      digitalWrite(ledPinos[4], HIGH);
      digitalWrite(ledPinos[6], HIGH);
      Serial.println("4");
      break;
    case 5:
      digitalWrite(ledPinos[0], HIGH);
      digitalWrite(ledPinos[2], HIGH);
      digitalWrite(ledPinos[3], HIGH);
      digitalWrite(ledPinos[4], HIGH);
      digitalWrite(ledPinos[6], HIGH);
      Serial.println("5");
      break;
    case 6:
      digitalWrite(ledPinos[0], HIGH);
      digitalWrite(ledPinos[1], HIGH);
      digitalWrite(ledPinos[2], HIGH);
      digitalWrite(ledPinos[4], HIGH);
      digitalWrite(ledPinos[5], HIGH);
      digitalWrite(ledPinos[6], HIGH);
      Serial.println("6");
      break;
  }
}

IDE Arduino
Instituto Digital

Entendendo o código

Vamos entender o que cada parte do código faz:

1 - Definição dos pinos: No início do código, são definidos os pinos onde os LEDs e o buzzer estão conectados ao Arduino. Cada LED (vermelho_carros, amarelo_carros, verde_carros, vermelho_pedestres, verde_pedestres) e o buzzer têm seus próprios pinos designados.
2 - Configuração dos pinos: No setup(), os pinos são configurados como saídas (OUTPUT). Isso significa que esses pinos serão utilizados para enviar sinais de controle para os LEDs e o buzzer.
3 - Loop principal: O código entra no loop(), que é onde a lógica principal do semáforo é implementada. Aqui está o que acontece em cada parte do loop:
a. Primeira parte: Durante 7 segundos, o LED vermelho dos carros e o LED verde dos pedestres são acesos. Isso indica que é a vez dos pedestres atravessarem.
b. Segunda parte: O LED verde dos pedestres apaga e o vermelho dos pedestres pisca por 7 vezes com um intervalo de meio segundo cada. Durante cada piscada, o buzzer emite um som. Isso serve como um aviso sonoro para os pedestres que o tempo de travessia está acabando.
c. Terceira parte: Durante 7 segundos, o LED verde dos carros é aceso, enquanto todos os outros LEDs são apagados. Isso indica que é a vez dos carros seguirem.
d. Quarta parte: O LED amarelo dos carros é aceso por 3 segundos, indicando que o sinal está prestes a mudar para vermelho.
Após a execução do loop, o código retorna à primeira parte e repete todo o processo, simulando assim o funcionamento de um semáforo. O tempo de permanência de cada led acesso é apenas simbólico para o aprendizado, você pode altera-los de acordo com a necessidade do seu projeto.