Indholdsfortegnelse:

Arduino - Piezo Piano med tre knapper: 4 trin
Arduino - Piezo Piano med tre knapper: 4 trin

Video: Arduino - Piezo Piano med tre knapper: 4 trin

Video: Arduino - Piezo Piano med tre knapper: 4 trin
Video: Обрешетка. Полимерная обрешетка под сайдинг - виды и преимущества. Часть 1 2024, Juni
Anonim
Image
Image

Klaveret med tre knapper er et projekt for begyndere med en vis erfaring med at bruge Arduino.

Jeg blev uforvarende fejet op i forsøget på at skabe dette, mens jeg legede med piezo -summer for første gang. Det var SÅ højt! I forsøget på at finde ud af forskellige metoder til at gøre summeren mere støjsvag og prøve forskellige frekvenser ved hjælp af funktionen tone () og noTone (), indså jeg, at det kunne være sjovt at prøve at blande piezo -summeren med mine andre favoritkomponenter i min Arduino kit: knapper og potentiometer.

Nødvendige materialer omfatter:

  • 1 Arduino
  • 1 brødbræt
  • 1 USB -kabel
  • Jumper Wires (forskellige farver)
  • 1 330 Kilo-ohm modstand
  • 1 Piezo -summer
  • 3 Trykknapper
  • 1 Potentiometer

Trin 1: Piezo Buzzer

Piezo summer
Piezo summer

For at starte, skal du oprette piezo på Arduino's brødbræt. Den ene side af den (den kortere benside) skal løbe til jorden. Den anden side (den længere benside) skal tilsluttes en digital input -pin. Jeg valgte at slutte den til 8.

Trin 2: Trykknapper

Trykknapper
Trykknapper
Trykknapper
Trykknapper

Dernæst er det tid til at konfigurere trykknapperne. Ligesom piezoen skal trykknapperne forbindes til jorden og til en digital indgangsstift.

Trin 3: Potentiometer

Potentiometer
Potentiometer
Potentiometer
Potentiometer

Det sidste trin i den fysiske opbygning er potentiometeret. Potentiometre findes i et par forskellige former. Vi bruger potentiometeret som en spændingsdeler, så alle tre ben skal forbindes.

Højre ben: Negativ stang (jorden)

Mellemben: Analog pin 0

Venstre ben: Positiv bar

Trin 4: Kode

Mens jeg skrev kode til dette projekt, henviste jeg til oplysninger om et par specifikke typer funktioner:

tone()

noTone () (jeg endte ikke med at bruge denne. Jeg satte frekvensen til "0" i stedet.)

kort()

En anden vidunderlig reference til førstegangsbrugere af Piezo Buzzers kan findes her. Selvom tanken om at ændre lyden af piezo -summer virker enkel, kan den i starten være lidt overvældende!

Tone () -funktionen kan opdeles i tre dele:

  1. Pin (den pin, piezo -summeren er forbundet til)
  2. Frekvens (lydens frekvens i hertz)
  3. Varighed (varigheden af lyden angivet i millisekunder)

Grundlæggende ser det sådan ud: tone (pin, frekvens, varighed). Den tredje komponent (varighed) er valgfri, mens de to andre er nødvendige for, at summeren kan fungere. "Frekvens" -komponenten i tonefunktionen er det, der kan betragtes som "lyden", der produceres af summeren.

Du vil også bemærke, at koden indeholder to andre bits kode. Der er oprettet nogle if/else -sætninger for at fortælle Arduinoen, hvad de skal gøre, hvis der trykkes på forskellige knapper samt at indstille det med "frekvens = 0" i situationer, hvor der ikke trykkes på nogen af knapperne. Inden if/else -sætningerne bruges map () -funktioner til at kortlægge omfanget af potentiometeret til et sæt frekvenser. Disse kan ændres! Spil rundt med forskellige frekvensværdier for at se, hvilke forskellige lyde du kan få fra piezo.

Tjek koden, som jeg brugte til at oprette klaveret med tre knapper her, eller tjek nedenfor.

int piezoPin = 8; // Opsæt pin tilsluttet Piezo.

int sensorPin = 0; // Sæt pin op til sensoren (potentiometeret). int sensorValue = 0;

int -knap1 = 5; // Indstil de inputstifter, der er forbundet til knapperne.

int -knap2 = 4; int -knap3 = 3;

int frekvens = 0;

const int delayTime = 500; // Indstil en konstant for variablen forsinkelsestid i funktionen tone ().

ugyldig opsætning () {

pinMode (knap1, INPUT_PULLUP); pinMode (knap2, INPUT_PULLUP); pinMode (knap3, INPUT_PULLUP); }

void loop () {

sensorValue = analogRead (sensorPin); // Læs sensoren. // Kortlæg potentiometerets forskellige værdier til et sæt frekvenser for hver af de tre knapper. hvis (digitalRead (knap1) == LAV) {frekvens = map (sensorValue, 0, 1023, 400, 499); } ellers hvis (digitalRead (knap2) == LAV) {frekvens = map (sensorValue, 0, 1023, 500, 599); } ellers hvis (digitalRead (knap3) == LAV) {frekvens = map (sensorValue, 0, 1023, 600, 699); } ellers {frekvens = 0; } tone (piezoPin, frekvens, delayTime); // Indstil tonefunktionerne () med variabler. }

Anbefalede: