Video: Arduino - Piezo Piano me tre Butona: 4 Hapa
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Pianoja me tre butona është një projekt për fillestarët me një përvojë në përdorimin e Arduino.
Unë u përfshiva pa dashje duke u përpjekur ta krijoja këtë ndërsa luaja për herë të parë me zile piezo. Ishte kaq me zë të lartë! Duke u përpjekur të kuptoj metoda të ndryshme për ta bërë zilen më të qetë dhe duke provuar frekuenca të ndryshme duke përdorur funksionin tone () dhe noTone (), kuptova se mund të jetë kënaqësi të provosh dhe të përziesh zilen piezo së bashku me përbërësit e mi të tjerë të preferuar të Arduino -s time. komplet: butonat dhe potenciometri.
Materialet e nevojshme përfshijnë:
- 1 Arduino
- 1 Breadboard
- 1 kabllo USB
- Tela Jumper (ngjyra të ndryshme)
- 1 330 Rezistencë Kilo-ohm
- 1 Piezo Buzzer
- 3 butona shtytës
- 1 Potenciometër
Hapi 1: Piezo Buzzer
Për të filluar, vendosni piezo -n në pjatën e Arduino -s. Njëra anë e saj (ana e këmbës më të shkurtër) duhet të vrapojë në tokë. Ana tjetër (ana e këmbës më të gjatë) duhet të lidhet me një kunj dixhital të hyrjes. Zgjodha ta lidh me 8.
Hapi 2: Shtypni butonat
Tjetra, është koha për të vendosur butonat e shtypjes. Ashtu si piezo, butonat e shtytjes duhet të lidhen me tokën dhe me një kunj dixhital të hyrjes.
Hapi 3: Potenciometër
Hapi i fundit në ndërtimin fizik është potenciometri. Potenciometrat vijnë në disa forma të ndryshme. Ne do të përdorim potenciometrin si një ndarës të tensionit, kështu që të tre këmbët e tij duhet të lidhen.
Këmba e djathtë: Shirit negativ (në tokë)
Këmba e Mesme: Pin Analog 0
Këmba e majtë: Shirit pozitiv
Hapi 4: Kodi
Ndërsa shkruaja kodin për këtë projekt, unë iu referova informacionit për disa lloje specifike të funksioneve:
ton ()
noTone () (Unë nuk përfundova duke e përdorur këtë. Vendosa frekuencën në "0" në vend.)
hartë ()
Një referencë tjetër e mrekullueshme për përdoruesit e parë të Piezo Buzzers mund të gjendet këtu. Megjithëse ideja për të ndryshuar tingullin e zhurmës piezo duket e thjeshtë, mund të jetë pak e madhe në fillim!
Funksioni i tonit () mund të ndahet në tre pjesë:
- Pin (kunja me të cilën është lidhur zileja piezo)
- Frekuenca (frekuenca e zërit në herc)
- Kohëzgjatja (kohëzgjatja e zërit të dhënë në milisekonda)
Në thelb, duket kështu: toni (kunja, frekuenca, kohëzgjatja). Komponenti i tretë (kohëzgjatja) është opsional, ndërsa dy të tjerët janë të nevojshëm për funksionimin e ziles. Komponenti "frekuenca" e funksionit të tonit është ajo që mund të mendohet si "tingulli" që prodhohet nga zilja.
Ju gjithashtu do të vini re se kodi përmban dy pjesë të tjera të kodit. Ekzistojnë disa deklarata nëse/tjetër të vendosura për t'i treguar Arduino se çfarë të bëjë nëse shtypen butona të ndryshëm, si dhe për ta vendosur atë me "frekuencë = 0" në situata kur asnjë nga butonat nuk po shtypet. Brenda deklaratave nëse/tjetër, funksionet e hartës () përdoren për të hartuar shkallën e potenciometrit në një grup frekuencash. Këto mund të ndryshohen! Luani me vlera të ndryshme frekuence për të parë se çfarë tingujsh të ndryshëm mund të merrni nga piezo.
Shikoni kodin që kam përdorur për të krijuar pianon me tre butona këtu ose kontrolloni më poshtë.
int piezoPin = 8; // Konfiguro pin të lidhur me Piezo.
int sensorPin = 0; // Vendosni kunjin e lidhur me sensorin (potenciometrin). int sensorVlera = 0;
butoni int1 = 5; // Vendosni kunjat hyrëse të lidhura me butonat.
butoni int2 = 4; butoni int3 = 3;
frekuenca int = 0;
const int delayTime = 500; // Vendosni një konstante për ndryshoren e kohës së vonesës në funksionin tone ().
void setup () {
pinMode (butoni 1, INPUT_PULLUP); pinMode (butoni2, INPUT_PULLUP); pinMode (butoni3, INPUT_PULLUP); }
lak void () {
sensorVlera = analogRead (sensorPin); // Lexoni sensorin. // Hartoni vlerat e ndryshme të potenciometrit në një grup frekuencash për secilën nga tre butonat. nëse (digitalRead (button1) == LOW) {frekuenca = harta (sensorValue, 0, 1023, 400, 499); } else if (digitalRead (button2) == LOW) {frekuenca = harta (sensorValue, 0, 1023, 500, 599); } else if (digitalRead (button3) == LOW) {frekuenca = harta (sensorValue, 0, 1023, 600, 699); } else {frekuenca = 0; } ton (piezoPin, frekuenca, delayTime); // Vendosni funksionet e tonit () me ndryshore. }