Inhoudsopgave:
Video: Arduino-puzzeldoos: 7 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Voor dit project gaan we een puzzeldoos maken die werkt met muziek. De essentie ervan is dat wanneer je op een knop drukt, er een deuntje vrijkomt en de Arduino berekent welke knoppen worden ingedrukt, zodat hij weet wat het juiste en wat het verkeerde antwoord is.
Benodigdheden
1 x Arduino-uno
1 x 1k Ohm weerstand
5 x 220 Ohm weerstanden
1 x piëzo-zoemer
5 x drukknop 6x6 mm
1 x set Jumper draden
1 x perf/strip board
1 x soldeerset
1 x scharnier
1 x klem
1 x kleine ladekast/hout
1x heet lijmpistool + lijmstiften
1 x 9v batterij + houder
beetje worbla
verf
Stap 1:
Om te beginnen moet je je pinnen in je breadboard drukken. Sluit nu analoog 2 met een draad aan op de hoek van het bord. We gaan er twee weerstanden in een lijn op aansluiten. De eerste is een weerstand van 10k Ohm. Aan het andere uiteinde van deze weerstand verbinden we draad met de analoge aarde. De tweede weerstand is een 220 Ohm weerstand die we op de eerste knop aansluiten. Gebruik een andere weerstand van dezelfde waarde om de tweede open zijde van de knop met de tweede knop te verbinden. Blijf de knoppen op deze manier aansluiten tot de laatste. Bij de laatste pak je een draad en sluit je deze aan op een overeenkomstige gesloten kant van de knop en sluit je deze aan op de volgende in de rij. Je herhaalt nu het proces dat je deed met de weerstanden die je alleen kent met gewone draden. Sluit de eerste knop aan op de analoge 3, 3V-poort op je Arduino. Al met al krijg je een soort kruispatroon zoals hieronder afgebeeld.
Stap 2:
Sluit vervolgens je zoemer aan op het breadboard en bevestig de ene kant aan de digitale aarde en de andere aan de 12-poort. Het is slim om onderstaande code alvast in je Arduino te uploaden zodat je kunt testen of alles goed werkt. Als dit het geval is, kunt u beginnen met het aan elkaar solderen van de componenten. Doe dit door ze uit het breadboard te halen en de draden en verbindingen direct aan elkaar te solderen. Als je denkt dat je meer lengte tussen de knoppen nodig hebt, kun je wat extra draad tussen de weerstanden toevoegen. Het breadboard is op dit moment niet meer nodig.
Stap 3:
Nadat alles is gesoldeerd, is het tijd om de doos zelf te maken. Ik gebruikte een goedkope set lades als basis voor de mijne. Ik sneed gewoon in de lengte doormidden en verwijderde de achterkant en de zijkant die ik doorsneed. Je zou nu twee c-vormige stukken moeten hebben. Snijd een kant van een van hen om als deksel te gebruiken. Draai nu een van de resterende stukken zodat ze in elkaar passen als een doos zonder deksel en lijm ze aan elkaar. Zodra de lijm goed is uitgehard, boort u een klein gaatje aan elke kant van de doos voor de knoppen en een groter gaatje voor de zoemer in het deksel.
Stap 4:
Nu kun je beginnen met het schilderen van de doos. Ik deed de mijne met een bloemontwerp op basis van BOTW, maar je kunt echt elk ontwerp kiezen dat je wilt. Hierna kun je de knopen in de gaten plaatsen en een klodder lijm op de achterkant van de knop en het omringende hout doen. Hetzelfde principe is van toepassing op de zoemer, maar de mijne past perfect in het gat waardoor het overbodig is. Vervolgens pak je wat worbla en verwarm je en knip je het om wat kleine knopen te maken. Lijm ze voorzichtig op de knopen, maar zorg ervoor dat je niet te veel lijm gebruikt, omdat de knopen per ongeluk kunnen vast komen te zitten. Nu kun je ze overschilderen om ze meer in de doos te laten opgaan.
Stap 5:
Ten slotte lijm of schroef je de klem en de scharnieren op de doos en het deksel die de twee verbinden.
Stap 6:
Nu je doos compleet is, hoef je alleen nog maar de Arduino en de batterij erin te doen en het deksel te sluiten.
Stap 7: Coderen
// Dit is de code voor een puzzel/muziekdoos met Zelda-thema.
// dit verbindt je code met de lijst met notities in het andere tabblad
#include "pitches.h"
// deze variabele zorgt ervoor dat de Arduino een langere druk op de knop ziet als slechts één druk
int zelfde = 0;
// vanaf hier zal het uw invoer lezen
intk = 2;
// dit is je output-pin
int-luidspreker = 12;
// hieronder staan de eindmelodieën
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_A5B4;
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_E4;
int SariaTime = {8, 8, 4, 8, 8, 4, 8, 8, 8, 8, 4, 8, 8, 8, 8, 3, 8, 8, 8, 2, 1};
// de normale duur van een noot
int BEATTIME = 300;
// de teller die bijhoudt waar we in de oplossing zitten
int teller = 0;
ongeldige setup() {
Serieel.begin(9600);
pinMode(2, INPUT);
pinMode (1, INGANG);
}
lege lus() {
// leest de invoer van de pinnen
k = analoog lezen (2);
int p = analoog lezen(1);
// als er geen knop wordt ingedrukt, hoort er geen toon te zijn
als (teller == 0) {
geen toon(12);
}
// als de gelezen gegevens overeenkomen met de parameters, voer dan het beschreven stukje code uit
als (k > 320 && k < 350) {
rechts();
}
//""
anders als (k 290) {
koppelingen();
}
//""
anders als (k > 260 && k < 280) {
boven();
}
//""
anders als (k> 240 && k < 260) {
onder();
}
//""
anders als (k > 220 && k < 240) {
een();
}
// als dit niet het geval is (wanneer er geen knop wordt ingedrukt), voer dan deze code uit
anders {
// reset hetzelfde zodat het kan worden gebruikt de volgende keer dat een knop wordt ingedrukt
hetzelfde = 0;
// als de teller op een bepaald aantal staat, voer dan het beschreven stukje code uit
als (teller == 166) {
zelda();
}
//""
anders als (teller == 386) {
sari();
}
//""
anders als (teller == 266) {
epona();
}
//""
anders if (teller == 999) {
// speel deze toon om de fout te markeren
toon (luidspreker, NOTE_C3, BEATTIME);
// reset de teller naar 0
teller = 0;
}
}
//de vertraging tussen invoer en uitvoer
vertraging (100);
// drukt de waarden van uw invoer af in de seriële monitor
Serieel.println(k);
}
// dit is de eerste melodie
leegte zelda() {
//dit stelt een teller in die zichzelf bijwerkt tijdens het spelen van de melodie, zodat hij deze kan lezen en stoppen wanneer het zou moeten
voor (int i = 0; i < sizeof(Zelda); i++) {
// zegt hoe lang een notitie moet duren
int ZTime = 1000 / ZeldaTime;
// genereert de tonen
toon (luidspreker, Zelda, ZTime);
// creëert de juiste vertraging
int pauze = ZTijd * 1.30;
vertraging (pauze);
// reset teller
teller = 0;
// drukt de waarden van uw invoer af in de seriële monitor
Serial.println(teller);
}
}
//""
leegte epona() {
voor (int i = 0; i < sizeof(Epona); i++) {
int ETime = 1000 / EponaTime;
toon (luidspreker, Epona, ETime);
int pauze = ETime * 1.30;
vertraging (pauze);
teller = 0;
Serial.println(teller);
}
}
//""
leegte saria() {
voor (int i = 0; i < sizeof(Saria); i++) {
int STime = 1000 / SariaTime;
toon (spreker, Saria, STime);
int pauze = STime * 1.30;
vertraging (pauze);
teller = 0;
Serial.println(teller);
}
}
ongeldige recensie
hts() {
// als dit nog niet was ingedrukt
als (zelfde == 0) {
// als de teller momenteel een van deze waarden heeft, voeg dit dan toe
if (teller == 0 || teller == 132 || teller == 165 || teller == 232 || teller == 265 || teller == 331 || teller == 374) {
teller = teller + 1;
}
// zet het anders op 999 zodat je de foutruis hoort
anders {
teller = 999;
}
// stel hetzelfde in op één zodat de Arduino een langdurige druk niet leest als meerdere keren drukken
hetzelfde = 1;
}
// speel de toon
anders {
toon (luidspreker, NOTE_A4, BEATTIME);
}
// drukt de waarden van uw invoer af in de seriële monitor
Serial.println(teller); }
//""
ongeldige links() {
als (zelfde == 0) {
if (teller == 133 || teller == 254 || teller == 244 || teller == 332 || teller == 375 || teller == 221) {
teller = teller + 11;
}
anders als (teller == 0) {
teller = 111;
}
anders {
teller = 999;
}
hetzelfde = 1;
} anders{
toon (luidspreker, NOTE_B4, BEATTIME);
} Serial.println(teller);
}
//""
leegte boven() {
if (zelfde == 0) { if (teller == 111 || teller == 144 || teller == 233) {
teller = teller + 21;
}
anders als (teller == 0) {
teller = 221;
}
anders {
teller = 999;
}
hetzelfde = 1;
}
anders {
toon (luidspreker, NOTE_D5, BEATTIME);
Serial.println(teller);
}
}
//""
leegte onder() {
als (zelfde == 0) {
als (teller == 343) {
teller = teller + 31;
}
anders als (teller == 0) {
teller = 331;
} anders {
teller = 999;
} hetzelfde = 1;
} anders {
toon (luidspreker, NOTE_F4, BEATTIME);
Serial.println(teller);
}
}
//""
ongeldig een() {
als (zelfde == 0) {
als (teller == 0) {
teller = 461;
}
anders {
teller = 999;
}
hetzelfde = 1;
}
toon (luidspreker, NOTE_D4, BEATTIME);
Serial.println(teller);
}
Aanbevolen:
Game Design in Flick in 5 stappen: 5 stappen
Game-ontwerp in Flick in 5 stappen: Flick is een heel eenvoudige manier om een game te maken, vooral zoiets als een puzzel, visuele roman of avonturengame
Gezichtsdetectie op Raspberry Pi 4B in 3 stappen: 3 stappen
Gezichtsdetectie op Raspberry Pi 4B in 3 stappen: In deze Instructable gaan we gezichtsdetectie uitvoeren op Raspberry Pi 4 met Shunya O/S met behulp van de Shunyaface-bibliotheek. Shunyaface is een bibliotheek voor gezichtsherkenning/detectie. Het project streeft naar de hoogste detectie- en herkenningssnelheid met
Doe-het-zelfspiegel in eenvoudige stappen (met LED-stripverlichting): 4 stappen
DIY make-upspiegel in eenvoudige stappen (met behulp van LED-stripverlichting): In dit bericht heb ik een doe-het-zelfspiegel gemaakt met behulp van de LED-strips. Het is echt gaaf en je moet ze ook proberen
Hoe plug-ins in WordPress te installeren in 3 stappen: 3 stappen
Hoe plug-ins in WordPress te installeren in 3 stappen: In deze tutorial laat ik je de essentiële stappen zien om de WordPress-plug-in op je website te installeren. In principe kunt u plug-ins op twee verschillende manieren installeren. De eerste methode is via ftp of via cpanel. Maar ik zal het niet opsommen, want het is echt compl
Akoestische levitatie met Arduino Uno stap voor stap (8 stappen): 8 stappen
Akoestische levitatie met Arduino Uno Stap voor stap (8-stappen): ultrasone geluidstransducers L298N Vrouwelijke DC-adapter voeding met een mannelijke DC-pin Arduino UNOBreadboardHoe dit werkt: eerst upload je code naar Arduino Uno (het is een microcontroller uitgerust met digitale en analoge poorten om code te converteren (C++)