Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Gemaakt door: Haotian Ye
Overzicht
Dit is een pianobord met acht drukknopschakelaars waarmee je één octaaf (Do Re Mi Fa So La Si Do) kunt spelen en met dit één octaaf kun je proberen een aantal nummers te spelen die je leuk vindt. Voor dit project is er een aantal belangrijke kennis die u moet weten voordat u begint.
Eerst moeten we de frequenties van de basisnoten van een piano kennen.
Hieronder vind je de frequenties:
Doen – 261Hz
Opnieuw – 294Hz
Mi – 329Hz
Fa – 349Hz
Dus – 392Hz
La – 440Hz
Si – 493Hz
Doen – 523Hz
Ten tweede zal ik je laten zien hoe je het circuit kunt bouwen met behulp van de onderdelen die je kunt kopen bij Lee's Electronic Store. Ten slotte zal ik de code presenteren en uitleggen die moet worden geüpload naar het Arduino-bord.
Onderdelen die je nodig hebt:
Arduino Uno R3 (Product-ID: 10997)
USB A-naar-B-kabel M/M (product-ID: 29861)
10K Weerstand * 8 (Product-ID: 91516)
Verschillende kleuren tack-schakelaar * 8 (product-ID: 3124, 31242, 31243, 31245, 31246)
Mini-luidspreker (product-ID: 41680)
Breadboard (Product-ID: 106861)
Doorverbindingsdraden (Product-ID: 21801)
Stap 1: Stap 1: Het circuit bouwen
Plaats eerst alle drukknopschakelaars en miniluidspreker één voor één op het breadboard en match ze op één rij. Verbind vervolgens de pinnen van elke drukknopschakelaar met de grond. Sluit vervolgens 10k-weerstanden aan tussen positief vermogen en de andere pinnen van elke drukknopschakelaar. En sluit deze kolom aan op pinnen 2-9 op het Arduino-bord. Sluit ook de grond aan op de grondpin en positieve voeding op de 3,3v-pin op Arduino. Sluit tot slot de mini-speaker aan op pin 10 op Arduino.
Stap 2: Stap 2: Code en uitleg
De onderstaande code is wat ik heb geschreven
const int zwart = 2;
const int wit = 3;
const int rood = 4;
const int groen = 5;
const int blauw = 6;
const int zwart2 = 7;
const int groen2 = 8;
const int rood2 = 9;
const int speaker = 10;// Koppel alle drukknopschakelaars en luidspreker met Arduino's signaalpinnen
int frequentie = {262, 294, 330, 349, 392, 440, 493, 523};// array bevat alle frequenties van één octaaf
ongeldige setup() {
// plaats hier je setup-code om een keer uit te voeren:
pinMode (zwart, INPUT);
pinMode (wit, INGANG);
pinMode (rood, INPUT);
pinMode (groen, INPUT);
pinMode (blauw, INPUT);
pinMode (zwart2, INPUT);
pinMode (groen2, INPUT);
pinMode (rood2, INPUT);
pinMode (luidspreker, UITGANG);
toon (spreker, 2000);
Serieel.begin (9600);
}
lege lus() {
// plaats hier je hoofdcode om herhaaldelijk uit te voeren:
if (digitalRead (zwart) == LAAG)// wanneer u op de "DO" drukknop schakelaar
{toon (luidspreker, frequentie [0], 50);
vertraging (50);
geen toon (luidspreker);}
anders als (digitalRead (wit) == LAAG)// wanneer u op de "RE" drukknopschakelaar drukt
{toon (luidspreker, frequentie [1], 50);
vertraging (50);
geen toon (luidspreker);}
anders als (digitalRead (rood) == LAAG)// wanneer u op de "MI" drukknopschakelaar drukt
{toon (luidspreker, frequentie [2], 50);
vertraging (50);
geen toon (luidspreker);}
anders als (digitalRead (groen) == LAAG)// wanneer u op de "FA" drukknopschakelaar drukt
{toon (luidspreker, frequentie [3], 50);
vertraging (50);
geen toon (luidspreker);}
anders als (digitalRead (blauw) == LAAG)// wanneer u op de "SO" drukknopschakelaar drukt
{toon (luidspreker, frequentie [4], 50);
vertraging (50);
geen toon (luidspreker);}
else if (digitalRead (black2) == LAAG)// wanneer u op de "LA" drukknopschakelaar drukt
{toon (luidspreker, frequentie [5], 50);
vertraging (50);
geen toon (luidspreker);}
else if (digitalRead (green2) == LAAG)// wanneer u op de "SI" drukknopschakelaar drukt
{toon (luidspreker, frequentie [6], 50);
vertraging (50);
geen toon (luidspreker);}
else if (digitalRead (red2) == LOW)// wanneer u op de "DO" drukknop drukt
{toon(luidspreker, frequentie[7], 50);
vertraging (50);
geen toon (luidspreker);}
else// als je op niets drukt
geen toon (luidspreker);
}
Eerst moeten we alle drukknopschakelaars en luidspreker declareren als de pin van 2 tot 10 op Arduino. Elke schakelaar staat voor één noot. Gebruik vervolgens één array om alle frequenties erin te plaatsen. Vervolgens gebruik ik de If en else-instructie om Arduino te laten weten op welke drukknop ik druk.
Sluit tot slot je Arduino-bord aan op je computer of laptop met een usb A naar B-kabel. Voordat u uw code uploadt, moet u nog steeds Arduino-software downloaden en een aantal standaardinstellingen uitvoeren. Selecteer Extra -> Bord -> Arduino/Genuino Uno; Vervolgens moeten we de communicatiepoort selecteren die op het Arduino-bord is aangesloten. Selecteer Extra -> Poort en vervolgens de poortnaam met het label "(Arduino/Genuino Uno)". Vervolgens kunt u de code uploaden naar het Arduino-bord.