Innehållsförteckning:

Arduino - Piezo Piano med tre knappar: 4 steg
Arduino - Piezo Piano med tre knappar: 4 steg

Video: Arduino - Piezo Piano med tre knappar: 4 steg

Video: Arduino - Piezo Piano med tre knappar: 4 steg
Video: Amazing arduino project 2024, Juni
Anonim
Image
Image

Pianot med tre knappar är ett projekt för nybörjare med lite erfarenhet av att använda Arduino.

Jag blev oavsiktligt svept i att försöka skapa detta medan jag lekte med piezo -summer för första gången. Det var SÅ högt! När jag försökte räkna ut olika metoder för att göra summern tystare och testa olika frekvenser med hjälp av ton () och noTone () insåg jag att det kan vara kul att försöka blanda piezosummer tillsammans med mina andra favoritkomponenter i min Arduino kit: knappar och potentiometern.

Material som behövs inkluderar:

  • 1 Arduino
  • 1 brödbräda
  • 1 USB -kabel
  • Jumper Wires (olika färger)
  • 1 330 Kilo-ohm motstånd
  • 1 Piezo -summer
  • 3 Tryckknappar
  • 1 Potentiometer

Steg 1: Piezo Buzzer

Piezo summer
Piezo summer

För att börja, ställ in piezo på Arduino -brödbrädan. Ena sidan av den (den kortare bensidan) måste springa till marken. Den andra sidan (den längre bensidan) måste anslutas till en digital ingångsstift. Jag valde att ansluta den till 8.

Steg 2: Tryckknappar

Trycka på knappar
Trycka på knappar
Trycka på knappar
Trycka på knappar

Därefter är det dags att ställa in tryckknapparna. Precis som piezo måste tryckknapparna anslutas till jord och till en digital ingångsstift.

Steg 3: Potentiometer

Potentiometer
Potentiometer
Potentiometer
Potentiometer

Det sista steget i den fysiska konstruktionen är potentiometern. Potentiometrar finns i några olika former. Vi kommer att använda potentiometern som en spänningsdelare, så alla dess tre ben måste anslutas.

Höger ben: Negativ stång (mark)

Mittben: Analog stift 0

Vänster ben: Positiv bar

Steg 4: Kod

När jag skrev ut kod för det här projektet hänvisade jag till information om några specifika typer av funktioner:

tona()

noTone () (jag slutade inte använda den här. Jag ställde in frekvensen till "0" istället.)

Karta()

En annan underbar referens för första gången användare av Piezo Buzzers hittar du här. Även om tanken på att ändra ljudet av piezo -summern verkar enkel, kan det vara lite överväldigande först!

Tonen () kan delas in i tre delar:

  1. Pin (stiftet som piezo -summern är ansluten till)
  2. Frekvens (ljudets frekvens i hertz)
  3. Varaktighet (längden på ljudet som anges i millisekunder)

I grund och botten ser det ut så här: ton (pin, frekvens, varaktighet). Den tredje komponenten (varaktighet) är valfri, medan de andra två är nödvändiga för att summern ska fungera. "Frekvens" -komponenten i tonfunktionen är det som kan ses som "ljudet" som produceras av summern.

Du kommer också att märka att koden innehåller två andra kodbitar. Det finns några if/else -uttalanden för att berätta för Arduino vad de ska göra om man trycker på olika knappar samt att ställa in den med "frekvens = 0" i situationer när ingen av knapparna trycks ned. Inom if/else -satserna används map () -funktioner för att kartlägga skalan för potentiometern till en uppsättning frekvenser. Dessa kan ändras! Lek med olika frekvensvärden för att se vilka olika ljud du kan få från piezo.

Kolla in koden som jag använde för att skapa pianot med tre knappar här eller kolla nedan.

int piezoPin = 8; // Inställningsnål ansluten till Piezo.

int sensorPin = 0; // Ställ in stift som är anslutet till sensorn (potentiometern). int sensorValue = 0;

int -knapp 1 = 5; // Ställ in ingångarna som är anslutna till knapparna.

int knapp 2 = 4; int knapp3 = 3;

int frekvens = 0;

const int delayTime = 500; // Ställ in en konstant för variabeln fördröjningstid i tonen ().

void setup () {

pinMode (knapp1, INPUT_PULLUP); pinMode (knapp2, INPUT_PULLUP); pinMode (knapp3, INPUT_PULLUP); }

void loop () {

sensorValue = analogRead (sensorPin); // Läs sensorn. // Kartlägg de olika värdena för potentiometern till en uppsättning frekvenser för var och en av de tre knapparna. if (digitalRead (knapp1) == LÅG) {frekvens = map (sensorValue, 0, 1023, 400, 499); } annars if (digitalRead (knapp2) == LÅG) {frekvens = map (sensorValue, 0, 1023, 500, 599); } annars om (digitalRead (knapp3) == LÅG) {frekvens = map (sensorValue, 0, 1023, 600, 699); } annat {frekvens = 0; } ton (piezoPin, frekvens, delayTime); // Ställ in ton () -funktionerna med variabler. }

Rekommenderad: