Inhoudsopgave:

Arduino - piëzo piano met drie knoppen - Ajarnpa
Arduino - piëzo piano met drie knoppen - Ajarnpa

Video: Arduino - piëzo piano met drie knoppen - Ajarnpa

Video: Arduino - piëzo piano met drie knoppen - Ajarnpa
Video: L06 Arduino tinkercad LED: aan/uit met 1 drukknop 2024, Juni-
Anonim
Image
Image

De piano met drie knoppen is een project voor beginners met enige ervaring met het gebruik van de Arduino.

Ik werd per ongeluk meegesleept toen ik dit probeerde te maken terwijl ik voor het eerst met de piëzo-zoemer speelde. Het was ZO luid! Toen ik probeerde verschillende methoden te bedenken om de zoemer stiller te maken en verschillende frequenties uit te proberen met behulp van de tone() en noTone()-functie, realiseerde ik me dat het misschien leuk zou zijn om te proberen de piëzo-zoemer te mixen met mijn andere favoriete componenten van mijn Arduino kit: knoppen en de potmeter.

Benodigde materialen zijn onder meer:

  • 1 Arduino
  • 1 Breadboard
  • 1 USB-kabel
  • Jumper Draden (diverse kleuren)
  • 1 330 Kilo-ohm weerstand
  • 1 piëzo-zoemer
  • 3 drukknoppen
  • 1 Potentiometer

Stap 1: piëzo-zoemer

Piëzo-zoemer
Piëzo-zoemer

Zet om te beginnen de piëzo op het breadboard van de Arduino. Een kant ervan (de kortere beenzijde) moet naar de grond lopen. De andere kant (de kant met het langere been) moet worden aangesloten op een digitale ingangspin. Ik heb ervoor gekozen om het aan te sluiten op 8.

Stap 2: Drukknoppen

Drukknoppen
Drukknoppen
Drukknoppen
Drukknoppen

Vervolgens is het tijd om de drukknoppen in te stellen. Net als de piëzo moeten de drukknoppen worden aangesloten op aarde en op een digitale ingangspen.

Stap 3: Potentiometer

Potentiometer
Potentiometer
Potentiometer
Potentiometer

De laatste stap in de fysieke bouw is de potentiometer. Potentiometers zijn er in een paar verschillende vormen. We gebruiken de potentiometer als spanningsdeler, dus alle drie de poten moeten worden aangesloten.

Rechterbeen: negatieve balk (grond)

Middenbeen: analoge pin 0

Linkerbeen: Positieve balk

Stap 4: Codeer

Tijdens het schrijven van code voor dit project heb ik verwezen naar informatie over een paar specifieke soorten functies:

toon()

noTone() (Ik heb deze uiteindelijk niet gebruikt. Ik heb de frequentie in plaats daarvan op "0" gezet.)

kaart()

Een andere prachtige referentie voor nieuwe gebruikers van de Piezo Buzzers is hier te vinden. Hoewel het idee om het geluid van de piëzo-zoemer te veranderen eenvoudig lijkt, kan het in het begin een beetje overweldigend zijn!

De functie tone() kan in drie delen worden onderverdeeld:

  1. Pin (de pin waar de piëzozoemer op is aangesloten)
  2. Frequentie (de frequentie van het geluid in hertz)
  3. Duur (de duur van het geluid gegeven in milliseconden)

In principe ziet het er als volgt uit: toon (pin, frequentie, duur). De derde component (duur) is optioneel, terwijl de andere twee nodig zijn om de zoemer te laten functioneren. De "frequentie"-component van de toonfunctie is wat kan worden beschouwd als "het geluid" dat door de zoemer wordt geproduceerd.

Je zult ook merken dat de code twee andere stukjes code bevat. Er zijn enkele if/else-instructies ingesteld om de Arduino te vertellen wat hij moet doen als er verschillende knoppen worden ingedrukt en om hem in te stellen met "frequentie = 0" in situaties waarin geen van de knoppen wordt ingedrukt. Binnen de if/else-statements worden map()-functies gebruikt om de schaal van de potentiometer af te beelden op een reeks frequenties. Deze kunnen worden gewijzigd! Speel met verschillende frequentiewaarden om te zien welke verschillende geluiden je uit de piëzo kunt halen.

Bekijk hier de code die ik heb gebruikt om de piano met drie knoppen te maken of kijk hieronder.

int piëzoPin = 8; // Stel de pin in die is verbonden met Piezo.

int sensorPin = 0; // Stel de pin in die is aangesloten op de sensor (de potentiometer). int sensorWaarde = 0;

int-knop1 = 5; // Stel de invoerpinnen in die op de knoppen zijn aangesloten.

int-knop2 = 4; int-knop3 = 3;

int-frequentie = 0;

const int vertragingstijd = 500; // Stel een constante in voor de variabele vertragingstijd in de functie tone().

ongeldige setup() {

pinMode (knop1, INPUT_PULLUP); pinMode (knop2, INPUT_PULLUP); pinMode (knop3, INPUT_PULLUP); }

lege lus() {

sensorValue = analoog lezen (sensorPin); // Lees de sensor. // Wijs de verschillende waarden van de potentiometer toe aan een reeks frequenties voor elk van de drie knoppen. if (digitalRead (button1) == LAAG) {frequentie = kaart (sensorValue, 0, 1023, 400, 499); } else if (digitalRead (button2) == LAAG) { frequency = map (sensorValue, 0, 1023, 500, 599); } else if (digitalRead (button3) == LAAG) { frequency = map (sensorValue, 0, 1023, 600, 699); } anders { frequentie = 0; } toon (piezoPin, frequentie, vertragingstijd); // Stel de tone() functies in met variabelen. }

Aanbevolen: