Du kan bruge dette lille Arduino musikalske melodigenerator kredsløb til en foretrukken applikation, såsom til at lave en interessant dørklokke, som et omvendt horn i bilen eller en musikboks til at give nogen eller bare til personlig morskab.
Hardware krævet
Den nødvendige hardware til projektet gives som følger:
- Arduino eller Genuino bord
- piezo-summer eller en højttaler
- tilslutningsledninger
Arduino er forsynet med en 9V, 500mA strømforsyningsindgang, som kan være fra enhver standard SMPS AC til DC-adapter, eller du kan også prøve din mobiltelefonoplader til det samme.
Pin # 8 fra Arduino kan konfigureres direkte med højttaleren, som ikke må klassificeres over 8 ohm og 1 watt.
Så den ene ledning af højttaleren forbinder med pin nr. 8 på Arduino-kortet, og den anden ledning går til den negative linje eller jordlinjen på kortet.
For forstærket output
For højere eller meget forstærket lyd kan du konfigurere stift nr. 8 med et transistordrivertrin, der består af en TIP31-transistor, hvis base kan være forbundet med pin8 via en 1K-modstand, emitter til jord og samleren til en af ledningerne i højttaler, den anden ledning af spaker forbinder nu med den positive forsyning, der er 9V forsyningen (+).
Her skal du sørge for, at højttaleren er vurderet til 8 ohm, men ved meget højere watt kan den være på omkring 5 watt for en forstærket musikgenerering.
Denne skitse er kodet til at spille og generere ret mange tilfældige
melodier i rækkefølge ved hjælp af en pentatonisk skala /*
Musician
Plays a (fairly) random tune until the program is stopped.
8-ohm speaker on digital pin 8.
//Copyright (c) 2012 Jeremy Fonte
//This code is released under the MIT license
//https://opensource.org/licenses/MIT
*/
int randomNote = 131
int randomDuration = 2
int noteStep = 1
int notes[15]
void setup() {
pinMode(8, OUTPUT)
notes[1] = 131
notes[2] = 147
notes[3] = 165
notes[4] = 196
notes[5] = 220
notes[6] = 262
notes[7] = 294
notes[8] = 330
notes[9] = 392
notes[10] = 440
notes[11] = 523
notes[12] = 587
notes[13] = 659
notes[14] = 784
notes[15] = 880
randomNote = random(1, 15)
}
void loop() {
noteStep = random(-3, 3)
randomNote = randomNote + noteStep
if(randomNote <1) {
randomNote = random(1, 15)
}
else if(randomNote > 15) {
randomNote = random(1, 15)
}
randomDuration = random(1, 8)
// to calculate the note duration, take one second
// divided by the note type.
//e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
int noteDuration = 1000/randomDuration
tone(8, notes[randomNote],noteDuration)
// to distinguish the notes, set a minimum time between them.
// the note's duration + 30% seems to work well:
int pauseBetweenNotes = noteDuration * 1.30
delay(pauseBetweenNotes)
// stop the tone playing:
noTone(8)
}
Forbindelsesdiagrammet til det foreslåede Arduino musical tune generator circuit er vist nedenfor:
Til forstærket lytning med høj effekt kan den samme opsætning opgraderes med en effekttransistor som angivet i følgende figur:
Forrige: 4 enkle Power Bank-kredsløb forklaret Næste: Arduino RGB-flydende sekventielt lyskredsløb