Índice:
Vídeo: Arduino Puzzle Box: 7 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:36
Para este projeto vamos fazer uma caixa de quebra-cabeça que funciona com música. A essência disso é que, quando você pressiona um botão, ele libera uma melodia e o Arduino calcula quais botões são pressionados para saber qual é a resposta certa e qual é a errada.
Suprimentos
1 x Arduino uno
1 x resistor de 1k Ohm
5 x resistores de 220 Ohm
1 x Piezo Buzzer
5 x botão de pressão 6x6 mm
1 x conjunto de fios de jumper
1 x perf / placa de tira
1 x conjunto de solda
1 x dobradiça
1 x braçadeira
1 x cômoda pequena / madeira
1x pistola de cola quente + bastões de cola
1 x bateria de 9v + suporte
pedaço de worbla
pintar
Passo 1:
Para começar, você deve pressionar seus pinos na placa de ensaio. Agora conecte o analógico 2 com um fio no canto da placa. Vamos conectar dois resistores a ele em uma linha. O primeiro é um resistor de 10k Ohm. Na outra extremidade desse resistor, conectamos o fio ao aterramento analógico. O segundo resistor é um resistor de 220 Ohm que conectamos ao primeiro botão. Use outro resistor do mesmo valor para conectar o segundo lado aberto do botão com o segundo botão. Continue conectando os botões assim até o último. No último, você pega um fio e o conecta a um lado fechado correspondente do botão e o conecta ao próximo da linha. Agora você repete o processo que você fez com os resistores conhecidos apenas com fios comuns. Conecte o primeiro botão à porta analógica de 3, 3 V em seu Arduino. Em suma, você obterá uma espécie de padrão cruzado, conforme ilustrado abaixo.
Passo 2:
Em seguida, conecte a campainha à placa de ensaio e prenda um lado ao aterramento digital e o outro à porta 12. É inteligente já fazer o upload do código a seguir em seu Arduino para que você possa testar se tudo está funcionando corretamente. Se for, você pode começar a soldar os componentes juntos. Faça isso retirando-os da placa de ensaio e soldando os fios e as conexões diretamente. Se você acha que precisa de mais comprimento entre os botões, pode adicionar um fio extra entre os resistores. O breadboard não é mais necessário neste ponto.
Etapa 3:
Depois que tudo estiver soldado, é hora de fazer a própria caixa. Usei um conjunto barato de gavetas como base para a minha. Simplesmente cortei ao meio no sentido do comprimento e removi a parte de trás e o lado que cortei. Você deve ter duas peças em forma de C agora. Corte um lado de um deles para usar como tampa. Agora gire uma das peças restantes para que se encaixem como uma caixa sem tampa e cole-as. Assim que a cola estiver bem assentada, faça um pequeno orifício em cada lado da caixa para os botões e um maior para a campainha na tampa.
Passo 4:
Agora você pode começar a pintar a caixa. Eu fiz o meu com um desenho de flor baseado no BOTW, mas você pode realmente escolher qualquer desenho que quiser. Depois de fazer isso, você pode colocar os botões dentro dos orifícios e colocar uma bola de cola na parte de trás do botão e na madeira ao redor. O mesmo princípio se aplica à campainha, mas a minha se encaixa perfeitamente no orifício, tornando-a desnecessária. Em seguida, pegue um pouco de worbla e aqueça e corte para fazer alguns botões pequenos. Cole-os com cuidado nos botões, mas certifique-se de não usar muita cola, pois os botões podem ficar presos acidentalmente. Agora você pode pintá-los para que se misturem mais com a caixa.
Etapa 5:
Por fim, você cola ou aparafusa a braçadeira e as dobradiças da caixa e a tampa conectando os dois.
Etapa 6:
Agora que sua caixa está completa, tudo o que você precisa fazer é colocar o Arduino e a bateria dentro dela e fechar a tampa.
Etapa 7: Código
// Este é o código para um quebra-cabeça / caixa de música com tema Zelda.
// isso conecta seu código à lista de notas na outra guia
#include "pitches.h"
// esta variável irá garantir que o Arduino veja um toque mais longo do botão como apenas um toque
int mesmo = 0;
// a partir daqui, ele lerá sua entrada
int k = 2;
// este é o seu pino de saída
alto-falante interno = 12;
// abaixo estão as melodias finais
int Zelda = {NOTE_B4, NOTE_D5, NOTE_A4, NOTE_G4, NOTE_A4, NOTE_B4, NOTE_D5, NOTE_A4, NOTE_G4, NOTE_A4, NOTE_B4, NOTE_D5, NOTE_A5, NOTE_G5, NOTE_D5, NOTE_C5, NOTE_B4, NOTE_A5};
int ZeldaTime = {2, 4, 2, 4, 4, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 4, 4, 2};
int Epona = {NOTE_D5, NOTE_B4, NOTE_A4, NOTE_D5, NOTE_B4, NOTE_A4, NOTE_D5, NOTE_B4, NOTE_A4, NOTE_B4, NOTE_A4};
int EponaTime = {4, 4, 1,5, 4, 4, 1,5, 4, 4, 2, 2, 1};
int Saria = {NOTE_F4, NOTE_A4, NOTE_B4, NOTE_F4, NOTE_A4, NOTE_B4, NOTE_F4, NOTE_A4, NOTE_B4, NOTE_E5, NOTE_D5, NOTE_B4, NOTE_C5, NOTE_B4, NOTE_G4, NOTE_E4, NOTE_D4, NOTE_E4, NOTE_E4};
int SariaTime = {8, 8, 4, 8, 8, 4, 8, 8, 8, 8, 4, 8, 8, 8, 8, 3, 8, 8, 8, 2, 1};
// a duração normal de uma nota
int BEATTIME = 300;
// o contador que acompanhará onde estamos na solução
caixa interna = 0;
void setup () {
Serial.begin (9600);
pinMode (2, INPUT);
pinMode (1, INPUT);
}
void loop () {
// lê a entrada dos pinos
k = leitura analógica (2);
int p = analogRead (1);
// se não houver nenhum botão pressionado, não deve haver som
if (caixa == 0) {
noTone (12);
}
// se os dados lidos corresponderem aos parâmetros, execute o trecho de código descrito
if (k> 320 && k <350) {
rechts ();
}
//""
else if (k 290) {
links ();
}
//""
else if (k> 260 && k <280) {
boven ();
}
//""
else if (k> 240 && k <260) {
onder ();
}
//""
else if (k> 220 && k <240) {
uma();
}
// se não (quando nenhum botão é pressionado), execute este código
outro {
// redefine o mesmo para que possa ser usado na próxima vez que um botão for pressionado
mesmo = 0;
// se o contador está até um certo número, execute o trecho de código descrito
if (caixa == 166) {
zelda ();
}
//""
else if (caixa == 386) {
saria ();
}
//""
else if (caixa == 266) {
epona ();
}
//""
else if (caixa == 999) {
// toque este tom para marcar o erro
tom (alto-falante, NOTE_C3, BEATTIME);
// redefine o contador para 0
caixa = 0;
}
}
// o atraso entre entrada e saída
atraso (100);
// imprime os valores de sua entrada no monitor serial
Serial.println (k);
}
// esta é a primeira melodia
void zelda () {
// isso define um contador que se atualiza enquanto toca a melodia para que possa lê-la e parar quando deveria
para (int i = 0; i <sizeof (Zelda); i ++) {
// diz quanto tempo uma nota deve durar
int ZTime = 1000 / ZeldaTime ;
// gera os tons
tom (alto-falante, Zelda , ZTime);
// cria o atraso correto
pausa interna = ZTime * 1,30;
atraso (pausa);
// redefine o contador
caixa = 0;
// imprime os valores de sua entrada no monitor serial
Serial.println (caixa);
}
}
//""
void epona () {
para (int i = 0; i <sizeof (Epona); i ++) {
int ETime = 1000 / EponaTime ;
tom (alto-falante, Epona , ETime);
pausa interna = ETime * 1,30;
atraso (pausa);
caixa = 0;
Serial.println (caixa);
}
}
//""
void saria () {
para (int i = 0; i <sizeof (Saria); i ++) {
int STime = 1000 / SariaTime ;
tom (alto-falante, Saria , STime);
pausa interna = STime * 1,30;
atraso (pausa);
caixa = 0;
Serial.println (caixa);
}
}
void rec
hts () {
// se ainda não foi pressionado
if (mesmo == 0) {
// se o contador atualmente tem um desses valores, adicione isso a ele
if (caixa == 0 || caixa == 132 || caixa == 165 || caixa == 232 || caixa == 265 || caixa == 331 || caixa == 374) {
caixa = caixa + 1;
}
// caso contrário, defina-o para 999 para ouvir o ruído do erro
outro {
caixa = 999;
}
// defina o mesmo para um para que o Arduino não leia uma pressão prolongada como várias vezes
mesmo = 1;
}
// toque o tom
outro {
tom (alto-falante, NOTE_A4, BEATTIME);
}
// imprime os valores de sua entrada no monitor serial
Serial.println (caixa); }
//""
links vazios () {
if (mesmo == 0) {
if (caixa == 133 || caixa == 254 || caixa == 244 || caixa == 332 || caixa == 375 || caixa == 221) {
caixa = caixa + 11;
}
else if (caixa == 0) {
caixa = 111;
}
outro {
caixa = 999;
}
mesmo = 1;
} outro{
tom (alto-falante, NOTE_B4, BEATTIME);
} Serial.println (caixa);
}
//""
void boven () {
if (mesmo == 0) {if (caixa == 111 || caixa == 144 || caixa == 233) {
caixa = caixa + 21;
}
else if (caixa == 0) {
caixa = 221;
}
outro {
caixa = 999;
}
mesmo = 1;
}
outro {
tom (alto-falante, NOTE_D5, BEATTIME);
Serial.println (caixa);
}
}
//""
void onder () {
if (mesmo == 0) {
if (caixa == 343) {
caixa = caixa + 31;
}
else if (caixa == 0) {
caixa = 331;
} outro {
caixa = 999;
} mesmo = 1;
} outro {
tom (alto-falante, NOTE_F4, BEATTIME);
Serial.println (caixa);
}
}
//""
void a () {
if (mesmo == 0) {
if (caixa == 0) {
caixa = 461;
}
outro {
caixa = 999;
}
mesmo = 1;
}
tom (alto-falante, NOTE_D4, BEATTIME);
Serial.println (caixa);
}
Recomendado:
Crack the Code Game, Arduino Based Puzzle Box: 4 etapas (com imagens)
Crack the Code Game, Arduino Based Puzzle Box: Neste Instructable, vou mostrar como construir seu próprio jogo de crack em que você usa um dial codificador rotativo para adivinhar o código gerado aleatoriamente para o cofre. Existem 8 LEDs na parte frontal do cofre para informar quantos
Heroes of Hammerwatch Puzzle em um Arduino: 4 etapas
Heroes of Hammerwatch Puzzle em um Arduino: Olá a todos, este é meu primeiro intrutável e o inglês não é minha primeira língua, então fique à vontade para me corrigir onde estou errado. Neste instrutível, mostrarei como fazer um quebra-cabeça a partir do jogo Hammerwatch usando arduino
PUZZLE - Jogo de lógica do Arduino: 3 etapas
PUZZLE - Jogo de lógica do Arduino: Olá. Gostaria de falar sobre a história da criação de um simples jogo de quebra-cabeça " Quebra-cabeça " usando Arduino UNO e TFT-Shield. Para criar o jogo, eu precisava dos seguintes componentes: Adaptador de energia Arduino UNO (AC-DC) 6-12V para Arduino UNO Micro
Puzzle Box - Codebreakers and Groundbreakers [UCM]: 7 etapas (com imagens)
Puzzle Box - Codebreakers and Groundbreakers [UCM]: Um kit de caixa de quebra-cabeça cortado a laser projetado para uma oficina de criação digital no The Fitzwilliam Museum, Cambridge, em conexão com a exposição Codebreakers and Groundbreakers. Para o workshop, o botão na caixa do quebra-cabeça foi conectado a um MakeyMakey a
Arduino 'breadbot' Puzzle Game: 6 etapas (com imagens)
Arduino 'breadbot' Puzzle Game: Oh não! Meu bebê robô precisa de alguns fios para ganhar vida novamente! Hoje estaremos fazendo um jogo de quebra-cabeça que pode ensinar aos usuários iniciantes do Arduino algo sobre breadboard. É por isso que fiz isso! Você pode torná-lo tão complexo quanto quiser, mas eu escolhi