Arduino ile Buzz Wire Oyunu Yap

  • Lesley Fowler
  • 0
  • 2704
  • 393
reklâm

Bu eğlenceli projede, Arduino'yla nasıl vızıltı teli oyunu yapılacağını öğreneceğiz. İhtiyaç duyulan parçaların çoğu bir başlangıç ​​kitinde bulunabilir (başlangıç ​​kitinde ne var? Bir Arduino Başlangıç ​​Kitinde Neler Var? [Açıklamayı Yapanlar] Bir Arduino Başlangıç ​​Kitinde Neler Var? [Daha Önce Açıklayanlar] Arduino'yu daha önce tanıttım; MakeUseOf'a kaynak donanım, ancak ondan bir şey inşa etmek ve gerçekten başlamak için gerçek Arduino'dan daha fazlasına ihtiyacınız olacak. Arduino "başlangıç ​​kitleri" ...?) ve evin etrafında. Bu proje bir Arduino kullanıyor, ancak sahip olduğunuz hemen hemen her mikrodenetleyiciyi kullanabilseniz de ($ 5 mikrodenetleyicilerle 5 $ Mikrodenetleyiciler: Arduino, Ahududu Pi Zero veya NodeMCU? 5 $ Mikrodenetleyiciler: Arduino, Raspberry Pi Zero veya NodeMCU? Eskiden bir bilgisayar edinmek istersen, evini ödemesi için evini yeniden kiralaman gerekecekti. Şimdi, bir tane Abraham Lincoln için bir tane alabilirsin..

Sonuca göz atın - hatta müzik çalar:

Neye ihtiyacın var

İşte bu projeyi tamamlamak için ihtiyaç duyacağınız ana bölümler:

  • 1 x Arduino UNO veya benzeri.
  • 1 x Metal askı.
  • 2 x 220 ohm dirençler.
  • 1 x Breadboard.
  • 1 x Piezo zil.
  • 2 x Timsah klipleri.
  • Çeşitli ısıyla daralan makaron.
  • Erkek-erkek bağlanma telleri.

Yapıyı geliştirmek için isteğe bağlı bazı parçalar:

  • 1 x Ek piezo zili.
  • 1 x Dübel çubuk.
  • 1 x Dört yedi segmentli ekran.
  • 1 x 220 ohm direnç.
  • 1 x Anlık düğme.
  • Erkek-dişi bağlantı telleri.
  • Ahşap tahta (durum için).
  • Çeşitli ahşap vidalar.

Neredeyse herhangi bir Arduino, yeterli pimleri olması koşuluyla çalışacaktır. Bu satın alma kılavuzuna bir göz atın Arduino Satın Alma Rehberi: Hangi Tahtayı Almalısınız? Arduino Satın Alma Rehberi: Hangi Kurulu Almalısınız? Dışarıda pek çok farklı Arduino tahtası var, kafanız karıştığı için affedilirsiniz. Projeniz için hangisini satın almalısınız? Bu Arduino satın alma rehberi ile yardım edelim! neye ihtiyacın olduğundan emin değilseniz.

Yapı Planı

Bu karmaşık görünse de, aslında oldukça basit bir proje. Temel oyuna başlayacağım ve ardından karmaşıklığı artırmak için ek bileşenler ekleyeceğim. Yapabilirsin “seç ve seç” Sahip olduğunuz bileşenlere bağlı olarak istediğiniz gibi.

Çekirdek tamircisi, bir tel şeklinden ve bir tutamağın üzerindeki bir halkadan oluşur. Oynatıcı, parkurun etrafındaki döngüyü iki dokunuş olmadan yönlendirmelidir. İki dokunuşla, devre tamamlanır ve sesli uyarı duyulur. Elbette bu devreyi mikrodenetleyici kullanmadan oluşturmak mümkündür, ancak bunun neresinde eğlence var (ve Monty Python’ları başka nasıl dinlerdiniz?). “Uçan Sirk” tema müziği)?

Kurs

Bu, oynatıcının döngü döngüsünü yönlendirmesi gereken şeklidir. Tüm oyunun temeli bu yüzden iyi yap! Küçük bir düşüşe karar verdim, ardından büyük bir tırmanış izledim. Metal bir askıyı ihtiyacınız olan şekle sokun. Pirinç tel veya bakır boru aynı derecede çalışır, ancak elbise askısı en ucuz olabilir.

İşleri mükemmelleştirmek için eldiven takmanız ve pense veya çekiç kullanmanız gerekebilir. Cıvata kesicilerle fazlalıkları kesin. Tabana doğru itmek için iki dikey dikine bırakın. Kesim uçlarını emniyet için dosyalamak istersiniz. Son olarak, iki parça daralan makaronu kesin ve uçların üzerine aşağıdaki şekilde yerleştirin:

Bu, döngüyü rotadan izole ederek bir başlangıç ​​/ bitiş veya güvenlik bölgesi sağlar. Alternatif olarak, herhangi bir ısıyla daralan makaron yoksa bant veya çubuk.

Şimdi kabloyu bir son Elbette Burada iki seçeneğiniz var: lehimleyebilir veya bir timsah klibi kullanabilirsiniz. Bir timsah klibi daha kolay seçenektir, ancak lehimleme daha güvenilir ve uzun vadeli bir seçenektir. Emin ol “kabaca” elbise askısının yüzeyini önce zımpara kağıdı ile alın ve bol miktarda akı kullanın. (Daha önce hiç lehimlenmedi mi? Nasıl yapıldığını öğrenin Bu Basit İpuçları ve Projelerle Lehimlemeyi Öğrenin Bu Basit İpuçları ve Projelerle Lehimlemeyi Öğrenin Bir sıcak demir ve erimiş metal düşüncesinden biraz korkuyor musunuz? Elektronik ile çalışmaya başlamak için, lehimlemeyi öğrenmeniz gerekecek. Yardım edelim.)

Bir sonraki adımda tabanda deldiğiniz deliğin boyutuna bağlı olarak, ilk önce kabloyu montaj deliğinden geçirmeniz gerekebilir. Birlikte bükülmüş iki tel kullanılması dayanıklılığı artıracaktır:


Bunu yapmak için bir matkap kullanarak çok yardımcı olur:

Baz

Üs oluşturma zamanı. Bu, parkuru dik pozisyonda tutmaya ve elektroniği tutturmak için bir yer sağlamaya yarar. Çam fıstıkları kullandım, ancak evin içinde ne varsa, bir karton kutu bile kullanabilirsin..

Oluşturmak için üç parça kesin “n” şekillendirirler. Bu üç parçayı birbirine vidalayın (veya yapıştırın). Ayrılmalarını önlemek için önce yan parçalara bir pilot delik açmayı unutmayın. Vidaları havşalamak isteyebilirsiniz (özellikle doldurup boyayacaksanız) ve havşa açma matkap ucu tavsiye ederim. Bir havşa açma aleti veya delme deliğiniz yoksa, daha büyük çaplı bir matkap ucu hile yapar.

Kursun uçlarına oturması için yeterince uzak iki delik açın. Alt tarafı tutkallama için hazır havşa.

Kolu


Şimdi döngü / denetleyici yapma zamanı. Küçük bir metal saplı bir ilmek oluşturmak için bir uçtaki elbise askısının küçük bir parçasını çevirin. Kesik kenarı eğtiğinizden emin olun ve gerekirse bant / köpük ile örtün.


Bu, devrenin diğer yarısını oluşturacaktır - bu döngü kursa dokunduğunda devreyi tamamlayacaktır (bir anahtar gibi). Lehim (veya bir timsah klibi kullanın) bunun altına bir tel daha katlayın, aynen kurs için yaptığınız gibi.

Gerçek tutamaç için küçük bir dübel uzunluğu kesin. Bu metal halka bu tutamağa girer. Eğer bir dübeliniz yoksa, bir bant veya disk zımpara kullanarak bir parça kare yumuşak odun yuvarlayabilirsiniz (ayrıca zımpara kağıdı da kullanabilirsiniz, ancak bu uzun zaman alabilir)..

Bu tutamaçtan bir delik açın. Bunun metal halka ve kablo boyunca geçebilecek kadar büyük olması gerekir:


Bu zor olsa da, bir direk matkap üzerinde yapmak mümkündür. Bir torna işi mükemmel yapar:

Evet, bunun metal bir torna olduğunun farkındayım (ilgilenen herkes için, 1930'lardan Boley saatçi torna tezgahı. Sanırım 3C, ama daha fazlasını biliyorsanız sizden duymak isterim).

Merkez çıkarılmış halde bir tükenmez kalem de kullanabilirsiniz..

Son olarak, kabloyu ve halkayı tutamağa sabitlemek için sıcak tutkal kullanın. Sıcak tutkal güçlü (ancak kalıcı değil) bir armatür sağlar, bu nedenle bu mükemmel.

Bitirme Kapalı

Tel rotasını tabandaki deliklere yerleştirin. Önce döngü / denetleyici eklemeyi unutmayın. Tabanı alt tarafındaki havşa deliklerini aşağıdaki gibi doldurarak tabanı tabana sabitlemek için tekrar sıcak tutkal kullanın:

Devre

İşte tam devre. Sizinkini bu kadar karmaşık hale getirmek zorunda değilsiniz - her bir parçayı parçalarken okumaya devam edin.


İlk önce, iki piezo elemanını 10 ve 11 numaralı dijital pimlere bağlayın. Kutupların önemi yoktur:


İki piezo kullanmak zorunda değilsiniz - bunu yapmamın tek nedeni, teller temas ettiğinde çok daha yüksek bir vızıltı sesini duymak. Bir tarafı dijital pime, diğerini toprağa bağlayın.

Şimdi metal rotasını takın ve kullanın:


Yine, bu ikisinin hangi yönde kablolandığı önemli değildir. Devrenin bu kısmı tam olarak bir düğme veya anahtar gibidir - döngü kursa dokunduğunda oynatıcı devreyi tamamlar. Her iki direnci de eklediğinizden emin olun..

Bir direnç devreyi toprağa bağlar (aşağıya çekme direnci olarak adlandırılır), “yüzen” (Arduino'nun devre değişimini algılamasını sağlar). Diğer direnç Arduino'yu korur. İki parça dokunulduğunda, + 5V dijital pime girer. Bu direnç yoksa, kısa devre olur - bilgisayarınız çok fazla akım çekmek için USB soketinin bağlantısını keser şanslıysan.

Sinyal kablosunu (diyagramdaki mor) dijital pim 9'a bağlayın..

Ardından, dijital pim 2'ye bir düğme bağlayın:

Son olarak, yedi bölümlü LED ekranı bağlayın:


Bu özel model Seeed'den. Bu, dört ekranı sürmek için bir TM1637 kullanır - bu, yalnızca iki dijital pinin gerekli olduğu anlamına gelir. bağlamak GND Arduino yere ve VCC Arduino + 5V’a. bağlamak D10 Arduino dijital pin 13'e ve CLK dijital pim 12'ye.

Kod

Bu projenin çalışması için iki ek dosyaya ihtiyacınız olacak. İlk denir pitches.h. Bu dosya sadece not isimlerini piezo değerleriyle eşleştirir. Bu, kolayca söyleyebileceğiniz gibi bir melodi yazmak için çok daha kolay hale getirir “NOTE_C3” ziyade “31”, Örneğin. Bu kamu malıdır ve Arduino web sitesinde mevcut. Adlı yeni bir dosya oluşturmak için talimatları izleyin. pitches.h (alternatif olarak, kodu mevcut komut dosyasına yapıştırın).

Daha sonra, piezo üzerinde nota / melodi çalmak için bir yönteme ihtiyacınız var. Anthony DiGirolamo'nun Github'daki bu özü, ihtiyacınız olan kodu içeriyor. Aradaki her şeyi kopyala “geçersiz buzz” ve “” ve ana dosyanıza yapıştırın. Referans için, işte burada:

geçersiz buzz (int targetPin, uzun frekans, uzun uzunluk) / * Rob Faludi tarafından Buzzer örnek işlevi http://www.faludi.com https://gist.github.com/AnthonyDiGirolamo/1405180 * / long delayValue = 1000000 / frekans / 2; // Geçişler arasındaki gecikme değerini hesaplayın //// 1 saniye değerinde mikrosaniye değerinde, frekansa bölünür, sonra yarıya bölünür //// her çevrim için iki faz vardır uzun numCycles = frequency * length / 1000; // doğru zamanlama için döngü sayısını hesapla //// saniye başına gerçekten olan frekansı çarp, saniye için // / / ile üretilecek toplam döngü sayısını elde etmek için (uzun i = 0; < 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  

İhtiyacınız olan son kitaplık, yedi bölümlü ekranı kontrol etmektir - bir tane kullanmıyorsanız bu adımı atlayabilirsiniz. Bu kütüphane denir TM1637 ve sürücü tahtasını oluşturan aynı şirket Seeed tarafından yaratıldı..

Arduino IDE’de “Kütüphaneleri Yönet” (kroki > Kitaplığı dahil et > Kütüphaneleri Yönet). Bu kütüphane yöneticisini getirecektir. Güncellemesinin ve ardından sağ üstteki arama kutusunda arama yapmasının birkaç saniye sürmesine izin verin “TM1637”. İki kütüphane bulunacaktır - istediğiniz “TM1637” ve yok “TM1637Display”. Seç ve ardından Tamam “kurmak”.

Bu kütüphane ile son görev - tamamlanmadı! Kütüphane, yalnızca 0-9 sayılarını ve A-F harflerini görüntüleyebilir. Bu, görüntülemek istediğiniz her şeyi kapsıyorsa, bu adımı atlayabilirsiniz. Aksi takdirde, kodu değiştirmeniz gerekecektir. Rahatlayın! Bu göründüğü kadar zor değil ve Arduino IDE'yi kullanarak kod yazabiliyorsanız, bunu yapabilirsiniz..

İlk önce kütüphane klasörünüzü açın. Bu Arduino klasörünüzde olacak. Mac OS X’te, bu / Users / Joe / Belgeler / Arduino / Kütüphaneler. Adlı klasörü açın. TM1637. Adlı dosyayı düzenlemeniz gerekecek TM1637.cpp - uzantısı ile diğer dosyayı güvenle yok sayabilirsiniz .h. Bu dosyayı en sevdiğiniz metin düzenleyicide açın (benim için Sublime Text 3), Not Defteri veya Arduino IDE.

Üçüncü kod satırını bundan değiştirin:

statik 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,

Buna:

statik int8_t TubeTab [] = / * varsayılanlar * / 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 / * ek * / 0x174, // s - 16 0x176, // S - 17 0x138, // L - 18 0x15, // M - 19 0x137, / / n - 20 0x73, // P - 21 0x67, // q - 22 0x131, // r - 23 0x78, // t - 24 0x240 // - 25;

Şimdi bu dosyayı kaydedip kapatabilirsiniz. Her öğeden sonra, yorum bunun hangi karakter olduğunu açıklar. Yorumun bir sonraki bölümü, öğenin dizinidir.

Gerçek kodun zamanı geldi. İlk önce, daha önce belirtilen iki kütüphaneyi ekleyin:

#include #include 

Şimdi görüntüleme nesnesini oluşturun:

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

Sözdizimini anlamadığınız takdirde endişelenmeyin - bu satır Arduino’ya 12 ve 13 numaralı pinlerin yedi segmentli bir ekrana eklendiğini ve uygun şekilde yapılandırıldığını söyler.

Şarkı saklanır melodi ve tempo. Bunlar müzikle ilgili tüm notaları ve notaları içerir. Müziği değiştirmek istiyorsanız, bu dizileri değiştirin (her ne kadar not değerlerine yapıştırmak kadar basit olmasa da, zamanlama müziğin çok önemli bir parçasıdır). songState değişken sadece son çalınan notanın konumunu saklar. Bu, melodilerin tutarsız bir şekilde zıplamak yerine, baştan sona kadar çalınmasını sağlar:

int songState = 0; int melodi [] = NOTE_F4,… int tempo [] = 8,…

Dizilerin içeriğini kaldırdığımı unutmayın, kodun tamamı için aşağıya bakın..

Bu kod engelleyici değildir - bu Arduino'nun aynı anda birden fazla işi yapabileceği anlamına gelir. Bu açıklamaya bir göz atın Arduino Gecikme İşlevi ve Neden Kullanmamalısınız? Arduino Gecikme Fonksiyonu ve Neden Kullanmamalısınız? Gerçek dünyada kullanıyor. İşte nedeni ve bunun yerine ne kullanmanız gerekir. daha fazla bilgi için. Zamanlayıcılar şu şekilde kurulur:

işaretsiz uzun öncekiMillis1 = 0; const uzun aralığı1 = 1500;

Değişken previousMillis1 Geçerli saati saklamak için daha sonraki bir aşamada güncellenecektir. interval1 değişken, kod yürütme arasında ne kadar süre bekleneceğini saklar - bu durumda, 1,5 saniye. Olarak tanımlanır const, bu, sabit olduğu ve asla değişmeyeceği anlamına gelir - bu Arduino'nun kodu daha da optimize etmesini sağlar.

İçinde kurmak() işlevi devam eden birkaç şey var. İlk önce giriş ve çıkışlar ayarlanmıştır. Bu yapılmalı, yani Arduino pinlerinin her birine neyin bağlı olduğunu biliyor:

pinMode (9, GİRİŞ); // kurulum devresi pinMode (10, OUTPUT); // sesli uyarıyı ayarla 1 pinMode (11, OUTPUT); // sesli uyarı 2 pinMode (2, INPUT); // kurulum butonu

Şimdi ekranın yapılandırılması gerekiyor:

_display-> set (5); // parlaklığı ayarla _display-> point (false); // colon _display-> init () işlevini kaldırın; // ekrana başla

Metodlar set, puan, ve içinde hepsi içinde bulunur _Görüntüle nesne. Nokta yerine işaretçi (“->”) bunlara erişmek için kullanılır. Yine, sözdizimi hakkında endişelenmeyin (daha fazla bilgi edinmek istiyorsanız, C ++ Pointers'a bakın).

Ana döngü iki oyun moduna sahiptir: meydan okuma ve serbest oyun. Serbest oyun, oyuncunun sınırsız sayıda oynamasına izin verir. Challenge modu, 20 saniye boyunca bir zamanlayıcıyı ayarlar. showCountdown yöntem. Zamanlayıcıyı başlatmak ve durdurmak için düğmeyi kullanır. şu anda, oyun modlarını değiştirmenin tek yolu, adı verilen değişkeni elle düzenlemektir. kip. Bunu yapmak için başka bir düğme ekleyip ekleyemeyeceğinize bakın ve kodu uygun şekilde değiştirin.

vızıltı yöntem kendisine verilen notaları çalar. Bu ile birlikte kullanılır şarkı söyle. Şarkı yöntemi her notadan geçer ve onu çalar. Bu yöntem düzenli olarak adlandırılır, ancak yalnızca bir sonraki notayı son oyundan bu yana yeterli zaman geçtiğinde çalacaktır. Şarkı sona erdiğinde, şarkı ayet 1'e sıfırlanır (songState = 14). Başında şarkıyı başlatmak için bunu sıfıra ayarlayabilirsiniz, ancak bunu yapmanın nedeni girişi atlamaktır. Giriş, Arduino açıldıktan sonra bir kez çalınır ve tekrar çalmaz..

showFree ve showPlay yöntemler sadece kelimeleri yaz “Ücretsiz” ve “OYUN” Ekrana Dikkat edin nasıl “r” diğer tüm karakterler büyük harf olduğunda, ücretsizdir. Bu, yedi segmentli ekranın sınırlamalarından biridir. Alfabenin her harfini gösteremezler ve gösterebilecekleri bazı karakterlerin karışık durumda olması gerekir..

toggleFreePlay yöntem arasında ekran yanıp söner “ÜCRETSİZ” ve “OYUN”. Yine, bunu engelleyici olmayan bir şekilde yapar.

Başka bir yararlı yöntem sayıları göster. Bu, ekranın ortasındaki iki karaktere şöyle bir sayı yazar:

Ekran, büyük sayıları göstermeyi bilecek kadar akıllı değildir, ne yapılacağı açıkça belirtilmelidir. Bu yöntem, her karakterde uygun sayıyı göstermek için bazı basit mantık kullanır.

Kullanılan son yöntem denir showCountdown. Bu, 20'de bir sayacı başlatır ve her saniyede bir azaltır. Bu sıfıra ulaşırsa, zamanın tükendiğini belirtmek için üç kez vızıldar.

İşte bütün bu kod bir araya getirildi:

#include // display kütüphanesini dahil #include // dahil pitches TM1637 * _display = new TM1637 (12, 13); // görüntüleme nesnesi yarat, 12 = CLK (saat), 13 = D10 (veri) // müzik 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_C3, NOTE_AS3, NOTE_A3_9. 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_D_ 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, NOT_G4, NOTE_G4, NOTE_G4, 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, 17, 8, 12, 17, 17, 17, 8, 16, 8, 16, 8, 16, 8, 1; // engellenmeyen kurulum // serbest oyun imzasız uzun öncekiMillis1 = 0; // en son değiştirilen zaman kelimeleri const uzun aralık1 = 1500; // değişen // aralıksız müzik arasındaki aralık öncekiMillis2 = 0; // en son değiştirilen zaman const uzun aralık2 = 100; // notalar arasındaki aralık int displayStatus = 0; // ne görüntülendiğini takip et int mode = 0; // oyun modunu takip et - farklı modlar için 0 ya da 1 olarak değiştir. bool countdown = false; işaretsiz uzun öncekiMillis3 = 0; // en son değiştirilen zaman const uzun aralık3 = 1000; // geri sayım arasındaki aralık int count = 20; // meydan okuma modu zamanlayıcı boşluğu setup () // bir kez çalıştırmak için kurulum kodunuzu buraya yerleştirin: pinMode (9, INPUT); // kurulum devresi pinMode (10, OUTPUT); // sesli uyarıyı ayarla 1 pinMode (11, OUTPUT); // sesli uyarı 2 pinMode (2, INPUT); // kurulum düğmesi _display-> set (5); // parlaklığı ayarla _display-> point (false); // colon _display-> init () işlevini kaldırın; // start display void loop () // tekrar tekrar çalıştırmak için ana kodunuzu buraya girin: if (mode == 0) // meydan okuma modu eğer (digitalRead (2) == HIGH) delay (25); if (digitalRead (2) == HIGH) geri sayım = doğru; // geri sayımı durdur else countdown = false; // geri sayımı durdur if (geri sayım) showCountdown (); // advance geri sayım else // free play toggleFreePlay ();  if (digitalRead (10) == YÜKSEK) delay (25); if (digitalRead (10) == HIGH) while (digitalRead (10) == HIGH) vızıltı (11, NOTE_B0, 1000/24);  else sing ();  void showCountdown () // imzasız uzun kalan süreyi geri sayım currentMillis = millis (); // eğer geçerli zaman ise (currentMillis - öncekiMillis3> = Aralık3) öncekiMillis3 = currentMillis; --count; showNumber (sayım); if (count == 0) // oyun bitti geri sayım = yanlış; sayım = 20; // geri sayımı sıfırla // vızıltı 3 kez vızıltı (11, NOTE_B0, 1000/24); gecikmesi (100); vızıltı (11, NOTE_B0, 1000/24); gecikmesi (100); vızıltı (11, NOTE_B0, 1000/24);  void showNumber (int number) // _display-> display (0, 25) göstergesinde sayıları göster (maksimum 99); // yazmak - bölüm 1 _display-> ekran (3, 25); // yazma - segment 4'e // ekranın ortasına sayıyı yaz, eğer (sayı == 10) _display-> display (1,1); _display-> göstergesi (2,0);  else eğer (sayı> 9) _display-> ekran (1,1); int newVal = sayı - 10; _display-> ekran (2, yeniVal);  else _display-> ekran (1,0); _display-> ekran (2, sayı);  void toggleFreePlay () // işaretsiz uzun akımı engellemeden sözcükler arasında kaydırma currentMillis = millis (); // eğer geçerli zaman ise (currentMillis - öncekiMillis1> = aralık1) öncekiMillis1 = currentMillis; if (displayStatus == 1) showPlay (); başka showFree ();  void showPlay () // "OYNAT" yazarak ekrana _display-> ekran (0, 21); // P'yi segment 1'e yaz - _ görüntü -> ekran (1, 18); // segmenti L'ye yaz 2 _display-> display (2, 10); // A parçasını 3 segmentine _display-> display (3, 4); // Y'yi segment 4'e yazınız displayStatus = 2;  void showFree () // ekrana "Ücretsiz" yazar _display-> display (0, 15); // F parçasını 1_display-> display (1, 23); // r'yi segment 2'ye yazın _display-> display (2, 14); // segmenti E'ye yazın 3 _display-> display (3, 14); // segment 4'e E yazın displayStatus = 1;  void buzz (int targetPin, uzun frekans, uzun uzunluk) / * Rob Faludi tarafından Buzzer örnek işlevi http://www.faludi.com https://gist.github.com/AnthonyDiGirolamo/1405180 * / long delayValue = 1000000 / frekans / 2; // Geçişler arasındaki gecikme değerini hesaplayın //// 1 saniye değerinde mikrosaniye değerinde, frekansa bölünür, sonra yarıya bölünür //// her çevrim için iki faz vardır uzun numCycles = frequency * length / 1000; // doğru zamanlama için döngü sayısını hesapla //// saniye başına gerçekten olan frekansı çarp, saniye için // / / ile üretilecek toplam döngü sayısını elde etmek için (uzun i = 0; i; = range2) öncekiMillis2 = currentMillis; int noteDuration = 1000 / tempo [songState]; vızıltı (10, melodi [songState], noteDuration); int pauseBetweenNotes = noteDuration; gecikmesi (pauseBetweenNotes); // ton çalmayı durdurma: buzz (10, 0, noteDuration); ++ songState; // eğer bitmişse şarkıyı tekrar başlat. eğer (songState> 79) songState = 14; // tanıtımı geç   

Bu dosyayı farklı kaydet “Buzzwire'dan” (Dosya> Farklı Kaydet) ve sonra panonuza yükleyin (Dosya> Yükle). Arduino'yu nasıl yükleyeceğinizden emin değilseniz veya bu kod biraz korkutucu görünüyorsa, Arduino Başlangıç ​​Kılavuzumuza bir göz atın Arduino ile Başlarken: Bir Başlangıç ​​Kılavuzu Arduino ile Başlarken: Bir Başlangıç ​​Kılavuzu Arduino açık kaynaklı bir kaynaktır. Esnek, kullanımı kolay donanım ve yazılıma dayalı elektronik prototipleme platformu. Sanatçılar, tasarımcılar, hobiler ve etkileşimli nesneler veya ortamlar yaratmak isteyen herkes için tasarlanmıştır. . Her şey yolunda, şimdi kendi vızıltı teli oyununa sahip olmalısınız - harika!

Bunu okuduktan sonra harika bir şey yaptıysanız, görmeyi çok isterim - aşağıdaki yorumlarda bana bildirin!




Henüz no comments

Modern teknoloji hakkında basit ve uygun fiyatlı.
Modern teknoloji dünyasında rehberiniz. Her gün bizi çevreleyen teknolojileri ve araçları nasıl kullanacağınızı ve Internet'te ilginç şeyleri nasıl keşfedeceğinizi öğrenin.