Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Sekite daugiau autoriaus:
Apie: Man patinka gaminti daiktus nuo raketų iki elektronikos. Daugiau apie IanCumming »
Sveiki visi
Jau beveik šventinis laikotarpis ir daugybė parduotuvių pradėjo dėti šventines dekoracijas, pagalvojau, kad atėjo tinkamas laikas pastatyti muzikines pasakų lemputes!
1 žingsnis: Naudotos dalys
Aš naudosiu šiuos dalykus:
- 12 šviesos diodų
- 12 Srovės ribojimo rezistoriai
- 1 ULN 2803 Darlingtono tranzistorių matrica
- Kai kurie trumpieji laidai
- Pjezo garsiakalbis
- Duonos lenta ir
- ir Arduino
- Norėdami sukurti pasakų šviesų eilutę, naudoju 5 laidus iš eterneto kabelio
2 žingsnis: kodas
// GLOBAL VARS int barTime = 1200; // 8/8 = 1000 ms baitas nrLEDS = 4; // 4 baziniai šviesos diodai, galite pridėti daugybę lygiagrečių baitų lempučių = {3, 4, 5, 6}; baitų garsiakalbis = 11; baitų modelisLength = 64; // modelio ilgio baitų dainaLength = 51; const baitų daina = {// „Jingle Bells“duomenys 29, 2, 29, 2, 29, 4, 29, 2, 29, 2, 29, 4, 29, 2, 32, 2, 25, 3, 27, 1, 29, 8, 30, 2, 30, 2, 30, 3, 30, 1, 30, 2, 29, 2, 29, 2, 29, 1, 29, 1, 29, 2, 27, 2, 27, 2, 29, 2, 27, 4, 32, 4, 29, 2, 29, 2, 29, 4, 29, 2, 29, 2, 29, 4, 29, 2, 32, 2, 25, 3, 27, 1, 29, 8, 30, 2, 30, 2, 30, 2, 30, 2, 30, 2, 29, 2, 29, 2, 29, 1, 29, 1, 32, 2, 32, 2, 30, 2, 27, 2, 25, 8}; // Struktūra yra pastabos numeris tada // NoteLength 8 -ojo konstituoto baitų šablone = {// Šablono duomenys 0b0001, 0b0010, 0b0100, 0b1000, // Bits corrispond to Leds in a array 0b0001, 0b0010, 0b0100, 0b1000, 0b0001, 0b0010, 0b0100, 0b1000, 0b0001, 0b0010, 0b0100, 0b1000, 0b1000, 0b1100, 0b0100, 0b0110, 0b0010, 0b0011, 0b0001, 0b1001, 0b1000, 0b1100, 0b0100, 0b0110, 0b1010, 0b1010 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1100, 0b0011, 0b1100, 0b00b, 0b0011, 0b0011, 0b0011, 0b0011, 0b0011 0b0011, 0b1100, 0b0011, 0b1100, 0b0011,};
Pirmiausia paskelbiu savo kintamuosius, įdomiausi yra daina ir modelis.
- Daina išsaugo melodiją; šiuo atveju tai yra Jingle Bells.
- Šablonas saugo įjungimo ir išjungimo pozicijas masyvo verčių bituose.
Individualizuotos funkcijos
// FUNKCIJOS int noteToHz (int note) {// Konvertuoti pastabą Nr. iki dažnio plūdės dažnis = 440 * (pow (1.059463094359, 21 pastaba)); // -21 suteikia jums 1 pastabą C3 (manau) return int (freq); // Rezultatai tikslūs iki 1 Hz} tuštumos šviesos diodai (baitas PORT_X) {// Valdymo šviesos diodo būsena (int q = 0; q
Dvi funkcijos, kurias turiu, atliks šiuos veiksmus:
- Apskaičiuokite tonų funkcijos dažnį cikle
- įjunkite arba išjunkite šviesos diodus, priklausomai nuo funkcijai perduotos vertės
Sąrankos funkcija
void setup () {// sąranka OUTPUT smeigtukai pinMode (garsiakalbis, OUTPUT); for (int t = 0; t <nrLEDS; t ++) {pinMode (šviesos diodai [t], OUTPUT); }}
Nustatymo funkcijoje aš nustatiau reikiamus kaiščius į OUTPUT.
Kilpos funkcija
void loop () {// Muzikos ciklas (int t = 0; t <songLength; t ++) {// Pastabos, ilgis ir melodijos atkūrimas int note = noteToHz (daina [t * 2]); int ilgis = ((daina [(t * 2) +1] * barTime) / 8); tonas (garsiakalbis, nata, ilgis - 50); // Žybsinčios šviesos! lightLEDs (modelis [t % patternLength]); vėlavimas (ilgis); } // Silence Loop int randomSilence = atsitiktinis (1000, 5000); už (int t = 0; t
Pagrindinės kilpos funkcijoje turiu 2 kilpas. Dainų kilpa ir tylos kilpa
Dainų ciklas skaitys duomenis iš dainų masyvo, groja nata naudojant tono funkciją
Dainų kilpa bus,
- Perskaitykite duomenis iš dainų masyvo,
- Tada paleiskite natą naudodami tonų funkciją
- Įsižiebkite šviesos diodus, skaitykite modelių masyvą.
Tylos cikle
šviečia tik šviesos diodai
Prijunkite „Arduino“ir įkelkite kodą. (Tada atjunkite)
3 žingsnis: grandinės paleidimas
Pradėsiu nuo šviesų virtinės
- Aš naudoju laidą iš eterneto kabelio ir keturis kartus lydėjau 3 šviesos diodus, kad šviesos diodai būtų tolygiai išdėstyti maždaug per 2 metrus
- Aš lituodavau kiekvieno anodo aną prie vieno laido.
- Tada kiekvieno šviesos diodo katodas į 4 atskirus laidus. Žinoma, su rezistoriumi
- Aš pakartojau šį procesą 3 kartus, kad gaučiau 12 šviesos diodų eilutę, ir ant 5 laidų galo uždėjau antraščių kaiščius
Prijunkite teigiamus ir įžemintus bėgius prie duonos lentos
4 žingsnis: ULN2803
Padėkite ULN2308 mikroschemą ant duonos lentos
ULN2308 yra tranzistorių matricos lustas; iš duomenų lapo, kurį matau
- Šis 1 kaištis yra įvestis, įjungianti 18 kaištį
- 2 kaištis įjungia 17. Ir tt
- 9 kaištis yra sumaltas
- Prijunkite lusto 9 kaištį prie įžeminimo bėgio
- Prijunkite teigiamą bėgelį prie gnybtų juostelės, viena juosta virš 18 kaiščio. (Pamatysite, kodėl po minutės)
- Prijunkite lusto 1 kaištį prie „Arduino“3 kaiščio
- 2 eina į 4
- 3 lusto eina į 5 ir
- 4 eina į „Arduino“6 kaištį
- Padėkite šviesos diodų eilutę ant duonos lentos. Kur bendras anodo laidas yra prijungtas prie juostos, prijungtos prie 5 voltų. Likusios pasakų šviesos smeigtukai turėtų patekti į lusto 18, 17, 16 ir 15 kaištį.
5 žingsnis: pridėkite garsą
- Prijunkite pjezo garsiakalbį tarp 2 gnybtų
- Prijunkite neigiamą Piezo elemento polių prie žemės ir
- Kitas garsiakalbio galas prie 11 kaiščio
6 žingsnis: Išvada
Turiu šviesų eilutę, kuri atsitiktinai paleis skambinančius varpelius, kad primintų man, jog tai šventinis metas.