İçindekiler:
Video: Arduino Yapboz Kutusu: 7 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Bu proje için müzikle çalışan bir bulmaca kutusu yapacağız. Temel amacı, bir düğmeye bastığınızda bir melodi serbest bırakması ve Arduino'nun hangi düğmelere basıldığını hesaplaması, böylece neyin doğru neyin yanlış cevap olduğunu bilmesidir.
Gereçler
1 x Arduino uno
1 x 1k Ohm direnç
5 x 220 Ohm dirençler
1 xPiezo Buzzer
5 x buton 6x6 mm
1 x set Jumper telleri
1 x mükemmel/şerit tahtası
1 x lehim seti
1 x menteşe
1 x kelepçe
1 x küçük çekmeceli/ahşap
1x sıcak tutkal tabancası + tutkal çubukları
1 x 9v pil + tutucu
biraz işkembe
boya
Aşama 1:
Başlamak için, breadboard'unuzdaki pinlerinize basmanız gerekir. Şimdi analog 2'yi bir tel ile kartın köşesine bağlayın. Bir hatta iki direnç bağlayacağız. Birincisi 10k Ohm'luk bir dirençtir. Bu direncin diğer ucuna kabloyu analog toprağa bağlarız. İkinci direnç 220 Ohm'luk bir direnç ise birinci butona bağlıyoruz. Butonun ikinci açık tarafını ikinci butona bağlamak için aynı değerde başka bir direnç kullanın. Sonuncuya kadar düğmeleri bu şekilde bağlamaya devam edin. Sonuncusunda bir kabloyu alıp düğmenin ilgili kapalı tarafına bağlayıp sıradaki bir sonrakine bağlarsınız. Artık sadece düz kablolarla bildiğiniz dirençlerle yaptığınız işlemi tekrarlıyorsunuz. İlk düğmeyi Arduino'nuzdaki analog 3, 3V bağlantı noktasına bağlayın. Sonuç olarak, aşağıda gösterildiği gibi bir tür çapraz desen elde edeceksiniz.
Adım 2:
Ardından sesli uyarınızı devre tahtasına takın ve bir tarafını dijital zemine, diğerini 12 bağlantı noktasına sabitleyin. Aşağıdaki kodu Arduino'nuza yüklemek akıllıcadır, böylece her şeyin doğru çalışıp çalışmadığını test edebilirsiniz. Öyleyse, bileşenleri birlikte lehimlemeye başlayabilirsiniz. Bunu, bunları devre tahtasından çıkararak ve telleri ve bağlantıları doğrudan birbirine lehimleyerek yapın. Düğmeler arasında daha fazla uzunluğa ihtiyacınız olduğunu düşünüyorsanız, dirençler arasına fazladan kablo ekleyebilirsiniz. Breadboard artık bu noktada gerekli değildir.
Aşama 3:
Her şey lehimlendikten sonra kutunun kendisini yapma zamanı geldi. Benim için bir üs olarak ucuz bir çekmece seti kullandım. Sadece boyuna ikiye böldüm ve kestiğim arka ve yanları çıkardım. Artık iki adet c şeklinde parçanız olmalı. Kapak olarak kullanmak için bir tarafını kesin. Şimdi kalan parçalardan birini kapaksız bir kutu gibi birbirine oturacak şekilde döndürün ve birbirine yapıştırın. Tutkal düzgün bir şekilde yerleştiğinde, kutunun her iki yanına düğmeler için küçük ve kapaktaki sesli uyarı için daha büyük bir delik açın.
4. Adım:
Şimdi kutuyu boyamaya başlayabilirsiniz. Benimkini BOTW'a dayalı bir çiçek tasarımıyla yaptım ama gerçekten istediğiniz herhangi bir tasarımı seçebilirsiniz. Bu yapıldıktan sonra düğmeleri deliklerin içine yerleştirebilir ve düğmenin arkasına ve çevresindeki tahtaya bir küre yapıştırıcı koyabilirsiniz. Aynı prensip buzzer için de geçerlidir, ancak benimki deliğe mükemmel bir şekilde oturur ve gereksiz hale gelir. Sonra biraz Worbla alıp ısıtıp küçük düğmeler yapmak için kesiyorsunuz. Bunları dikkatlice düğmelere yapıştırın, ancak çok fazla yapıştırıcı kullanmadığınızdan emin olun çünkü yanlışlıkla düğmeler sıkışabilir. Artık kutuyla daha fazla karışmalarını sağlamak için onları boyayabilirsiniz.
Adım 5:
Son olarak, kutunun üzerindeki kelepçeyi ve menteşeleri ve ikisini birbirine bağlayan kapağı yapıştırır veya vidalarsınız.
6. Adım:
Artık kutunuz tamamlandığında yapmanız gereken tek şey Arduino ve pili içine koyup kapağı kapatmak.
7. Adım: Kod
// Bu, Zelda temalı bir bulmaca/müzik kutusunun kodudur.
// bu, kodunuzu diğer sekmedeki notlar listesine bağlar
#include "pitch.h"
// bu değişken Arduino'nun düğmeye uzun süre basıldığını tek bir basış olarak görmesini sağlayacaktır.
int aynı = 0;
// buradan girişinizi okuyacaktır
int k = 2;
// bu senin çıkış pinin
int konuşmacı = 12;
// bitiş melodileri aşağıdadır
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_G4, 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};
// bir notun normal süresi
int BEATTIME = 300;
// takip edilecek sayaç çözümde miydik
int veznedar = 0;
geçersiz kurulum() {
Seri.başla(9600);
pinMode(2, GİRİŞ);
pinMode(1, GİRİŞ);
}
boşluk döngüsü () {
// pinlerden girişi okur
k = analogRead(2);
int p = analogRead(1);
// basılan herhangi bir tuş yoksa ton da olmamalıdır
if (vezneci == 0) {
tonsuz(12);
}
// okunan veriler parametrelere karşılık geliyorsa, açıklanan kod bitini çalıştırın
if (k > 320 && k < 350) {
rechts();
}
//""
aksi takdirde (k 290) {
bağlantılar();
}
//""
else if (k > 260 && k < 280) {
boven();
}
//""
else if (k> 240 && k < 260) {
onder();
}
//""
else if (k > 220 && k < 240) {
a();
}
// olmazsa (hiçbir tuşa basılmadığında), bu kodu çalıştırın
Başka {
// aynısını sıfırla, böylece bir sonraki düğmeye basıldığında kullanılabilir
aynı = 0;
// sayaç belirli bir sayıya kadar ise, açıklanan kod bitini çalıştırın
if (vezneci == 166) {
zelda();
}
//""
else if (teller == 386) {
saria();
}
//""
else if (teller == 266) {
epona();
}
//""
else if (teller == 999) {
// hatayı işaretlemek için bu tonu çal
ton(hoparlör, NOTE_C3, BEATTIME);
// sayacı 0'a sıfırla
veznedar = 0;
}
}
//giriş ve çıkış arasındaki gecikme
gecikme(100);
// girişinizin değerlerini seri monitörde yazdırır
Seri.println(k);
}
// bu ilk melodi
geçersiz zelda() {
// bu, melodiyi çalarken kendisini güncelleyen bir sayaç ayarlar, böylece melodiyi okuyabilir ve gerektiğinde durabilir
for (int i = 0; i < sizeof(Zelda); i++) {
// bir notun ne kadar sürmesi gerektiğini söyler
int ZTime = 1000 / ZeldaTime;
//tonları üretir
ton (hoparlör, Zelda, ZTime);
// doğru gecikmeyi yaratır
int duraklama = ZZaman * 1.30;
gecikme(duraklatma);
// sayacı sıfırlar
veznedar = 0;
// girişinizin değerlerini seri monitörde yazdırır
Serial.println(vezne);
}
}
//""
boşluk epona() {
for (int i = 0; i < sizeof(Epona); i++) {
int ETime = 1000 / EponaTime;
ton (hoparlör, Epona, ETime);
int duraklama = ETime * 1.30;
gecikme(duraklatma);
veznedar = 0;
Serial.println(vezne);
}
}
//""
geçersiz saria() {
for (int i = 0; i < sizeof(Saria); i++) {
int STime = 1000 / SariaTime;
ton (hoparlör, Saria, STime);
int duraklama = STime * 1.30;
gecikme(duraklatma);
veznedar = 0;
Serial.println(vezne);
}
}
geçersiz kayıt
hts() {
// bu zaten basılmamışsa
if (aynı == 0) {
// sayaç şu anda bu değerlerden birine sahipse bunu ona ekleyin
if (vezneci == 0 || veznedar == 132 || veznedar == 165 || veznedar == 232 || veznedar == 265 || veznedar == 331 || veznedar == 374) {
veznedar = veznedar + 1;
}
// aksi halde 999'a ayarlayın, böylece hata sesini duyarsınız
Başka {
veznedar = 999;
}
// Arduino'nun uzun süreli basışı birden fazla basış olarak okumaması için aynı değeri bire ayarlayın
aynı = 1;
}
// tonu çal
Başka {
ton(hoparlör, NOTE_A4, BEATTIME);
}
// girişinizin değerlerini seri monitörde yazdırır
Serial.println(vezne); }
//""
geçersiz bağlantılar () {
if (aynı == 0) {
if (vezneci == 133 || veznedar == 254 || veznedar == 244 || veznedar == 332 || veznedar == 375 || veznedar == 221) {
veznedar = veznedar + 11;
}
else if (teller == 0) {
veznedar = 111;
}
Başka {
veznedar = 999;
}
aynı = 1;
} Başka{
ton(hoparlör, NOTE_B4, BEATTIME);
} Serial.println(teller);
}
//""
void boven() {
if (aynı == 0) { if (vezneci == 111 || veznedar == 144 || veznedar == 233) {
veznedar = veznedar + 21;
}
else if (teller == 0) {
veznedar = 221;
}
Başka {
veznedar = 999;
}
aynı = 1;
}
Başka {
ton(hoparlör, NOTE_D5, BEATTIME);
Serial.println(vezne);
}
}
//""
geçersiz onder() {
if (aynı == 0) {
if (vezneci == 343) {
veznedar = veznedar + 31;
}
else if (teller == 0) {
veznedar = 331;
} Başka {
veznedar = 999;
} aynı = 1;
} Başka {
ton(hoparlör, NOTE_F4, BEATTIME);
Serial.println(vezne);
}
}
//""
geçersiz a() {
if (aynı == 0) {
if (vezneci == 0) {
veznedar = 461;
}
Başka {
veznedar = 999;
}
aynı = 1;
}
ton(hoparlör, NOTE_D4, BEATTIME);
Serial.println(vezne);
}
Önerilen:
BBC MicroBit Kullanan Hafıza Yapboz Oyunu: 7 Adım
BBC MicroBit Kullanarak Hafıza Yapboz Oyunu: BBC MicroBit'in ne olduğunu bilmiyorsanız, temelde giriş ve çıkışları programlayabileceğiniz gerçekten küçük bir cihazdır. Bir tür Arduino gibi, ama daha fazla ete sahip. MicroBit hakkında gerçekten sevdiğim şey, iki adet yerleşik girişe sahip olmasıydı
Azimutal Projeksiyon 3D Harita Dekorasyon X Halk Müziği Yapboz Oyunu - Arduino: 7 Adım
Azimutal Projeksiyon 3D Harita Dekorasyon X Halk Müziği Yapboz Oyunu - Arduino: GİRİŞ Aşağıdaki sayfada, iki ana işlevi olan bir Arduino projesinin nasıl oluşturulacağı anlatılacaktır - aydınlatmalı sade dekorasyon ve coğrafya, geometri alanlarını içeren halk müziği yapboz oyunu , haritalar, Birleşmiş Milletler ve
LED Yapboz Işığı (Akrilik Lazer Kesim): 7 Adım (Resimlerle)
LED Yapboz Işığı (Akrilik Lazer Kesim): Başkalarının yaptığı çeşitli akrilik lazer kesim gece ışıklarından her zaman keyif almışımdır. Bunlar hakkında daha fazla düşününce, gece lambasının da bir eğlence biçimi olarak ikiye katlanmasının harika olacağını düşündüm. Bu akılla yaratmaya karar verdim
Arduino 'breadbot' Yapboz Oyunu: 6 Adım (Resimlerle)
Arduino 'breadbot' Yapboz Oyunu: Oh hayır! Bebek robotumun tekrar hayata dönmesi için birkaç kabloya ihtiyacı var! Bugün, yeni başlayan arduino kullanıcılarına breadboarding hakkında bir şeyler öğretebilecek bir bulmaca oyunu yapacağız. Bu yüzden bunu yaptım! İstediğin kadar karmaşık hale getirebilirsin, ama ben seçtim
Yapboz Saat: 8 Adım (Resimli)
Jigsaw Puzzle Clock: Bir yapboz parçasının saatin kollarından birinde hareket ettiği bir yapbozdan bir saat yapmanın eğlenceli olacağını düşündüm, bu yüzden saat saati vurduğunda yapboz parçası uyuyor. Yapbozumun yaklaşık bir inç büyüklüğünde parçalara sahip olmasını istedim,