Innholdsfortegnelse:

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

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

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

Det tre-knappers pianoet er et prosjekt for nybegynnere med litt erfaring med å bruke Arduino.

Jeg ble utilsiktet feid opp i å prøve å lage dette mens jeg lekte med piezo -summer for første gang. Det var SÅ høyt! I forsøket på å finne ut forskjellige metoder for å gjøre summeren mer stillegående og prøve ut forskjellige frekvenser ved hjelp av tone () og noTone () funksjonen, innså jeg at det kan være morsomt å prøve å blande piezo summeren med mine andre favorittkomponenter i min Arduino sett: knapper og potensiometer.

Materialer som trengs inkluderer:

  • 1 Arduino
  • 1 brødbrett
  • 1 USB -kabel
  • Jumper Wires (forskjellige farger)
  • 1 330 Kilo-ohm motstand
  • 1 Piezo -summer
  • 3 Trykknapper
  • 1 potensiometer

Trinn 1: Piezo Buzzer

Piezo summer
Piezo summer

For å starte, sett opp piezo på brødbrettet til Arduino. Den ene siden (den kortere bensiden) må løpe til bakken. Den andre siden (den lengre bensiden) må kobles til en digital inngangspinne. Jeg valgte å koble den til 8.

Trinn 2: Trykknapper

Trykke knapper
Trykke knapper
Trykke knapper
Trykke knapper

Deretter er det på tide å sette opp trykknappene. I likhet med piezo må trykknappene kobles til bakken og til en digital inngangspinne.

Trinn 3: Potensiometer

Potensiometer
Potensiometer
Potensiometer
Potensiometer

Det siste trinnet i den fysiske bygningen er potensiometeret. Potensiometre kommer i noen forskjellige former. Vi bruker potensiometeret som en spenningsdeler, så alle tre bena må kobles til.

Høyre ben: Negativ stang (bakken)

Midtben: Analog pin 0

Venstre ben: Positiv bar

Trinn 4: Kode

Mens jeg skrev ut kode for dette prosjektet, refererte jeg til informasjon om noen spesifikke typer funksjoner:

tone()

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

kart()

En annen flott referanse for førstegangsbrukere av Piezo Buzzers finner du her. Selv om ideen om å endre lyden til piezo -summer virker enkel, kan det være litt overveldende i begynnelsen!

Tone () -funksjonen kan deles inn i tre deler:

  1. Pin (pinnen som piezo summeren er koblet til)
  2. Frekvens (frekvensen av lyden i hertz)
  3. Varighet (varigheten av lyden gitt i millisekunder)

I utgangspunktet ser det slik ut: tone (pin, frekvens, varighet). Den tredje komponenten (varighet) er valgfri, mens de to andre er nødvendige for at summeren skal fungere. "Frekvens" -komponenten i tonefunksjonen er det som kan tenkes som "lyden" som produseres av summeren.

Du vil også legge merke til at koden inneholder to andre kodebiter. Det er satt opp noen if/else -setninger for å fortelle Arduino hva de skal gjøre hvis du trykker på forskjellige knapper, så vel som å sette den opp med "frekvens = 0" i situasjoner der ingen av knappene trykkes. Innen if/else -setningene brukes map () -funksjoner for å kartlegge skalaen til potensiometeret til et sett med frekvenser. Disse kan endres! Spill med forskjellige frekvensverdier for å se hvilke forskjellige lyder du kan få fra piezo.

Sjekk koden som jeg brukte til å lage pianoet med tre knapper her eller sjekk nedenfor.

int piezoPin = 8; // Sett opp pin som er koblet til Piezo.

int sensorPin = 0; // Sett opp pinnen som er koblet til sensoren (potensiometeret). int sensorValue = 0;

int -knapp 1 = 5; // Sett opp inngangspinnene som er koblet til knappene.

int knapp 2 = 4; int -knapp3 = 3;

int frekvens = 0;

const int delayTime = 500; // Sett opp en konstant for variabelen forsinkelsestid i tone () -funksjonen.

ugyldig oppsett () {

pinMode (knapp1, INPUT_PULLUP); pinMode (knapp 2, INPUT_PULLUP); pinMode (knapp3, INPUT_PULLUP); }

void loop () {

sensorValue = analogRead (sensorPin); // Les sensoren. // Kartlegg de forskjellige verdiene til potensiometeret til et sett med frekvenser for hver av de tre knappene. hvis (digitalRead (knapp1) == LAV) {frekvens = map (sensorValue, 0, 1023, 400, 499); } annet hvis (digitalRead (knapp2) == LAV) {frekvens = map (sensorValue, 0, 1023, 500, 599); } annet hvis (digitalRead (knapp3) == LAV) {frekvens = map (sensorValue, 0, 1023, 600, 699); } annet {frekvens = 0; } tone (piezoPin, frekvens, delayTime); // Sett opp tonefunksjonene () med variabler. }

Anbefalt: