Índice:

Semáforo interativo inteligente: 5 etapas (com imagens)
Semáforo interativo inteligente: 5 etapas (com imagens)

Vídeo: Semáforo interativo inteligente: 5 etapas (com imagens)

Vídeo: Semáforo interativo inteligente: 5 etapas (com imagens)
Vídeo: Semáforo Sincronizado com Arduino 2024, Novembro
Anonim
Semáforo interativo inteligente
Semáforo interativo inteligente

Pronto para construir o melhor e mais interativo semáforo do mundo? Boa! Neste tutorial, explicaremos como você pode construir um sozinho usando o Arduino.

Componentes necessários: - Arduino (..duh) - LM317 Mosfet - Tiras de LED RGB analógico 2x 60cm (12V) - Tubo de PVC (1m x 125mm) - Cabos (vermelho e preto) - Placas de metal para capas de luz - Acril para a luz -icons (verifique flaticon.com para ícones.svg) - Tinta spraycan preto e branco.- Fita isolante- Todos os componentes de soldagem necessários- Visor com proteção necessária (não usado no tutorial)

Etapa 1: Etapa 1: fazer as capas luminosas

Etapa 1: faça as capas luminosas
Etapa 1: faça as capas luminosas

O design é realmente com você. Fizemos uma tampa de 15x15cm para segurar as luzes. Cortamos as placas de metal no tamanho correto e usamos um dobrador de metal (não, não do Avatar) para dobrar as tampas nas formas corretas. As placas traseiras foram feitas de um componente diferente.

Etapa 2: Etapa 2: Preparação do poste de PVC

Etapa 2: Preparando o poste de PVC
Etapa 2: Preparando o poste de PVC

Faça 2 furos no poste de PVC para encaixar as capas de luz. Em seguida, use uma lata de spray de tinta preta para pintar tudo de preto. Se desejar, você pode adicionar listras brancas na parte inferior do mastro (comum na Holanda).

Etapa 3: Etapa 3: montagem das tiras de LED RGB e jato de areia das placas de acrílico

Etapa 3: montagem das tiras de LED RGB e jato de areia das placas de acrílico
Etapa 3: montagem das tiras de LED RGB e jato de areia das placas de acrílico
Etapa 3: montagem das tiras de LED RGB e jato de areia das placas de acrílico
Etapa 3: montagem das tiras de LED RGB e jato de areia das placas de acrílico

Em seguida, você precisará montar as tiras de LED RGB dentro da tampa de luz. Ajuste-os firmemente ao redor da tampa e coloque-os o mais próximo possível da frente.

Em seguida, você precisará jatear o símbolo selecionado para na placa de acrílico. Pegue um pouco de fita e cubra toda a placa de acrílico. Em seguida, corte a forma / figura que você deseja. Depois disso, você pode jatear a placa para obter um efeito de vidro fosco.

Etapa 4: Etapa 4: conectar as tiras de LED RGB ao Arduino

Etapa 4: Conecte as fitas de LED RGB ao Arduino
Etapa 4: Conecte as fitas de LED RGB ao Arduino

Agora vem a parte complicada: conectar as fitas de LED RGB ao Arduino. Ao conectar os pinos certifique-se de colocar 12v nos 12v da sua tira. Entre cada cor, seja vermelha ou verde, você precisa colocar um mosfet. Conecte os dados da faixa de led ao pino do meio do mosfet e o pino esquerdo ao seu Arduino. O pino certo deve voltar ao solo do Arduino.

Etapa 5: Etapa 5: escrever o código do Arduino

Etapa 5: escrever o código do Arduino
Etapa 5: escrever o código do Arduino

Este código do Arduino é controlado por bluetooth, pois não usamos um display interno. Portanto, o código é controlado por meio de mensagens bluetooth na função loop ().

#define r 6 # define g 11 #include

SoftwareSerial mySerial (10, 11); // RX, TX

#define angryLength 4

#define fallingLength 3 #define happyLength 4 #define onPhoneLength 13 #define talkingLength 5 #define walkingLength 4 #define walkingOutLength 4 #define wavesLength 6

bool buttonPressed;

int currentMillis; int previousMillis;

int animation1Delay;

int animation2Delay; int animation3Delay; int animation4Delay;

bool animation1Done = false;

bool animation2Done = false; bool animation3Done = false; bool animation4Done = false; bool animation5Done = false;

bool blockLight = false;

bool lightRed = true;

int currentAnimationDelay;

void setup () {

// coloque seu código de configuração aqui, para executar uma vez: pinMode (r, OUTPUT); pinMode (g, OUTPUT);

Serial.begin (9600);

mySerial.begin (38400); Serial.setTimeout (25); buttonPressed = false; currentMillis = 0; anteriorMillis = 0;

animation1Delay = walkingLength * 1000;

animation2Delay = wavesLength * 1000; animation3Delay = happyLength * 1000; animation4Delay = walkingOutLength * 1000;

// currentAnimationDelay = animation1Delay * 1000;

lightRed = true; }

void loop () {

// atraso (20);

// coloque seu código principal aqui, para executar repetidamente: unsigned long currentMillis = millis (); if (buttonPressed == true) {if (animation1Done == false) {if (currentMillis - previousMillis> animation1Delay) {Serial.println ("0"); anteriorMillis = currentMillis; animation1Done = true; }} else if (animation2Done == false and animation1Done == true) {if (currentMillis - previousMillis> animation2Delay) {Serial.println ("1"); anteriorMillis = currentMillis; animation2Done = true; }} else if (animation3Done == false and animation2Done == true) {if (currentMillis - previousMillis> animation3Delay) {Serial.println ("2"); //Serial.println("sound:green "); anteriorMillis = currentMillis; animation3Done = true; lightRed = false; }} else if (animation4Done == false and animation3Done == true) {if (currentMillis - previousMillis> animation4Delay) {previousMillis = currentMillis; animation4Done = true; Serial.println ("FLSH"); }}}

if (Serial.available ()) {

String str = Serial.readString (); if (str == "CMD: BUTTON_PRESSED") {

animation1Done = false;

animation2Done = false; animation3Done = false; animation4Done = false; animation5Done = false;

animation1Delay = walkingLength * 1000;

animation2Delay = wavesLength * 1000; animation3Delay = happyLength * 1000; animation4Delay = walkingOutLength * 1000;

// currentAnimationDelay = animation1Delay * 1000;

lightRed = true; Serial.println ("3"); buttonPressed = true; anteriorMillis = currentMillis; }

if (str == "RED") {

blockLight = false; lightRed = true; }

if (str == "VERDE") {

blockLight = false; lightRed = false; }

if (str == "LUZ: VERDE: DESLIGADO") {

blockLight = true; analogWrite (g, 255); } if (str == "LIGHT: GREEN: ON") {blockLight = true; analogWrite (g, 0); } //Serial.println(str); }

if (blockLight == false) {

if (lightRed == true) {

analogWrite (r, 0); analogWrite (g, 255); } if (lightRed == false) {analogWrite (r, 255); analogWrite (g, 0); }}}

Recomendado: