Cuprins:
Video: Caseta Puzzle Arduino: 7 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
Pentru acest proiect vom realiza o casetă de puzzle care funcționează cu muzică. Esența de bază este că atunci când apăsați un buton eliberează un ton și Arduino calculează ce butoane sunt apăsate, astfel încât să știe ce este corect și care este răspunsul greșit.
Provizii
1 x Arduino uno
Rezistor 1 x 1k Ohm
Rezistențe de 5 x 220 Ohm
1 xPiezo Buzzer
5 x buton 6x6 mm
1 x set Jumper fire
1 x bord perf / strip
1 x solder
1 x balama
1 x clemă
1 x comoda mica / lemn
1x pistol de adeziv fierbinte + lipici
1 x baterie de 9v + suport
un pic de worbla
a picta
Pasul 1:
Pentru a începe, trebuie să apăsați pinii în panoul de testare. Acum conectați analogul 2 cu un fir la colțul plăcii. Vom conecta la acesta două rezistențe într-o linie. Primul este un rezistor de 10k Ohm. La celălalt capăt al acestui rezistor conectăm firul la pământul analogic. Al doilea rezistor este un rezistor de 220 Ohm pe care îl conectăm la primul buton. Utilizați un alt rezistor de aceeași valoare pentru a conecta a doua parte deschisă a butonului cu al doilea buton. Continuați să conectați butoanele astfel până la ultimul. La ultima apucați un fir și îl conectați la o parte închisă corespunzătoare a butonului și îl conectați la următorul din linie. Acum repetați procesul pe care l-ați făcut cu rezistențele cunoscute doar cu fire simple. Conectați primul buton la portul analogic 3, 3V de pe Arduino. În general, veți obține un fel de patern încrucișat așa cum este descris mai jos.
Pasul 2:
Apoi conectați buzzer-ul la placa de siguranță și fixați o parte de solul digital și cealaltă de portul 12. Este inteligent să încărcați deja următorul cod în Arduino, astfel încât să puteți testa dacă totul funcționează corect. Dacă este, puteți începe să lipiți componentele împreună. Faceți acest lucru scoțându-le din panou și lipind direct firele și conexiunile. Dacă credeți că aveți nevoie de mai multă lungime între butoane, puteți adăuga un fir suplimentar între rezistențe. Panoul de verificare nu mai este necesar în acest moment.
Pasul 3:
După ce totul este lipit, este timpul să faceți cutia în sine. Am folosit un set de sertare ieftine ca bază pentru a mea. Pur și simplu am tăiat pe jumătate pe lungime și am îndepărtat spatele și latura pe care am tăiat-o. Ar trebui să aveți două piese în formă de c acum. Tăiați o parte a uneia dintre ele pentru a o folosi ca capac. Acum rotiți una dintre piesele rămase astfel încât să se potrivească împreună ca o cutie fără capac și lipiți-le împreună. Odată ce lipiciul a fost stabilit corect, găuriți o gaură mică în fiecare parte a cutiei pentru butoane și una mai mare pentru buzzerul din capac.
Pasul 4:
Acum puteți începe să pictați cutia. Am făcut-o pe a mea cu un design de flori bazat pe BOTW, dar puteți alege cu adevărat orice design doriți. După ce ați terminat, puteți pune butoanele în interiorul găurilor și puteți pune un glob de adeziv pe spatele butonului și lemnul din jur. Același principiu se aplică buzzerului, dar al meu se potrivește perfect în gaură, făcându-l inutil. Apoi apucați niște worbla și încălziți-o și tăiați-o pentru a face niște butoane mici. Lipiți-le cu atenție pe butoane, dar asigurați-vă că nu utilizați prea mult lipici, deoarece s-ar putea să blocați accidental butoanele. Acum le puteți vopsi pentru a le face să se amestece mai mult cu cutia.
Pasul 5:
În cele din urmă lipiți sau înșurubați, clema și balamalele de pe cutie și capac care leagă cele două.
Pasul 6:
Acum, când cutia dvs. este completă, tot ce trebuie să faceți este să puneți Arduino și bateria în interior și să închideți capacul.
Pasul 7: Cod
// Acesta este codul pentru o casetă de puzzle / muzică tematică Zelda.
// acesta vă conectează codul la lista de note din cealaltă filă
#include "pitches.h"
// această variabilă se va asigura că Arduino vede o apăsare mai lungă a butonului ca o singură apăsare
int same = 0;
// de aici vă va citi intrarea
int k = 2;
// acesta este pinul dvs. de ieșire
difuzor int = 12;
// mai jos sunt melodiile finale
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_E, int SariaTime = {8, 8, 4, 8, 8, 4, 8, 8, 8, 8, 4, 8, 8, 8, 8, 3, 8, 8, 8, 2, 1};
// durata normală a unei note
int BEATTIME = 300;
// ghișeul pe care urmează să îl urmărim dacă suntem în soluție
casier int = 0;
configurare nulă () {
Serial.begin (9600);
pinMode (2, INPUT);
pinMode (1, INPUT);
}
bucla nulă () {
// citește intrarea din pini
k = analogRead (2);
int p = analogRead (1);
// dacă nu este apăsat niciun buton, nu ar trebui să existe niciun ton
if (casier == 0) {
noTone (12);
}
// dacă datele citite corespund parametrilor rulați bitul de cod descris
if (k> 320 && k <350) {
rechts ();
}
//""
altfel dacă (k 290) {
link-uri ();
}
//""
altfel dacă (k> 260 && k <280) {
boven ();
}
//""
altfel dacă (k> 240 && k <260) {
onder ();
}
//""
altfel dacă (k> 220 && k <240) {
A();
}
// dacă nu (când nu este apăsat niciun buton), rulați acest cod
altceva {
// Resetați același lucru, astfel încât să poată fi utilizat la următoarea apăsare a unui buton
la fel = 0;
// dacă contorul este de până la un anumit număr rulați bitul de cod descris
if (casier == 166) {
zelda ();
}
//""
altfel if (casier == 386) {
saria ();
}
//""
altfel if (casier == 266) {
epona ();
}
//""
altfel if (casier == 999) {
// redați acest ton pentru a marca eroarea
ton (difuzor, NOTE_C3, BEATTIME);
// resetați contorul la 0
casier = 0;
}
}
// întârzierea între intrare și ieșire
întârziere (100);
// imprimă valorile intrării dvs. pe monitorul serial
Serial.println (k);
}
// aceasta este prima melodie
void zelda () {
// setează un contor care se actualizează pe sine în timp ce redă melodia, astfel încât să poată citi și opri când ar trebui
for (int i = 0; i <sizeof (Zelda); i ++) {
// spune cât trebuie să dureze o notă
int ZTime = 1000 / ZeldaTime ;
// generează tonurile
ton (difuzor, Zelda , ZTime);
// creează întârzierea corectă
int pauză = ZTime * 1,30;
întârziere (pauză);
// resetează contorul
casier = 0;
// imprimă valorile intrării dvs. pe monitorul serial
Serial.println (casier);
}
}
//""
void epona () {
for (int i = 0; i <sizeof (Epona); i ++) {
int ETime = 1000 / EponaTime ;
ton (difuzor, Epona , ETime);
int pauză = ETime * 1,30;
întârziere (pauză);
casier = 0;
Serial.println (casier);
}
}
//""
void saria () {
for (int i = 0; i <sizeof (Saria); i ++) {
int STime = 1000 / SariaTime ;
ton (difuzor, Saria , STime);
int pauză = STime * 1,30;
întârziere (pauză);
casier = 0;
Serial.println (casier);
}
}
anularea rec
hts () {
// dacă acest lucru nu a fost deja apăsat
if (la fel == 0) {
// dacă contorul are în prezent una dintre aceste valori, adăugați-l
if (teller == 0 || teller == 132 || teller == 165 || teller == 232 || teller == 265 || teller == 331 || teller == 374) {
casier = casier + 1;
}
// în caz contrar, setați-l la 999, astfel încât să auziți zgomotul de eroare
altceva {
casier = 999;
}
// setați același lucru la unul astfel încât Arduino să nu citească o apăsare prelungită ca apăsări multiple
la fel = 1;
}
// redă tonul
altceva {
ton (difuzor, NOTE_A4, BEATTIME);
}
// imprimă valorile intrării dvs. pe monitorul serial
Serial.println (casier); }
//""
linkuri nule () {
if (la fel == 0) {
if (teller == 133 || teller == 254 || teller == 244 || teller == 332 || teller == 375 || teller == 221) {
teller = teller + 11;
}
altfel if (teller == 0) {
casier = 111;
}
altceva {
casier = 999;
}
la fel = 1;
} altceva {
ton (difuzor, NOTE_B4, BEATTIME);
} Serial.println (casier);
}
//""
void boven () {
if (same == 0) {if (teller == 111 || teller == 144 || teller == 233) {
teller = teller + 21;
}
altfel if (teller == 0) {
casier = 221;
}
altceva {
casier = 999;
}
la fel = 1;
}
altceva {
ton (difuzor, NOTE_D5, BEATTIME);
Serial.println (casier);
}
}
//""
void onder () {
if (la fel == 0) {
if (casier == 343) {
teller = teller + 31;
}
altfel if (teller == 0) {
casier = 331;
} altceva {
casier = 999;
} la fel = 1;
} altceva {
ton (difuzor, NOTE_F4, BEATTIME);
Serial.println (casier);
}
}
//""
anulați un () {
if (la fel == 0) {
if (casier == 0) {
casier = 461;
}
altceva {
casier = 999;
}
la fel = 1;
}
ton (difuzor, NOTE_D4, BEATTIME);
Serial.println (casier);
}
Recomandat:
Joc Crack the Code, casetă de puzzle bazată pe Arduino: 4 pași (cu imagini)
Crack the Code Game, Arduino Based Puzzle Box: În acest Instructable, îți voi arăta cum să-ți construiești propriul joc de cod crack în care folosești un disc rotativ cu codificator pentru a ghici codul generat aleatoriu în seif. Există 8 LED-uri pe partea din față a seifului pentru a vă spune câți dintre
Casetă de amprentă digitală cu Arduino: 7 pași
Fingerprint Locker With Arduino: Bună, În acest articol vom face Security Locker care funcționează pe modelul de amprentă bio-metric. Sper că vă face plăcere. #cum #să #Amprenta digitală #Locker
Casetă de efecte sonore Arduino minim: 5 pași
Minimal Arduino Sound Effect Box: Acesta este un proiect rapid al unei cutii de efecte sonore. Dispozitivul citește un fișier wav preînregistrat dintr-un microSD atribuit unui anumit buton și îl redă atunci când este apăsat
Casetă video cu casetă: 8 pași
Casetă video pentru casete: acesta este primul meu instructable, așa că vă rog să fiți amabili. Am avut această idee acum câteva zile și tocmai am ajuns la ea. în acest instructable vă voi arăta cum am făcut o cutie mică cu braț portabil dintr-un set de boxe pentru computer și o casetă video. îmi cer scuze
Casetă casetă USB: 5 pași
Casetă cu bandă USB: un mod retro pentru carcasă USB, care utilizează o bandă de date casetă veche. Aveam câteva casete de date vechi care se întindeau în jur și am decis să transform una într-o carcasă USB, sătul de modurile de cărămidă LEGO. Casetele au dimensiunea perfectă pentru aceasta, suficient de groase și suficient de ușoare