Faça um jogo de Buzz Wire com um Arduino

Neste divertido projeto, aprenderemos como fazer um jogo de arame com o Arduino. Muitas das peças necessárias podem ser encontradas em um kit inicial e ao redor da casa.

Neste divertido projeto, aprenderemos como fazer um jogo de arame com o Arduino.  Muitas das peças necessárias podem ser encontradas em um kit inicial e ao redor da casa.
Propaganda

Neste divertido projeto, aprenderemos como fazer um jogo de arame com o Arduino. Muitas das partes necessárias podem ser encontradas em um kit inicial (o que está em um kit inicial? O que está incluído em um kit Arduino Starter? [MakeUseOf explica] O que está incluído no Arduino Starter Kit? fonte de hardware aqui no MakeUseOf, mas você vai precisar de mais do que apenas o Arduino real para construir algo fora dele e realmente começar. Arduino "kits iniciais" são ... Leia mais?) e em torno da casa. Este projeto usa um Arduino, embora você possa usar praticamente qualquer microcontrolador ao seu redor (dê uma olhada nessa comparação entre microcontroladores de US $ 5 Microcontroladores de US $ 5: Arduino, Raspberry Pi Zero ou NodeMCU? US $ 5 Microcontroladores: Arduino, Raspberry Pi Zero ou NodeMCU? Costumava ser o caso de que, se você quisesse obter um computador, teria que remortgage sua casa para pagar por isso. Agora, você pode obter um para um Abraham Lincoln. Leia mais para obter alguma inspiração).

Confira o resultado final - até toca música:

O que você precisa

Aqui estão as principais partes que você precisará para concluir este projeto:

  • 1 x Arduino UNO ou similar.
  • 1 x cabide de metal.
  • Resistências de 2 x 220 ohms.
  • 1 x Breadboard.
  • 1 x buzzer Piezo.
  • 2 x clipes de crocodilo.
  • Tubagem termo-retráctil.
  • Fios de conexão macho-macho.

Elenco TL-6 Chumbo Jacaré, 10 peças, 14 polegadas Elenco TL-6 Chumbo Jacaré, 10 peças, 14 polegadas Compre agora Na Amazon $ 5.59

Aqui estão algumas partes opcionais para melhorar a construção:

  • 1 x buzzer piezo adicional.
  • 1 x tarugo.
  • 1 x display Quad sete segmentos.
  • 1 resistor de 220 ohms.
  • 1 x botão momentâneo.
  • Fios de conexão macho-fêmea.
  • Prancha de madeira (para o caso).
  • Parafusos de madeira sortidos.

Quase qualquer Arduino funcionará, desde que tenha pinos suficientes. Dê uma olhada neste guia de compra Arduino Guia de compra: Qual placa você deve obter? Guia de compra do Arduino: Qual placa você deve obter? Existem tantos tipos diferentes de placas Arduino por aí, você seria perdoado por estar confuso. Qual você deve comprar para o seu projeto? Deixe-nos ajudar, com este guia de compra do Arduino! Leia mais se você não tem certeza do que precisa.

O plano de construção

Arduino Buzzwire Concluído

Embora isso possa parecer complexo, na verdade é um projeto bastante simples. Começarei com o jogo básico e adicionarei componentes adicionais para aumentar a complexidade. Você pode escolher como quiser, dependendo dos componentes disponíveis.

O mecanismo central consiste em uma forma de arame e um laço em uma alça. O jogador tem que guiar o laço ao redor do percurso sem que os dois se toquem. Se os dois toquem, o circuito está completo e a campainha toca. É claro que é possível construir este circuito usando nenhum microcontrolador, mas onde está a diversão nisso (e como mais você poderia ouvir a música tema "Flying Circus" do Monty Python)?

O curso

Curso Arduino Buzzwire

Esta é a forma que o jogador terá para guiar seu ciclo. É a base de todo o jogo, então seja bom! Eu escolhi ter uma pequena queda, seguida por uma grande subida. Dobre um cabide de metal na forma que você precisa. O fio de latão ou o tubo de cobre funcionarão igualmente, embora um cabide seja o mais barato.

Você pode precisar usar luvas e usar um alicate ou um martelo para fazer as coisas perfeitas. Cortar qualquer excesso com cortadores de parafuso. Deixe dois montantes verticais para empurrar a base. Você quer arquivar as extremidades cortadas por segurança. Finalmente, corte dois pedaços de tubulação termorretrátil e coloque sobre as extremidades da seguinte maneira:

Isolamento Arduino Buzzwire

Isso isolará o loop do percurso, fornecendo uma zona de início / término ou segurança. Alternativamente, fita ou mesmo um canudo vai fazer se você não tiver qualquer tubulação de termorretrátil.

Agora, conecte um cabo a uma extremidade do percurso. Você tem duas opções aqui: você pode soldar ou usar um clipe de crocodilo. Um clipe de crocodilo é a opção mais fácil, mas a soldagem é uma opção mais confiável e de longo prazo. Certifique-se de “desbastar” a superfície do cabide primeiro com uma lixa e use bastante fluxo. (Nunca soldou antes? Aprenda como aqui Aprenda como soldar, com estas dicas e projetos simples Aprenda como soldar, com estas dicas e projetos simples Você está um pouco intimidado com o pensamento de um ferro quente e metal fundido? Se você quiser Para começar a trabalhar com eletrônicos, você precisará aprender a soldar. Deixe-nos ajudar. Leia mais.)

Dependendo do tamanho do furo que você fura na base no próximo passo, você pode precisar passar o cabo pelo orifício de montagem primeiro. Usando dois fios torcidos juntos aumentará a durabilidade:

Arduino Twisted Wire
Usando uma broca para fazer isso ajuda muito:

Torção de fio de mandril

A base

Arduino Buzzwire Case

Está na hora de criar a base. Isso serve para manter o curso na posição vertical, além de fornecer um local para ancorar os componentes eletrônicos. Eu usei alguns pedaços de pinho, embora você possa usar o que tiver em casa - até mesmo uma caixa de papelão.

Corte três pedaços para formar um “n”. Simplesmente parafuse (ou cole) estas três peças juntas. Lembre-se de perfurar primeiro um orifício piloto nas peças laterais para evitar que se partam. Você pode querer rebaixar os parafusos (especialmente se você estiver enchendo e pintando), e eu recomendo uma broca com escareador. Se você não tiver uma ferramenta de escareamento ou furo de perfuração, uma broca de diâmetro maior fará o truque.

Faça dois furos distantes o suficiente para as extremidades do percurso se encaixarem. Esmague o lado inferior pronto para colagem.

A maçaneta

Arduino Buzzwire Handle
Agora é hora de fazer o loop / controlador. Torça um pequeno pedaço do cabide em uma extremidade para criar um laço com uma pequena alça de metal. Certifique-se de arquivar a borda cortada e, em seguida, cubra-a com fita / espuma, se necessário.

Arduino Buzzwire Loop
Isso formará a outra metade do circuito - quando esse loop tocar o curso, ele completará o circuito (exatamente como um interruptor). Solda (ou use um clipe de crocodilo) outro fio na parte inferior do mesmo, exatamente o mesmo que você fez anteriormente para o curso.

Corte um pequeno pedaço de bucha para a alça real. Esse loop de metal será inserido nesse identificador. Se você não tiver nenhum passador, pode arredondar um pedaço de madeira macia quadrada usando um cinto ou uma lixadeira de disco (você também pode usar uma lixa, mas isso levaria muito tempo).

Faça um furo através deste manípulo. Isso precisa ser grande o suficiente para encaixar o laço de metal e o fio através de:

Arduino Buzzwire Handle Hole
Isso é possível em um exercício de pilar, embora seja complicado. Um torno fará o trabalho perfeitamente:

Torno de Passador Buzzwire Handle

Sim, estou ciente de que este é um torno de metal (para qualquer pessoa interessada, é um torno de relojoaria dos anos 1930. Eu acho que é um 3C, mas eu adoraria ouvir de você se você souber mais sobre isso).

Você também pode usar uma caneta esferográfica com o centro removido.

Finalmente, use cola quente para prender o cabo e o laço na alça. A cola quente fornecerá um acessório forte (mas não permanente), por isso é perfeito para isso.

Acabamento desativado

Insira o curso do fio nos orifícios da base. Não esqueça de adicionar o loop / controlador primeiro. Use cola quente novamente para prender o curso à base preenchendo os orifícios escareados na parte inferior da base da seguinte maneira:

Solda Arduino Buzzwire

O circuito

Aqui está o circuito completo. Você não tem que tornar o seu tão complexo como este - continue lendo enquanto detalhamos cada parte.

Arduino Buzzwire Full Circuit
Primeiro, conecte os dois elementos piezoelétricos aos pinos digitais 10 e 11. A polaridade não importa:

Circuito Piezo Arduino
Você não precisa usar dois piezos - a única razão pela qual fiz isso é ter um som de zumbido muito mais alto quando os fios se tocam. Conecte um lado ao pino digital e o outro ao terra.

Agora conecte o curso de metal e manuseie:

Arduino Buzzwire Circuit
Mais uma vez, não importa o caminho em torno destes dois estão ligados. Esta parte do circuito é exatamente como um botão ou interruptor - o jogador completa o circuito quando o loop toca o circuito. Certifique-se de incluir os dois resistores.

Um resistor liga o circuito ao terra (chamado de resistor pull-down), garantindo que ele não esteja “flutuando” (isso permite que o Arduino detecte a mudança do circuito). O outro resistor protege o Arduino. Quando as duas partes se tocam, o + 5V entra no pino digital. Se este resistor não estivesse presente, haveria um curto-circuito - seu computador desconectaria o soquete USB para obter muita corrente se você tiver sorte .

Ligue o cabo de sinal (roxo, no diagrama) ao pino digital 9.

Em seguida, conecte um botão ao pino digital 2:

Arduino Piezo Button Circuit

Finalmente, conecte o display LED de sete segmentos:

Arduino Seven Segment Circuit
Este modelo em particular é da Seeed. Isso usa um TM1637 para acionar quatro monitores - isso significa que apenas dois pinos digitais são necessários. Conecte o GND ao terra do Arduino e o VCC ao Arduino + 5V. Conecte o D10 ao pino digital 13 do Arduino e CLK ao pino 12 digital.

O código

Para fazer este projeto funcionar, você precisará de dois arquivos adicionais. O primeiro é chamado pitches.h . Este arquivo simplesmente mapeia nomes de notas para seu valor piezo. Isso torna muito mais fácil escrever uma música, já que você pode simplesmente dizer “NOTE_C3” em vez de “31”, por exemplo. Isso é de domínio público e está disponível no site do Arduino aqui. Siga as instruções para criar um novo arquivo chamado pitches.h (alternativamente, cole o código em seu script existente).

Em seguida, você precisa de um método para tocar notas / melodias no piezo. Essa essência de Anthony DiGirolamo no Github contém o código que você precisa. Copie tudo entre "void buzz" e "}}" e cole no seu arquivo principal. Para referência, aqui está:

 void buzz(int targetPin, long frequency, long length) { /* Buzzer example function by Rob Faludi http://www.faludi.com https://gist.github.com/AnthonyDiGirolamo/1405180 */ long delayValue = 1000000/frequency/2; // calculate the delay value between transitions //// 1 second's worth of microseconds, divided by the frequency, then split in half since //// there are two phases to each cycle long numCycles = frequency * length/ 1000; // calculate the number of cycles for proper timing //// multiply frequency, which is really cycles per second, by the number of seconds to //// get the total number of cycles to produce for (long i=0; i< numCycles; i++){ // for the calculated length of time... digitalWrite(targetPin, HIGH); // write the buzzer pin high to push out the diaphragm delayMicroseconds(delayValue); // wait for the calculated delay value digitalWrite(targetPin, LOW); // write the buzzer pin low to pull back the diaphragm delayMicroseconds(delayValue); // wait again for the calculated delay value } } 

A última biblioteca que você precisa é controlar a exibição de sete segmentos - você pode pular esta etapa se não estiver usando uma. Esta biblioteca é chamada TM1637 e foi criada pela Seeed, a mesma empresa que criou o quadro de drivers.

No Arduino IDE, vá para “Gerenciar Bibliotecas” ( Sketch > Include Library > Manage Libraries ). Isso trará o gerenciador da biblioteca. Aguarde alguns segundos para atualizar e pesquise na caixa de pesquisa na parte superior direita "TM1637". Duas bibliotecas serão encontradas - você quer “TM1637” e não “TM1637Display”. Selecione e clique em "instalar".

Uma última tarefa com esta biblioteca - não está completa! Tal como está, a biblioteca só pode exibir números de 0 a 9 e letras de A a F. Se isso abrange tudo o que você gostaria de exibir, então você pode pular esta etapa. Caso contrário, você precisará modificar o código. Relaxar! Isso não é tão difícil quanto parece, e se você pode escrever código usando o Arduino IDE, você pode fazer isso.

Primeiro, abra sua pasta de biblioteca. Isso estará na sua pasta Arduino. No Mac OS X, isso está em /Users/Joe/Documents/Arduino/Libraries . Abra a pasta chamada TM1637 . Você precisará editar o arquivo chamado TM1637.cpp - você pode ignorar com segurança o outro arquivo com a extensão .h . Abra este arquivo em seu editor de texto favorito (para mim, isso é Sublime Text 3), Bloco de Notas ou o Arduino IDE.

Modifique a terceira linha de código a partir disso:

 static int8_t TubeTab[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};//0~9, A, b, C, d, E, F 

Para isso:

 static int8_t TubeTab[] = { /* defaults */ 0x3f, // 0 0x06, // 1 0x5b, // 2 0x4f, // 3 0x66, // 4 0x6d, // 5 0x7d, // 6 0x07, // 7 0x7f, // 8 0x6f, // 9 0x77, // A -- 10 0x7c, // b -- 11 0x39, // C -- 12 0x5e, // d -- 13 0x79, // E -- 14 0x71, // F -- 15 /* additional */ 0x174, // h -- 16 0x176, // H -- 17 0x138, // L -- 18 0x15, // M -- 19 0x137, // n -- 20 0x73, // P -- 21 0x67, // q -- 22 0x131, // r -- 23 0x78, // t -- 24 0x240 // - 25 }; 

Agora você pode salvar e fechar este arquivo. Após cada elemento, o comentário descreve qual é o caractere. A próxima parte do comentário é o índice do elemento.

É hora do código atual. Primeiro, inclua as duas bibliotecas mencionadas anteriormente:

 #include #include 

Agora crie o objeto de exibição:

 TM1637 *_display = new TM1637(12, 13); 

Não se preocupe se você não entender a sintaxe - esta linha diz ao Arduino que os pinos 12 e 13 estão conectados a uma tela de sete segmentos, e para configurá-lo apropriadamente.

A música é armazenada na melody e no tempo . Estes contêm todas as notas e a duração da nota da música. Se você quiser alterar a música, modifique essas matrizes (embora não seja tão simples quanto colar nos valores das notas, o tempo é uma parte muito importante da música). A variável songState simplesmente armazena a posição da última nota tocada. Isso garante que a melodia seja tocada do início ao fim, em vez de saltar inconsistentemente:

 int songState = 0; int melody[] = { NOTE_F4, ...} int tempo[] = { 8, ...} 

Note que eu removi o conteúdo dos arrays, veja abaixo o código completo.

Esse código não está bloqueando - isso significa que o Arduino pode executar várias tarefas simultaneamente. Dê uma olhada nesta explicação Arduino Delay Function, e porque você não deve usá-lo Arduino Delay Function, e porque você não deve usá-lo Embora delay () é útil para demonstrações básicas de como o Arduino funciona, você realmente não deveria ser usando-o no mundo real. Aqui está o porquê e o que você deve usar em vez disso. Leia mais para mais informações. É assim que os temporizadores são configurados:

 unsigned long previousMillis1 = 0; const long interval1 = 1500; 

A variável previousMillis1 será atualizada posteriormente para armazenar a hora atual. A variável interval1 armazena quanto tempo esperar entre a execução do código - neste caso, 1, 5 segundos. Ele é definido como const, o que significa que é constante e nunca será alterado - isso permite que o Arduino otimize ainda mais o código.

Dentro da função setup() existem algumas coisas acontecendo. Primeiro, as entradas e saídas são configuradas. Isso tem que ser feito, então o Arduino sabe o que está conectado a cada um dos pinos:

 pinMode(9, INPUT); // setup circuit pinMode(10, OUTPUT); // setup buzzer 1 pinMode(11, OUTPUT); // setup buzzer 2 pinMode(2, INPUT); // setup button 

Agora, o monitor precisa de configuração:

 _display->set(5); // set brightness _display->point(false); // remove colon _display->init(); // start display 

Os métodos set, point e init estão todos contidos no objeto _display . Em vez de um ponto, um ponteiro (“->”) é usado para acessá-los. Novamente, não se preocupe com a sintaxe (embora, se você quiser aprender mais, procure por C ++ Pointers).

O loop principal tem dois modos de jogo: desafio e jogo livre. O jogo livre permite que o jogador jogue uma quantidade ilimitada de vezes. O modo Challenge define um timer por 20 segundos usando o método showCountdown . Utiliza o botão para iniciar e parar o temporizador. atualmente, a única maneira de alterar os modos de jogo é editar manualmente a variável chamada mode . Veja se você pode adicionar outro botão para fazer isso e modificar o código adequadamente.

O método de buzz toca as notas dadas a ele. Isso é usado em conjunto com o sing . O método sing passa por todas as notas e as reproduz. Esse método é chamado regularmente, embora ele só toque a próxima nota quando tiver decorrido tempo suficiente desde a última reprodução. Depois que a música chegar ao fim, ela redefine a música para o verso 1 ( songState = 14 ). Você pode definir isso como zero para iniciar a música no começo, mas a razão para fazer isso é pular a introdução. A introdução é tocada uma vez depois que o Arduino é ligado, e então não é reproduzido novamente.

Os métodos showPlay e showPlay simplesmente escrevem as palavras “FrEE” e “PLAY” no visor. Observe como o "r" em livre é minúsculo, quando todos os outros caracteres são maiúsculos. Essa é uma das limitações de sete exibições de segmentos. Eles não podem mostrar todas as letras do alfabeto, e alguns dos caracteres que eles podem exibir devem estar em maiúsculas e minúsculas.

O método toggleFreePlay pisca a exibição entre "FREE" e "PLAY". Novamente, isso é feito de maneira não-bloqueante.

Outro método útil é showNumber . Isso escreve um número para os dois caracteres do meio da tela assim:

Exibição Arduino Buzzwire

A tela não é inteligente o suficiente para saber como mostrar números grandes, deve ser explicitamente informada sobre o que fazer. Esse método usa uma lógica simples para mostrar o número apropriado em cada caractere.

O método final usado é chamado showCountdown . Isso inicia um contador em 20 e diminui em um a cada segundo. Se isso chegar a zero, ele vibra três vezes, para indicar que o tempo acabou.

Aqui está todo esse código juntos:

 #include // include display library #include // include pitches TM1637 *_display = new TM1637(12, 13); // create display object, 12 = CLK (clock), 13 = D10 (data) // music int songState = 0; int melody[] = { NOTE_F4, NOTE_E4, NOTE_D4, NOTE_CS4, NOTE_C4, NOTE_B3, NOTE_AS3, NOTE_A3, NOTE_G3, NOTE_A3, NOTE_AS3, NOTE_A3, NOTE_G3, NOTE_C4, 0, NOTE_C4, NOTE_A3, NOTE_A3, NOTE_A3, NOTE_GS3, NOTE_A3, NOTE_F4, NOTE_C4, NOTE_C4, NOTE_A3, NOTE_AS3, NOTE_AS3, NOTE_AS3, NOTE_C4, NOTE_D4, 0, NOTE_AS3, NOTE_G3, NOTE_G3, NOTE_G3, NOTE_FS3, NOTE_G3, NOTE_E4, NOTE_D4, NOTE_D4, NOTE_AS3, NOTE_A3, NOTE_A3, NOTE_A3, NOTE_AS3, NOTE_C4, 0, NOTE_C4, NOTE_A3, NOTE_A3, NOTE_A3, NOTE_GS3, NOTE_A3, NOTE_A4, NOTE_F4, NOTE_F4, NOTE_C4, NOTE_B3, NOTE_G4, NOTE_G4, NOTE_G4, NOTE_G4, 0, NOTE_G4, NOTE_E4, NOTE_G4, NOTE_G4, NOTE_FS4, NOTE_G4, NOTE_D4, NOTE_G4, NOTE_G4, NOTE_FS4, NOTE_G4, NOTE_C4, NOTE_B3, NOTE_C4, NOTE_B3, NOTE_C4, 0 }; int tempo[] = { 8, 16, 8, 16, 8, 16, 8, 16, 16, 16, 16, 8, 16, 8, 3, 12, 16, 16, 16, 8, 16, 8, 16, 8, 16, 8, 16, 8, 16, 4, 12, 12, 16, 16, 16, 8, 16, 8, 16, 8, 16, 8, 16, 8, 16, 4, 12, 12, 16, 16, 16, 8, 16, 8, 16, 8, 16, 8, 16, 8, 16, 4, 16, 12, 17, 17, 17, 8, 12, 17, 17, 17, 8, 16, 8, 16, 8, 16, 8, 1 }; // non blocking setup // free play unsigned long previousMillis1 = 0; // time words last changed const long interval1 = 1500; // interval between changing // music unsigned long previousMillis2 = 0; // time last changed const long interval2 = 100; // interval between notes int displayStatus = 0; // keep track of what's displayed int mode = 0; // keep track of game mode -- change to 0 or 1 for different modes bool countdown = false; unsigned long previousMillis3 = 0; // time last changed const long interval3 = 1000; // interval between countdown int count = 20; // challenge mode timer void setup() { // put your setup code here, to run once: pinMode(9, INPUT); // setup circuit pinMode(10, OUTPUT); // setup buzzer 1 pinMode(11, OUTPUT); // setup buzzer 2 pinMode(2, INPUT); // setup button _display->set(5); // set brightness _display->point(false); // remove colon _display->init(); // start display } void loop() { // put your main code here, to run repeatedly: if(mode == 0) { // challenge mode if(digitalRead(2) == HIGH) { delay(25); if(digitalRead(2) == HIGH) { countdown = true; // stop the countdown } else { countdown = false; // stop the countdown } } if(countdown) { showCountdown(); // advance countdown } } else { // free play toggleFreePlay(); } if(digitalRead(10) == HIGH) { delay(25); if(digitalRead(10) == HIGH) { while(digitalRead(10) == HIGH) { buzz(11, NOTE_B0, 1000/24); } } } else sing(); } void showCountdown() { // countdown the time remaining unsigned long currentMillis = millis(); // current time if (currentMillis - previousMillis3>= interval3) { previousMillis3 = currentMillis; --count; showNumber(count); if(count == 0) { // game over countdown = false; count = 20; // reset countdown // buzz 3 times buzz(11, NOTE_B0, 1000/24); delay(100); buzz(11, NOTE_B0, 1000/24); delay(100); buzz(11, NOTE_B0, 1000/24); } } } void showNumber(int number) { // show numbers (maximum 99) on display _display->display(0, 25); // write - to segment 1 _display->display(3, 25); // write - to segment 4 // write number to middle of display if(number == 10) { _display->display(1, 1); _display->display(2, 0); } else if(number>9) { _display->display(1, 1); int newVal = number - 10; _display->display(2, newVal); } else { _display->display(1, 0); _display->display(2, number); } } void toggleFreePlay() { // scroll between words without blocking unsigned long currentMillis = millis(); // current time if (currentMillis - previousMillis1>= interval1) { previousMillis1 = currentMillis; if(displayStatus == 1) showPlay(); else showFree(); } } void showPlay() { // write "PLAY" to the display _display->display(0, 21); // write P to segment 1 _display->display(1, 18); // write L to segment 2 _display->display(2, 10); // write A to segment 3 _display->display(3, 4); // write Y to segment 4 displayStatus = 2; } void showFree() { // write "Free" to the display _display->display(0, 15); // write F to segment 1 _display->display(1, 23); // write r to segment 2 _display->display(2, 14); // write E to segment 3 _display->display(3, 14); // write E to segment 4 displayStatus = 1; } void buzz(int targetPin, long frequency, long length) { /* Buzzer example function by Rob Faludi http://www.faludi.com https://gist.github.com/AnthonyDiGirolamo/1405180 */ long delayValue = 1000000/frequency/2; // calculate the delay value between transitions //// 1 second's worth of microseconds, divided by the frequency, then split in half since //// there are two phases to each cycle long numCycles = frequency * length/ 1000; // calculate the number of cycles for proper timing //// multiply frequency, which is really cycles per second, by the number of seconds to //// get the total number of cycles to produce for (long i=0; i = interval2) { previousMillis2 = currentMillis; int noteDuration = 1000 / tempo[songState]; buzz(10, melody[songState], noteDuration); int pauseBetweenNotes = noteDuration; delay(pauseBetweenNotes); // stop the tone playing: buzz(10, 0, noteDuration); ++songState; // start song again if finished if(songState>79) { songState = 14; // skip intro } } } 

Salve este arquivo como “buzzwire” ( File> Save As ) e, em seguida, faça o upload para o seu cartão ( File> Upload ). Se você não tem certeza de como fazer o upload do Arduino, ou se o código parece um pouco assustador, dê uma olhada no nosso Guia Arduino para Iniciantes Introdução ao Arduino: Um Guia para Iniciantes Introdução ao Arduino: um Guia para Iniciantes Arduino é um open-source plataforma de prototipagem eletrônica baseada em hardware e software flexível e fácil de usar. É destinado a artistas, designers, amadores e qualquer pessoa interessada em criar objetos ou ambientes interativos. Consulte Mais informação . Estando tudo bem, agora você deve ter seu próprio jogo de zumbido - legal!

Se você fez algo legal depois de ler isso, eu adoraria ver - deixe-me saber nos comentários abaixo!

In this article