Mündəricat:
Video: Arduino Puzzle Box: 7 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:45
Bu layihə üçün musiqi ilə işləyən bir tapmaca qutusu hazırlayacağıq. Bunun əsas mahiyyəti ondan ibarətdir ki, bir düyməni basdığınız zaman bir melodiyanı buraxır və Arduino hansı düymələrin basıldığını hesablayır ki, nəyin doğru, nəyin yanlış olduğunu bilsin.
Təchizat
1 x Arduino uno
1 x 1k Ohm müqavimət
5 x 220 Ohm rezistorlar
1 xPiezo Buzzer
5 x 6x6 mm düymə
1 x Jumper telləri
1 x mükəmməl/şerit lövhə
1 x lehim dəsti
1 x menteşe
1 x sıxac
1 x kiçik sandıq/ağac
1x isti yapışqan silahı + yapışqan çubuqlar
1 x 9v batareya + tutacaq
bir az worbla
çəkmək
Addım 1:
Başlamaq üçün çörək taxtanızdakı sancaqları basmalısınız. İndi analoq 2 -ni lövhənin küncünə bir tel ilə bağlayın. İki rezistoru bir xəttə bağlayacağıq. Birincisi 10k Ohm rezistordur. Bu rezistorun digər ucuna telləri analoq yerə bağlayırıq. İkinci müqavimət, ilk düyməyə bağladığımız 220 Ohm rezistordur. Düymənin ikinci açıq tərəfini ikinci düyməyə bağlamaq üçün eyni dəyərdə olan başqa bir rezistor istifadə edin. Düymələri sonuna qədər bu şəkildə bağlamağa davam edin. Sonda bir tel götürüb düymənin müvafiq qapalı tərəfinə bağlayın və bir sonrakı xəttə bağlayın. İndi yalnız bildiyiniz rezistorlar ilə etdiyiniz prosesi təkrarlayırsınız. İlk düyməni Arduino -dakı analog 3, 3V portuna qoşun. Ümumiyyətlə, aşağıda təsvir edildiyi kimi bir növ çarpaz ata əldə edəcəksiniz.
Addım 2:
Sonra səs siqnalını çörək taxtasına qoşun və bir tərəfini rəqəmsal yerə, digər tərəfini isə 12 porta bağlayın. Aşağıdakı kodu artıq Arduino -ya yükləmək ağıllıdır, buna görə hər şeyin düzgün işlədiyini yoxlaya bilərsiniz. Əgər belədirsə, komponentləri birlikdə lehimləməyə başlaya bilərsiniz. Bunları çörək taxtasından çıxararaq telləri və əlaqələri bir -birinə birbaşa lehimləməklə edin. Düymələr arasında daha çox uzunluğa ehtiyacınız olduğunu düşünürsünüzsə, rezistorların arasına əlavə tel əlavə edə bilərsiniz. Bu anda çörək taxtasına ehtiyac yoxdur.
Addım 3:
Hər şey lehimləndikdən sonra qutunun özünü düzəltməyin vaxtıdır. Özüm üçün ucuz bir çekmece dəsti istifadə etdim. Sadəcə uzunluğunun yarısını kəsdim və kəsdiyim arxa və yan hissəni çıxardım. İndi c şəkilli iki ədəd olmalıdır. Qapaq kimi istifadə etmək üçün onlardan birinin bir tərəfini kəsin. İndi qalan hissələrdən birini qapaqsız bir qutu kimi bir -birinə yapışması üçün döndərin və yapışdırın. Yapışqan düzgün bir şəkildə qurulduqda, qutunun hər tərəfində düymələr üçün kiçik bir çuxur qazın və qapağındakı səs siqnalı üçün daha böyük.
Addım 4:
İndi qutunu rəngləməyə başlaya bilərsiniz. BOTW -ə əsaslanan bir çiçək dizaynı ilə mənimki etdim, amma həqiqətən istədiyiniz dizaynı seçə bilərsiniz. Bunu etdikdən sonra düymələri çuxurların içinə qoyub düymənin arxasına və ətrafdakı taxta bir kürək yapışqan qoya bilərsiniz. Eyni prinsip səs siqnalı üçün də keçərlidir, amma mənimki lazımsız hala gətirən çuxura mükəmməl uyğun gəlir. Sonra kiçik bir düymələr etmək üçün bir az worbla götürün və qızdırın və kəsin. Diqqətlə düymələrə yapışdırın, amma çox yapışqan istifadə etməməyinizə əmin olun, çünki təsadüfən düymələri yapışdıra bilərsiniz. İndi daha çox qutuya qarışması üçün onları boyaya bilərsiniz.
Addım 5:
Nəhayət, ikisini birləşdirən qutunun və qapağın üzərindəki sıxac və menteşələri yapışdırırsınız və ya vidalayırsınız.
Addım 6:
Qutunuz tamamlandıqdan sonra Arduino və batareyanı içəri qoyub qapağı bağlamaq kifayətdir.
Addım 7: Kod
// Bu Zelda temalı tapmacanın/musiqi qutusunun kodudur.
// bu, kodunuzu digər nişandakı qeydlər siyahısına bağlayır
#"meydançalar.h" daxil edin
// bu dəyişən, Arduinonun düyməni daha uzun basmasını yalnız bir basış kimi görməsini təmin edəcək
int eyni = 0;
// buradan girişinizi oxuyacaq
int k = 2;
// bu çıxış pininizdir
int dinamik = 12;
// aşağıda melodiyalar var
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_B5, 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_D4, 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};
// notun normal müddəti
int BEATTIME = 300;
// həllində olsaydıq izləyəcəyimiz sayğac
int teller = 0;
boş quraşdırma () {
Serial.begin (9600);
pinMode (2, GİRİŞ);
pinMode (1, GİRİŞ);
}
boşluq döngəsi () {
// sancaqlardakı girişi oxuyur
k = analogRead (2);
int p = analogRead (1);
// heç bir düyməyə basılmasa, ton olmamalıdır
əgər (danışan == 0) {
noTone (12);
}
// oxunan məlumatlar parametrlərə uyğundursa, təsvir olunan kod bitini işlədin
əgər (k> 320 && k <350) {
rechts ();
}
//""
başqa əgər (k 290) {
bağlantılar ();
}
//""
başqa halda (k> 260 && k <280) {
boven ();
}
//""
başqa halda (k> 240 && k <260) {
onder ();
}
//""
başqa halda (k> 220 && k <240) {
a ();
}
// yoxsa (heç bir düyməyə basılmadıqda), bu kodu işlədin
başqa {
// eyni şəkildə sıfırlayın, buna görə növbəti dəfə bir düyməyə basıldıqda istifadə edilə bilər
eyni = 0;
// sayğac müəyyən bir saya qədərdirsə, təsvir olunan kod bitini işlədin
əgər (kassir == 166) {
zelda ();
}
//""
başqa halda (teller == 386) {
sariya ();
}
//""
başqa halda (teller == 266) {
epona ();
}
//""
başqa halda (teller == 999) {
// xətanı qeyd etmək üçün bu tonu çalın
ton (dinamik, NOTE_C3, BEATTIME);
// sayğacı sıfıra sıfırlayın
kassir = 0;
}
}
// giriş və çıxış arasındakı gecikmə
gecikmə (100);
// seriya monitorunda daxil etdiyiniz dəyərləri çap edir
Serial.println (k);
}
// bu ilk melodiyadır
boş zelda () {
// bu, melodiyanı oxuyarkən özünü yeniləyən bir sayğac qurur ki, oxuya bilsin və lazım olanda dayandırsın
for (int i = 0; i <sizeof (Zelda); i ++) {
// qeydin nə qədər davam etməsini söyləyir
int ZTime = 1000 / ZeldaTime ;
// tonları yaradır
ton (natiq, Zelda , ZTime);
// düzgün gecikmə yaradır
int pause = ZTime * 1.30;
gecikmə (fasilə);
// sayğac sıfırlanır
kassir = 0;
// seriya monitorunda daxil etdiyiniz dəyərləri çap edir
Serial.println (kassir);
}
}
//""
boş epona () {
for (int i = 0; i <sizeof (Epona); i ++) {
int ETime = 1000 / EponaTime ;
ton (dinamik, Epona , ETime);
int pause = ETime * 1.30;
gecikmə (fasilə);
kassir = 0;
Serial.println (kassir);
}
}
//""
boş saria () {
for (int i = 0; i <sizeof (Saria); i ++) {
int STime = 1000 / SariaTime ;
ton (natiq, Saria , STime);
int pause = STime * 1.30;
gecikmə (fasilə);
kassir = 0;
Serial.println (kassir);
}
}
boş qeyd
hts () {
// buna hələ basılmamış olsaydı
əgər (eyni == 0) {
// sayğacda bu dəyərlərdən biri varsa, buna əlavə edin
əgər (teller == 0 || teller == 132 || teller == 165 || teller == 232 || teller == 265 || teller == 331 || teller == 374) {
kassir = kassir + 1;
}
// əks halda onu 999 -a təyin edin ki, səhv səsi eşitsin
başqa {
kassir = 999;
}
// Arduino uzun basmağı birdən çox basma kimi oxumaması üçün eyni birini təyin edin
eyni = 1;
}
// ton çal
başqa {
ton (dinamik, NOTE_A4, BEATTIME);
}
// seriya monitorda daxil etdiyiniz dəyərləri çap edir
Serial.println (kassir); }
//""
boş bağlantılar () {
əgər (eyni == 0) {
əgər (teller == 133 || teller == 254 || teller == 244 || teller == 332 || teller == 375 || teller == 221) {
kassir = kassir + 11;
}
başqa halda (teller == 0) {
kassir = 111;
}
başqa {
kassir = 999;
}
eyni = 1;
} başqa {
ton (dinamik, NOTE_B4, BEATTIME);
} Serial.println (kassir);
}
//""
void boven () {
if (eyni == 0) {if (teller == 111 || teller == 144 || teller == 233) {
kassir = kassir + 21;
}
başqa halda (teller == 0) {
kassir = 221;
}
başqa {
kassir = 999;
}
eyni = 1;
}
başqa {
ton (dinamik, NOTE_D5, BEATTIME);
Serial.println (kassir);
}
}
//""
void onder () {
əgər (eyni == 0) {
əgər (deyən == 343) {
kassir = kassir + 31;
}
başqa halda (teller == 0) {
kassir = 331;
} başqa {
kassir = 999;
} eyni = 1;
} başqa {
ton (dinamik, NOTE_F4, BEATTIME);
Serial.println (kassir);
}
}
//""
boş (a) {
əgər (eyni == 0) {
əgər (danışan == 0) {
kassir = 461;
}
başqa {
kassir = 999;
}
eyni = 1;
}
ton (dinamik, NOTE_D4, BEATTIME);
Serial.println (kassir);
}
Tövsiyə:
ESP32 ilə WebApp Puzzle LED Lampası: 5 Addım (Şəkillərlə)
ESP32 ilə WebApp Puzzle LED Lampası: İllərdir LED şeritlərlə oynayıram və bu yaxınlarda dostlarımın evinə köçdüm, zolağı divarlara asmaq kimi böyük dəyişikliklər edə bilmədim, buna görə də bu lampanı bir araya gətirdim. tək bir tel güc üçün çıxır və yerləşdirilə bilər
Uşaqlar üçün Heyvanlar Səs Puzzle: 4 addım
Uşaqlar üçün Animals Sound Puzzle: Heyvan tapmacası düzgün yerləşdirildikdə, heyvan öz səsi ilə səslənir. 24 aydan kiçik uşaqlar üçün. Oğullarınız, heyvanın yaydığı altı səsi eşidəndə sevinəcəklər. Bu layihə kommersiya məhsulu üzərində qurulub, amma istəyirəm
Azimuthal Projeksiyon 3D Xəritə Dekorasiya X Xalq Musiqi Puzzle Oyunu - Arduino: 7 Addım
Azimuthal Projeksiyon 3D Xəritədə Dekorasiya X Xalq Musiqisi Bulmacası Oyunu - Arduino: GİRİŞ Aşağıdakı səhifə, coğrafiya, həndəsə sahələrini özündə birləşdirən işıqlandırma və xalq musiqisi tapmaca oyunu ilə iki əsas funksiyaya malik bir Arduino layihəsinin necə yaradılacağını sizə göstərəcək. , xəritələr, Birləşmiş Millətlər və
Çox Gənclər üçün Juke Box Aka Raspi-Music-Box: 5 Addım
Çox Gənclər üçün Juke Box … Aka Raspi-Music-Box: "Raspberry-Pi əsaslı RFID-Musiqi-Robotu" ndan ilhamlanaraq; 3 yaşlı uşağı üçün ROALDH quran bir musiqi pleyerini təsvir edərək, hətta kiçik uşaqlarım üçün də bir juke qutusu qurmağa qərar verdim. Əsasən 16 düyməli bir qutu və Raspi 2 i
PUZZLE - Arduino Məntiq Oyunu: 3 addım
PUZZLE - Arduino Məntiq Oyunu: Salam.Mən sizə sadə bir tapmaca oyunu " Bulmaca " Arduino UNO və TFT-Shield istifadə edir. Oyunu yaratmaq üçün aşağıdakı komponentlərə ehtiyacım var: Arduino UNO Micro üçün Arduino UNO Power Adapter (AC-DC) 6-12V