Përmbajtje:
Video: Arduino Puzzle Box: 7 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:16
Për këtë projekt ne do të bëjmë një kuti enigmash që punon me muzikë. Thelbi themelor i tij është se kur shtypni një buton lëshon një melodi dhe Arduino llogarit se cilat butona shtypen në mënyrë që të dijë se cila është përgjigja e duhur dhe cila është e gabuar.
Furnizimet
1 x Arduino uno
Rezistencë 1 x 1k Ohm
5 x 220 Ohm rezistorë
1 xPiezo Buzzer
5 x buton 6x6 mm
1 x tela të vendosur Jumper
1 x pllakë perf/strip
1 x saldim
1 x varen
1 x pirg
1 x komodë e vogël/dru
1x armë me zam të nxehtë + shkopinj zam
1 x 9v bateri + mbajtëse
pak nga worbla
bojë
Hapi 1:
Për të filluar, duhet të shtypni kunjat në tabelën tuaj të bukës. Tani lidhni analogun 2 me një tel në cep të bordit. Ne do të lidhim dy rezistorë me të në një linjë. E para është një rezistencë 10k Ohm. Në skajin tjetër të këtij rezistori ne lidhim tela me tokën analoge. Rezistenca e dytë është një rezistencë 220 Ohm që e lidhim me butonin e parë. Përdorni një rezistencë tjetër me të njëjtën vlerë në mënyrë që të lidhni anën e dytë të hapur të butonit me butonin e dytë. Vazhdoni të lidhni butonat si kjo deri në të fundit. Në të fundit ju kapni një tel dhe e lidhni me anën përkatëse të mbyllur të butonit dhe e lidhni me atë tjetër në rresht. Tani përsërisni procesin që keni bërë me rezistorët që e dini vetëm me tela të thjeshtë. Lidhni butonin e parë me portën analoge 3, 3V në Arduino tuaj. Në përgjithësi, ju do të merrni një lloj babai kryq, siç përshkruhet më poshtë.
Hapi 2:
Futeni më pas zhurmuesin në pjatën e bukës dhe sigurojeni njërën anë në tokën dixhitale dhe tjetrën në portën 12. Smartshtë e mençur të ngarkoni tashmë kodin e mëposhtëm në Arduino tuaj në mënyrë që të provoni nëse gjithçka po funksionon si duhet. Nëse është, mund të filloni të bashkoni përbërësit së bashku. Bëni këtë duke i nxjerrë nga pjata e bukës dhe duke bashkuar telat dhe lidhjet së bashku drejtpërdrejt. Nëse mendoni se keni nevojë për më shumë gjatësi midis butonave, mund të shtoni tela shtesë në mes të rezistorëve. Tabela e bukës nuk është më e nevojshme në këtë pikë.
Hapi 3:
Pasi të jetë bashkuar gjithçka, është koha për të bërë kutinë vetë. Kam përdorur një grup mbathje të lira si bazë për timen. Thjeshtë përgjysmova përgjatë gjatësisë dhe hoqa pjesën e pasme dhe anën që kam prerë. Tani duhet të keni dy pjesë në formë c. Pritini njërën anë të njërës prej tyre për ta përdorur si kapak. Tani rrotulloni njërën nga pjesët e mbetura në mënyrë që ato të përshtaten së bashku si një kuti pa kapak dhe ngjitini së bashku. Pasi zamja të jetë vendosur siç duhet, shponi një vrimë të vogël në secilën anë të kutisë për butonat dhe një më të madhe për zilen në kapak.
Hapi 4:
Tani mund të pikturoni kutinë. Unë e kam bërë timen me një dizajn lule të bazuar në BOTW, por ju me të vërtetë mund të zgjidhni çdo dizajn që dëshironi. Pasi të bëhet kjo, mund të vendosni butonat brenda vrimave dhe të vendosni një copë zam në pjesën e pasme të butonit dhe drurit përreth. I njëjti parim vlen për zilen, por imi përshtatet në mënyrë perfekte në vrimë duke e bërë atë të panevojshme. Tjetra ju kapni një worbla dhe ngrohni dhe prerë atë në mënyrë që të bëni disa butona të vegjël. Ngjitini ato me kujdes në butona, por sigurohuni që të mos përdorni shumë zam sepse mund t'i keni bllokuar aksidentalisht. Tani mund t'i lyeni ato në mënyrë që t'i bëni ato të përzihen më shumë me kutinë.
Hapi 5:
Së fundi ju ngjitni ose vidhosni, kapësen dhe menteshat në kutinë dhe kapakun që lidhin të dy.
Hapi 6:
Tani që kutia juaj është e plotë, gjithçka që duhet të bëni është të vendosni Arduino dhe baterinë brenda tij dhe të mbyllni kapakun.
Hapi 7: Kodi
// Ky është kodi për një enigmë/kuti muzikore me temë Zelda.
// kjo lidh kodin tuaj me listën e shënimeve në skedën tjetër
#përfshi "pitches.h"
// kjo ndryshore do të sigurojë që Arduino të shikojë një shtypje më të gjatë të butonit si vetëm një shtypje
int e njëjtë = 0;
// nga këtu do të lexojë të dhënat tuaja
int k = 2;
// kjo është kunja juaj dalëse
int altoparlant = 12;
// më poshtë janë meloditë e fundit
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};
// kohëzgjatja normale e një shënimi
int BEATTIME = 300;
// sporteli që do të mbajë shënime po të ishim në zgjidhje
int treguesi = 0;
void setup () {
Serial.filloj (9600);
pinMode (2, INPUT);
pinMode (1, HYRJE);
}
lak void () {
// lexon hyrjen nga kunjat
k = analogRead (2);
int p = analogRead (1);
// nëse nuk është shtypur ndonjë buton nuk duhet të ketë ton
nëse (treguesi == 0) {
noTone (12);
}
// nëse të dhënat e lexuara korrespondojnë me parametrat ekzekutoni bitin e përshkruar të kodit
nëse (k> 320 && k <350) {
rechts ();
}
//""
ndryshe nëse (k 290) {
lidhje ();
}
//""
ndryshe nëse (k> 260 && k <280) {
thurur ();
}
//""
ndryshe nëse (k> 240 && k <260) {
onder ();
}
//""
ndryshe nëse (k> 220 && k <240) {
a ();
}
// nëse jo (kur nuk shtypet asnjë buton), ekzekutoni këtë kod
tjeter {
// rivendosni të njëjtën gjë që të mund të përdoret herën tjetër kur të shtypni një buton
njëjtë = 0;
// nëse numëruesi është deri në një numër të caktuar, ekzekutoni bitin e përshkruar të kodit
nëse (treguesi == 166) {
zelda ();
}
//""
tjetër nëse (treguesi == 386) {
saria ();
}
//""
tjetër nëse (treguesi == 266) {
epona ();
}
//""
tjetër nëse (treguesi == 999) {
// luajeni këtë ton për të shënuar gabimin
toni (altoparlanti, NOTE_C3, BEATTIME);
// rivendosni numëruesin në 0
tregues = 0;
}
}
// vonesa midis hyrjes dhe daljes
vonesë (100);
// printon vlerat e hyrjes suaj në monitorin serik
Serial.println (k);
}
// kjo është melodia e parë
void zelda () {
// kjo vendos një numërues që përditësohet ndërsa luan melodinë në mënyrë që të mund ta lexojë atë dhe të ndalojë kur duhet
për (int i = 0; i <sizeof (Zelda); i ++) {
// thotë se sa gjatë duhet të zgjasë një shënim
int ZTime = 1000 / ZeldaTime ;
// gjeneron tonet
toni (altoparlanti, Zelda , ZTime);
// krijon vonesën e saktë
int pauzë = ZTime * 1.30;
vonesë (pauzë);
// rivendos numëruesin
tregues = 0;
// printon vlerat e hyrjes suaj në monitorin serik
Serial.println (tregues);
}
}
//""
void epona () {
për (int i = 0; i <sizeof (Epona); i ++) {
int ETime = 1000 / EponaTime ;
toni (altoparlanti, Epona , ETime);
int pauzë = ETime * 1.30;
vonesë (pauzë);
tregues = 0;
Serial.println (tregues);
}
}
//""
void saria () {
për (int i = 0; i <sizeof (Saria); i ++) {
int STime = 1000 / SariaTime ;
toni (folës, Saria , STime);
int pauzë = Koha * 1.30;
vonesë (pauzë);
tregues = 0;
Serial.println (tregues);
}
}
void rec
hts () {
// nëse kjo nuk ishte shtypur tashmë
nëse (e njëjta == 0) {
// nëse numëruesi aktualisht ka njërën nga këto vlera, shtojeni këtë
nëse (treguesi == 0 || treguesi == 132 || treguesi == 165 || treguesi == 232 || treguesi == 265 || treguesi == 331 || treguesi == 374) {
treguesi = treguesi + 1;
}
// përndryshe vendoseni në 999 në mënyrë që të dëgjoni zhurmën e gabimit
tjeter {
tregues = 999;
}
// vendoseni njësoj në një në mënyrë që Arduino të mos lexojë një shtyp të zgjatur si shtypje të shumëfishta
njësoj = 1;
}
// luaj tonin
tjeter {
toni (altoparlanti, NOTE_A4, BEATTIME);
}
// printon vlerat e hyrjes suaj në monitorin serik
Serial.println (tregues); }
//""
lidhjet e pavlefshme () {
nëse (e njëjta == 0) {
nëse (treguesi == 133 || treguesi == 254 || treguesi == 244 || treguesi == 332 || treguesi == 375 || treguesi == 221) {
treguesi = treguesi + 11;
}
tjetër nëse (treguesi == 0) {
tregues = 111;
}
tjeter {
tregues = 999;
}
njësoj = 1;
} tjetër {
toni (altoparlanti, NOTE_B4, BEATTIME);
} Serial.println (tregues);
}
//""
void boven () {
nëse (e njëjta == 0) {nëse (treguesi == 111 || treguesi == 144 || treguesi == 233) {
tregues = tregues + 21;
}
tjetër nëse (treguesi == 0) {
tregues = 221;
}
tjeter {
tregues = 999;
}
njësoj = 1;
}
tjeter {
toni (altoparlanti, NOTE_D5, BEATTIME);
Serial.println (tregues);
}
}
//""
void onder () {
nëse (e njëjta == 0) {
nëse (treguesi == 343) {
treguesi = treguesi + 31;
}
tjetër nëse (treguesi == 0) {
tregues = 331;
} tjetër {
tregues = 999;
} njëjtë = 1;
} tjetër {
toni (altoparlanti, NOTE_F4, BEATTIME);
Serial.println (tregues);
}
}
//""
void a () {
nëse (e njëjta == 0) {
nëse (treguesi == 0) {
tregues = 461;
}
tjeter {
tregues = 999;
}
njësoj = 1;
}
toni (altoparlanti, NOTE_D4, BEATTIME);
Serial.println (tregues);
}
Recommended:
Crack the Code Game, Arduino Puzzle Box i bazuar: 4 hapa (me fotografi)
Crack the Code Game, Arduino Based Puzzle Box: Në këtë Instructable, unë do t'ju tregoj se si të krijoni lojën tuaj të kodit në të cilën përdorni një çelës kodues rrotullues për të supozuar kodin e gjeneruar rastësisht në kasafortë. Ka 8 LED në pjesën e përparme të kasafortës për t'ju treguar se sa prej
Projektim Azimuthal Harta Dekorimi X Muzikë Popullore Puzzle Game - Arduino: 7 Hapa
Projektim Azimuthal 3D Harta Dekorimi X Muzikë Popullore Puzzle Game - Arduino: HYRJE Faqja e mëposhtme do t'ju udhëzojë se si të krijoni një projekt Arduino, i cili ka dy funksione kryesore - dekorim i thjeshtë me ndriçim dhe lojë puzzle muzikore popullore, që përfshin fushat e gjeografisë, gjeometrisë , hartat, Kombet e Bashkuara dhe
Heroes of Hammerwatch Puzzle në një Arduino: 4 hapa
Heroes of Hammerwatch Puzzle on a Arduino: Përshëndetje të gjithëve, kjo është mësimi im i parë dhe anglishtja nuk është gjuha ime e parë, kështu që jini të lirë të më korrigjoni aty ku e kam gabim. Në këtë udhëzues do t'ju tregoj se si të bëni një enigmë nga loja Hammerwatch duke përdorur arduino
PUZZLE - Arduino Lojë Logjike: 3 Hapa
PUZZLE - Arduino Logic Lojë: Përshëndetje. Unë do të doja t'ju tregoja për historinë e krijimit të një loje të thjeshtë enigmash " Puzzle " duke përdorur Arduino UNO dhe TFT-Shield. Për të krijuar lojën më duheshin përbërësit e mëposhtëm: Arduino UNO Power Adapter (AC-DC) 6-12V për Arduino UNO Micro
Puzzle Box - Codebreakers and Groundbreakers [UCM]: 7 hapa (me fotografi)
Puzzle Box - Codebreakers and Groundbreakers [UCM]: Një komplet me kuti enigmash të prera me lazer i projektuar për një punëtori dixhitale të krijuesit në Muzeun Fitzwilliam, Cambridge në lidhje me ekspozitën e tyre të Codebreakers dhe Groundbreakers. Për punëtorinë, butoni në kutinë e enigmës ishte i lidhur me një MakeyMakey a