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.
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.
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.
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 COMPRARconst 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; } }
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.