Daftar Isi:

Kotak Puzzle Arduino: 7 Langkah
Kotak Puzzle Arduino: 7 Langkah

Video: Kotak Puzzle Arduino: 7 Langkah

Video: Kotak Puzzle Arduino: 7 Langkah
Video: Rubik’s Cubes From 1x1 - 19x19 2024, November
Anonim
Kotak Puzzle Arduino
Kotak Puzzle Arduino

Untuk proyek ini kita akan membuat kotak teka-teki yang bekerja dengan musik. Inti dasarnya adalah ketika Anda menekan sebuah tombol, ia akan mengeluarkan nada dan Arduino menghitung tombol mana yang ditekan sehingga ia tahu jawaban mana yang benar dan mana yang salah.

Perlengkapan

1 x Arduino uno

1x1k Ohm resistor

5x220 Ohm resistor

1 xPiezo Buzzer

5 x tombol tekan 6x6 mm

1 x set kabel Jumper

1 x perf/strip papan

1 x solder set

1 x engsel

1 x penjepit

1 x laci kecil/kayu

1x pistol lem panas + lem tongkat

1x9v baterai + dudukan

sedikit worbla

cat

Langkah 1:

Gambar
Gambar

Untuk memulainya, Anda harus menekan pin di papan tempat memotong roti. Sekarang hubungkan analog 2 dengan kabel ke sudut papan. Kami akan menghubungkan dua resistor ke dalam satu baris. Yang pertama adalah resistor 10k Ohm. Ke ujung lain dari resistor ini kami menghubungkan kabel ke ground analog. Resistor kedua adalah resistor 220 Ohm yang kami sambungkan ke tombol pertama. Gunakan resistor lain dengan nilai yang sama untuk menghubungkan sisi terbuka kedua tombol dengan tombol kedua. Terus sambungkan tombol seperti ini hingga yang terakhir. Pada yang terakhir Anda mengambil kabel dan menghubungkannya ke sisi tertutup yang sesuai dari tombol dan menghubungkannya ke yang berikutnya dalam antrean. Anda sekarang mengulangi proses yang Anda lakukan dengan resistor hanya tahu dengan kabel biasa. Hubungkan tombol pertama ke port analog 3, 3V di Arduino Anda. Secara keseluruhan Anda akan mendapatkan semacam pola silang seperti yang digambarkan di bawah ini.

Langkah 2:

Selanjutnya colokkan buzzer Anda ke papan tempat memotong roti dan kencangkan satu sisi ke ground digital dan sisi lainnya ke port 12. Adalah cerdas untuk mengunggah kode berikut ke Arduino Anda sehingga Anda dapat menguji apakah semuanya berfungsi dengan benar. Jika ya, Anda dapat mulai menyolder komponen bersama-sama. Lakukan ini dengan mengeluarkannya dari papan tempat memotong roti dan menyolder kabel dan sambungan secara langsung. Jika Anda merasa perlu lebih panjang di antara tombol, Anda dapat menambahkan beberapa kabel ekstra di antara resistor. Papan tempat memotong roti tidak lagi diperlukan pada saat ini.

Langkah 3:

Gambar
Gambar

Setelah semuanya disolder saatnya untuk membuat kotak itu sendiri. Saya menggunakan satu set laci murah sebagai alas untuk laci saya. Saya hanya memotong setengah memanjang dan melepaskan bagian belakang dan samping yang saya potong. Anda harus memiliki dua buah berbentuk c sekarang. Potong salah satu sisinya untuk digunakan sebagai penutup. Sekarang putar salah satu bagian yang tersisa sehingga menyatu seperti kotak tanpa tutup dan rekatkan. Setelah lem terpasang dengan benar, bor lubang kecil di setiap sisi kotak untuk kancing dan lubang yang lebih besar untuk bel di tutupnya.

Langkah 4:

Gambar
Gambar
Gambar
Gambar

Sekarang Anda bisa mengecat kotaknya. Saya melakukan milik saya dengan desain bunga berdasarkan BOTW tetapi Anda benar-benar dapat memilih desain apa pun yang Anda inginkan. Setelah ini selesai, Anda dapat meletakkan kancing di dalam lubang dan menempelkan segumpal lem di bagian belakang kancing dan kayu di sekitarnya. Prinsip yang sama berlaku untuk bel tetapi milik saya sangat pas di lubang sehingga tidak perlu. Selanjutnya Anda ambil beberapa worbla dan panaskan dan potong untuk membuat beberapa kancing kecil. Rekatkan dengan hati-hati ke kancing, tetapi pastikan untuk tidak menggunakan terlalu banyak lem karena Anda mungkin tidak sengaja membuat kancing tersangkut. Sekarang Anda bisa mengecatnya agar lebih menyatu dengan kotak.

Langkah 5:

Terakhir Anda lem atau sekrup, klem dan engsel pada kotak dan tutup yang menghubungkan keduanya.

Langkah 6:

Sekarang setelah kotak Anda selesai, yang harus Anda lakukan adalah meletakkan Arduino dan baterai di dalamnya dan menutup penutupnya.

Langkah 7: Kode

// Ini adalah kode untuk kotak teka-teki/musik bertema Zelda.

// ini menghubungkan kode Anda ke daftar catatan di tab lain

#sertakan "pitches.h"

// variabel ini akan memastikan bahwa Arduino melihat penekanan tombol yang lebih lama hanya dengan sekali tekan

int sama = 0;

// dari sini ia akan membaca masukan Anda

int k = 2;

//ini adalah pin keluaran Anda

int pembicara = 12;

// di bawah ini adalah melodi akhir

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 ZeldaWaktu = {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 EponaWaktu = {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};

// durasi normal sebuah not

int BEATTIME = 300;

// penghitung yang akan dilacak jika kita berada dalam solusi

int teller = 0;

batalkan pengaturan() {

Serial.begin(9600);

pinMode(2, INPUT);

pinMode(1, INPUT);

}

lingkaran kosong() {

// membaca input dari pin

k = analogBaca(2);

int p = analogBaca(1);

//jika tidak ada tombol yang ditekan seharusnya tidak ada nada

jika (petugas == 0) {

tidakNada(12);

}

//jika data yang dibaca sesuai dengan parameter, jalankan bit kode yang dijelaskan

if (k > 320 && k < 350) {

recht();

}

//""

else if (k 290) {

tautan();

}

//""

else if (k > 260 && k < 280) {

boven();

}

//""

else if (k> 240 && k < 260) {

melihat();

}

//""

else if (k > 220 && k < 240) {

A();

}

// jika tidak (bila tidak ada tombol yang ditekan), jalankan kode ini

lain {

// reset sama sehingga dapat digunakan saat tombol ditekan berikutnya

sama = 0;

// jika penghitung mencapai angka tertentu, jalankan bit kode yang dijelaskan

if (teller == 166) {

zelda();

}

//""

lain jika (teller == 386) {

sari();

}

//""

lain jika (teller == 266) {

epon();

}

//""

lain jika (teller == 999) {

//mainkan nada ini untuk menandai kesalahan

nada (speaker, NOTE_C3, BEATTIME);

//reset penghitung ke 0

teller = 0;

}

}

//penundaan antara input dan output

penundaan(100);

// mencetak nilai input Anda di monitor serial

Serial.println(k);

}

// ini adalah melodi pertama

batal zelda() {

// ini mengatur penghitung yang memperbarui dirinya sendiri saat memainkan melodi sehingga dapat membacanya dan berhenti ketika seharusnya

for (int i = 0; i < sizeof(Zelda); i++) {

//mengatakan berapa lama sebuah catatan harus bertahan

int ZWaktu = 1000 / ZeldaTime;

//menghasilkan nada

nada (speaker, Zelda, ZTime);

//membuat penundaan yang benar

int jeda = ZWaktu * 1,30;

penundaan (jeda);

//setel ulang penghitung

teller = 0;

// mencetak nilai input Anda di monitor serial

Serial.println(teller);

}

}

//""

kosong epon() {

for (int i = 0; i < sizeof(Epona); i++) {

int ETime = 1000 / EponaTime;

nada (speaker, Epona, ETime);

int jeda = EWaktu * 1,30;

penundaan (jeda);

teller = 0;

Serial.println(teller);

}

}

//""

batal sari() {

for (int i = 0; i < sizeof(Saria); i++) {

int STime = 1000 / SariaTime;

nada (speaker, Saria, STime);

int jeda = SWaktu * 1,30;

penundaan (jeda);

teller = 0;

Serial.println(teller);

}

}

batal rek

hts() {

// jika ini belum ditekan

jika (sama == 0) {

// jika penghitung saat ini memiliki salah satu dari nilai ini, tambahkan ini ke dalamnya

if (teller == 0 || teller == 132 || teller == 165 || teller == 232 || teller == 265 || teller == 331 || teller == 374) {

teller = teller + 1;

}

// jika tidak atur ke 999 sehingga Anda mendengar suara kesalahan te

lain {

teller = 999;

}

// atur sama ke satu sehingga Arduino tidak membaca pers yang lama sebagai beberapa penekanan

sama = 1;

}

// mainkan nadanya

lain {

nada(speaker, NOTE_A4, BEATTIME);

}

// mencetak nilai input Anda di monitor serial

Serial.println(teller); }

//""

tautan kosong() {

jika (sama == 0) {

if (teller == 133 || teller == 254 || teller == 244 || teller == 332 || teller == 375 || teller == 221) {

teller = teller + 11;

}

lain jika (teller == 0) {

teller = 111;

}

lain {

teller = 999;

}

sama = 1;

} lain{

nada(speaker, NOTE_B4, BEATTIME);

} Serial.println(teller);

}

//""

batal boven() {

if (sama == 0) { if (teller == 111 || teller == 144 || teller == 233) {

teller = teller + 21;

}

lain jika (teller == 0) {

teller = 221;

}

lain {

teller = 999;

}

sama = 1;

}

lain {

nada (speaker, NOTE_D5, BEATTIME);

Serial.println(teller);

}

}

//""

batalkan onder() {

jika (sama == 0) {

jika (teller == 343) {

teller = teller + 31;

}

lain jika (teller == 0) {

teller = 331;

} lain {

teller = 999;

} sama = 1;

} lain {

nada(speaker, NOTE_F4, BEATTIME);

Serial.println(teller);

}

}

//""

batal a() {

jika (sama == 0) {

jika (petugas == 0) {

teller = 461;

}

lain {

teller = 999;

}

sama = 1;

}

nada(speaker, NOTE_D4, BEATTIME);

Serial.println(teller);

}

Direkomendasikan: