Índice:

Projeção Azimutal 3D Decoração de Mapa X Folk Music Puzzle Game - Arduino: 7 Passos
Projeção Azimutal 3D Decoração de Mapa X Folk Music Puzzle Game - Arduino: 7 Passos
Anonim
Image
Image
Projete o quadro
Projete o quadro

INTRODUÇÃO

A página a seguir irá instruí-lo sobre como criar um projeto Arduino, que tem duas funções principais - decoração simples com iluminação e jogo de quebra-cabeça de música folclórica, que incorpora os campos de geografia, geometria, mapas, Nações Unidas e música, todos juntos em um. Construído sobre a estrutura de hexágonos, o dispositivo retrata o mapa-múndi na Projeção Azimutal Equidistante, que é a forma de projeção cartográfica utilizada pelas Nações Unidas (e seu símbolo).

Ao ativar o modo de decoração, os continentes do mapa brilhariam em cores diferentes determinadas por combinações aleatórias de valores RGB por meio do uso de LEDs RGB.

O modo de jogo, por outro lado, exige que os usuários reconheçam a origem das canções de música folclórica (selecionadas por números gerados aleatoriamente de 1 a 20) e coloquem o tabuleiro continental de sua resposta em sua posição correspondente no tabuleiro de madeira principal dentro de um conjunto tempo (predefinido para 1 minuto).

_

SUPRIMENTOS

Materiais Reais

  • LEDs RGB de 5 mm * 20
  • Fios
  • Resistores * 9
  • Placa Arduino * 1 (qualquer tipo)
  • Pranchas de ensaio * 3
  • Botões * 7
  • Placa de exibição LCD I2C * 1
  • Caixa de papelão (13 * 9 * 5,7 polegadas; 33 * 23 * 14,5 cm)
  • Placa de madeira (37,5 * 29 * 0,8 cm)
  • Placas acrílicas (transparentes * 2, semitransparentes * 1)
  • Carregador portátil * 1

Ferramentas:

  • Blade * 1
  • Adesivos de cura UV * 1
  • Fita dupla-face * 1 rolo
  • Pistola de cola quente * 1

Máquinas:

Máquina de corte a laser

Programas:

  • Adobe Illustrator
  • Adobe Photoshop
  • Rhino 3D

Etapa 1: projetar o quadro

Você pode baixar diretamente o arquivo anexado ou seguir as etapas abaixo.

Delineando o mapa

  1. Baixe um esboço do mapa do Google

    1. "Logotipo das nações unidas" do Google
    2. Selecione "ferramentas - tamanho - grande"
    3. Baixe sua imagem favorita (a usada por este projeto: link) * Tente não selecionar aquelas com linhas complicadas sobrepostas às terras continentais *
  2. Transfira o mapa baixado para a versão impressa
    1. Pinte as regiões indesejáveis em branco usando a função de pincel no Adobe Photoshop
    2. Exporte o arquivo (JPEG)
    3. Importe o arquivo para o Adobe Illustrator e use a função "rastreamento de imagem" para traçar o mapa
    4. Exporte o arquivo (dxf)

Adicionando o Fundo Hexágono

  1. Importe o arquivo dxf para o Rhino
  2. Selecione a função "polígono" e digite "6" para a opção "NumSides"
  3. Digite "3,5" para o valor do raio
  4. Desenhe 28 hexágonos de tamanhos iguais
  5. Exporte o arquivo em 3dm

Etapa 2: Corte a laser

Image
Image
Corte a laser
Corte a laser
Corte a laser
Corte a laser
Corte a laser
Corte a laser
  1. Importe o arquivo concluído anteriormente para xxx.
  2. Usando a máquina de corte a laser, imprima o corpo principal na placa de madeira e os continentes nas placas de acrílico (2 transparentes e 1 semitransparente) (os vídeos são fornecidos acima)

Etapa 3: construir o dispositivo

Construir o Dispositivo
Construir o Dispositivo
Construir o Dispositivo
Construir o Dispositivo
Construir o Dispositivo
Construir o Dispositivo

Tábuas após corte a laser

  • Continentes acrílicos

    1. Use os adesivos curáveis por UV para colar as três placas de cada continente (com a semitransparente como a camada do meio)
    2. Use a luz ultravioleta para brilhar nas regiões coladas, a fim de permitir que as colas se solidifiquem
  • Fundação de tábua de madeira
    1. Remova manualmente as pequenas regiões de terra presas na placa de madeira principal
    2. * Se qualquer parte da placa de madeira estiver quebrada, use os adesivos curáveis por UV para colá-la de volta *

Construindo a Base (Fundação Inferior de Todo o Dispositivo)

  1. Encontre uma caixa de papelão de tamanho adequado, com dimensões próximas de 13 * 9 * 5,7 polegadas (33 * 23 * 14,5 cm)
  2. Usando a placa de madeira como modelo de referência, trace as partes continentais na superfície superior da caixa
  3. Trace a parte inferior dos botões na superfície superior da caixa, com cada botão centralizado dentro de cada parte continental traçada
  4. Use uma lâmina para cortar as partes do botão seguindo os traços
  5. Dentro das partes continentais traçadas, use uma lâmina para cortar segmentos curtos ao redor do botão
  6. Trace mais duas partes inferiores do botão no lado direito da caixa (tente alinhar os traços com a mesma altura)
  7. Rastreie a placa do visor LCD no lado direito da caixa (acima dos dois botões na etapa anterior)
  8. Use uma lâmina para cortar as duas partes do botão e a parte do LCD seguindo os traços nas etapas 6 e 7

Etapa 4: construir os circuitos

Construa os Circuitos
Construa os Circuitos

Referindo-se aos esquemas acima, construa o circuito.

Observação:

  • Os resistores dos LEDs RGB e dos botões são diferentes, OLHE CLARAMENTE!
  • Visto que a placa de exibição de LCD acima não tem o modelo I2C, ela não está conectada perfeitamente. (Placas de exibição de LCD com modelos I2C só precisam conectar quatro pinos)

    • Conecte GNDs no displayer e na placa Arduino
    • Conecte o VCC no displayer com os pinos positivos na placa de ensaio
    • Conecte os SDAs no displayer e a placa Arduino
    • Conecte os SCLs no displayer e a placa Arduino

Etapa 5: faça upload do código

O código para este projeto pode ser encontrado aqui ou abaixo.

Cada linha de codificação tem uma nota lateral que explica seu propósito e função.

Observação:

  • Todos os pinos D específicos podem ser alterados e ajustados com base no layout do seu circuito
  • Todos os segundos atrasados podem ser alterados para valores diferentes, mas NÃO OS EXCLUA! (Esses segundos atrasados permitem que o código flua mais logicamente. Sem eles, algumas partes do código podem não funcionar!)
  • Na linha 24 (a introdução do "loop for"), você pode designar o número de repetições que você gostaria que o loop executasse (o valor original é 5)
  • A combinação de cores dos LEDs RGB nos loops "se pressionado" e "se não pressionado" de cada botão pode ser ajustada e personalizada. (Originalmente, os LEDs RGB brilhariam em verde se pressionados e brilhariam em vermelho se não fossem pressionados. Você pode alterar os valores para ter cores criativas para responder CERTO e ERRADO)

#incluir

#include LiquidCrystal_I2C lcd_I2C_27 (0x27, 16, 2); // define o endereço LCD para um display de 16 caracteres e 2 linhas int _R; // introduz a variável R, que representa o valor vermelho dos LEDs RGB int _G; // introduza a variável G, que representa o valor verde dos LEDs RGB int _B; // introduz a variável B, que representa o valor azul dos LEDs RGB int _SongNumber; // introduza a variável SongNumber void setup () {pinMode (10, INPUT); // define D10 como entrada para o botão de decoração do mapa pinMode (9, INPUT); // define D9 como entrada para o botão do jogo de quebra-cabeça pinMode (8, INPUT); // define D8 como entrada para o botão Eurasia pinMode (4, INPUT); // define D4 como entrada para o botão América do Norte pinMode (3, INPUT); // define D3 como entrada para o botão da América do Sul pinMode (2, INPUT); // define D2 como entrada para o botão África pinMode (1, INPUT); // define D1 como entrada para o botão Oceania lcd_I2C_27.init (); // inicializa a placa do display LCD lcd_I2C_27.backlight (); // liga a luz de fundo da placa do visor LCD} void loop () {if (digitalRead (10)) {// se o botão de decoração do mapa for pressionado para (int i = 0; i <5; ++ i) {// executa o seguinte loop 5 vezes _R = random (0, 1023); // dá à variável R um valor aleatório de 0 a 1023 _G = random (0, 1023); // dá à variável G um valor aleatório de 0 a 1023 _B = random (0, 1023); // dá à variável B um valor aleatório de 0 a 1023 analogWrite (13, (_R / 4)); // o valor R dos LEDs RGB para o primeiro grupo substitui e grava o valor da variável de 0 a 255 analogWrite (12, (_G / 4)); // o valor G dos LEDs RGB para o primeiro grupo substitui e escreve o valor da variável de 0 a 255 analogWrite (11, (_B / 4)); // o valor B dos LEDs RGB para o primeiro grupo substitui e escreve o valor da variável de 0 a 255 analogWrite (7, (_R / 4)); // o valor R dos LEDs RGB para o segundo grupo substitui e escreve o valor da variável de 0 a 255 analogWrite (6, (_G / 4)); // o valor G dos LEDs RGB para o segundo grupo substitui e escreve o valor da variável de 0 a 255 analogWrite (5, (_B / 4)); // o valor B dos LEDs RGB para o segundo grupo substitui e escreve o valor da variável de 0 a 255 delay (3000); // aguarde 3.000 milissegundos (3 segundos)} // uma vez que os valores das variáveis R, G, B são determinados no loop, haveria cinco combinações de cores diferentes por loop} if (digitalRead (9)) {// if o botão do jogo de quebra-cabeça é pressionado _SongNumber = random (1, 20); // dá à variável SongNumber um valor aleatório de 1 a 20 lcd_I2C_27.setCursor (0, 0); // define o cursor, a contagem começa com 0 lcd_I2C_27.print (_SongNumber); // imprime o valor de SongNumber na placa do display LCD analogWrite (13, 0); // redefine e escreve o valor de D13 como 0 analogWrite (12, 0); // redefine e escreve o valor de D12 como 0 analogWrite (11, 0); // redefine e escreve o valor de D11 como 0 analogWrite (7, 0); // redefine e escreve o valor de D7 como 0 analogWrite (6, 0); // redefine e escreve o valor de D6 como 0 analogWrite (5, 0); // redefina e escreva o valor de D5 como 0 if (_SongNumber> = 1 && _SongNumber = 4 && _SongNumber = 7 && _SongNumber = 11 && _SongNumber = 15 && _SongNumber = 18 && _SongNumber <= 20) {// se o valor de a variável SongNumber é de 18 a 20 atrasos (60000); // espera por 60000 milissegundos para que os jogadores ouçam a música folk (60 segundos; 1 min) if (digitalRead (1)) {// se o botão Oceania for pressionado analogWrite (13, 0); // analogWrite o valor de D13 como 0 analogWrite (12, 255); // analogWrite o valor de D12 como 255 analogWrite (11, 0); // analogWrite o valor de D11 como 0 analogWrite (7, 0); // analogWrite o valor de D7 como 0 analogWrite (6, 255); // analogWrite o valor de D6 255 analogWrite (5, 0); // analogWrite o valor de D5 como 0} // todos os LEDs RGB brilhariam na cor verde else {// se o botão Oceania não fosse pressionado analogWrite (13, 255); // analogWrite o valor de D13 como 255 analogWrite (12, 0); // analogWrite o valor de D12 como 0 analogWrite (11, 0); // analogWrite o valor de D11 como 0 analogWrite (7, 255); // analogWrite o valor de D7 como 255 analogWrite (6, 0); // analogWrite o valor de D6 como 0 analogWrite (5, 0); // analogEscreva o valor de D5 como 0} // todos os LEDs RGB brilhariam na cor vermelha} // uma vez que as respostas corretas para SongNumber 18 a 20 são todas Oceania, este "loop if" acessa se a resposta do jogador está correta ou não lcd_I2C_27.clear (); // limpar o painel de exibição LCD delay (1000); // aguarde 1000 milissegundos (1 segundo)}}

Etapa 6: finalizando o dispositivo

  1. Abra a caixa de papelão e coloque os circuitos previamente construídos (incluindo todos os elementos, ex: três protoboard, a placa Arduino, o carregador portátil)
  2. Referindo-se ao código e às partes continentais traçadas na parte superior da caixa, coloque os botões em cada uma de suas posições correspondentes

    * Você pode consultar as notas laterais atrás dos códigos para garantir que botão de alfinete é para qual continente *

  3. Coloque os dois "botões de função" (map-deco de D10 e jogo de quebra-cabeça de D9) em cada uma das partes cortadas do lado direito da caixa
  4. Instale a placa do visor LCD em sua parte cortada no lado direito da caixa
  5. Abra a caixa e certifique-se de que todos os fios estão conectados corretamente às placas
  6. Cole a base da placa de madeira na parte superior da caixa usando fita dupla-face (certifique-se de alinhar corretamente para que os botões possam caber na parte cortada das placas de madeira)
  7. Use pistola de cola quente para preencher as partes pequenas da região (não os principais continentes)

Etapa 7: FEITO !!!!

Para o jogo de quebra-cabeça, acesse o link para a lista de reprodução de teste!

Recomendado: