Kituo cha Muziki cha Arduino: Nuru, Gusa la Kukamata na Buzzer: Hatua 3
Kituo cha Muziki cha Arduino: Nuru, Gusa la Kukamata na Buzzer: Hatua 3
Anonim
Arduino MusicStump: Nuru, Kugusa Mateka na Buzzer
Arduino MusicStump: Nuru, Kugusa Mateka na Buzzer

Mti unaoingiliana na pete ya LED hapo juu, buzzer kutoa sauti na sensorer ya kugusa ya mateka ndani ambayo hubadilisha rangi unapoigusa. Ili kufanya kitu kidogo cha kufurahisha utahitaji yafuatayo:

Elektroniki: - 1x Arduino Uno

- nyaya 15x

- 1x chuma cha kutengeneza na ncha ya pande zote

- 1x Adafruit 8-key touch mate (CAP1188)

- Kamba ya nguvu ya 1x Arduino

- 1x 8 pete ya LED

- 1x Buzzer

- 1x bunduki ya gundi moto

- Pakua maktaba ya CAP1188

- Pakua maktaba ya Adafruit Neopixel

Ziada (casing):

- 1x kisiki cha mti

- fimbo 1x ya ndani

- sinia ya mbao ili kuiweka yote ndani / ndani

- Kujazwa wanyama kwa nje

Unaweza pia kutumia kitu kingine kama nje, kuwa mbunifu!

Sasa wacha tuanze…

Hatua ya 1: Hatua ya 1: Gonga la LED na Gusa la Kukamata

Hatua ya 1: Gonga la LED na Gusa la Kukamata
Hatua ya 1: Gonga la LED na Gusa la Kukamata

Sasa ikiwa una bahati pete yako ya LED tayari ina pini zilizoambatanishwa nayo. Ikiwa sio wakati wa kuuza!

Vitu tutakavyotumia kwa mradi huu ni:

- DI (Uingizaji wa dijiti, pini 6 ~

- 5V (kwa nguvu, pini 5V)

- GND (Ardhi, pini ya GND)

Hiyo ndio pete ya LED kwa sasa. Sasa mguso wa mateka.

Weka kwenye ubao wa mkate na unganisha kila kitu kama ifuatavyo: SDA / MISO kwenye pini (analog in) A4SCK katika pini (analog in) A5VIN in (nguvu) 5VGND kwenye kebo ya GND pin1x kwenye C1 (kwenye Captive touch yenyewe)

Sasa kujaribu kupakia nambari ifuatayo kwa Arduino yako:

// Julia Emmink // Nambari nyepesi na ya kugusa ya mti wa maingiliano 19 /// Iliyotengenezwa na matumizi ya Adafruit Neopixel na mguso wa mateka wa Adafruit (CAP1188) (inapaswa kusanikishwa) na LED kupepesa bila kuchelewesha

// NEOPIXEL ~~~~~~~~~~~~~~~~~~~

# pamoja

#fafanua PIXELSPIN 6 // Ambapo uliunganisha Pete ya LED

#fafanua NUMPIXELS 8 // Kiasi cha LED zilizo kwenye pete yako #fafanua UFAFANUZI WAKATI 20000

Saizi za Adafruit_NeoPixel = Adafruit_NeoPixel (NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);

saizi ndefu ambazo hazijasainiwaInterval = 500; // wakati tunahitaji kusubiri

rangi ndefu isiyosajiliwaWipePreviousMillis = 0; ukumbi wa michezo usiowekwa sainiChasePreviousMillis = 0; upinde wa mvua usiotiwa sainiPreviousMillis = 0; upinde wa mvua usiotiwa sainiCyclesPreviousMillis = 0;

ukumbi wa michezoChaseQ = 0;

uint16_t currentPixel = 0; // ni pixel gani tunayoendesha

// GUSA ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

#jumlisha #jumlisha # pamoja

// Weka upya Pin hutumiwa kwa I2C au SPI

#fafanua CAP1188_RESET 9

// CS pin hutumiwa kwa programu au vifaa SPI

#fafanua CAP1188_CS 10

// Hizi zimefafanuliwa kwa programu ya SPI, kwa vifaa vya SPI, angalia yako

pini za bodi ya SPI kwenye hati ya Arduino #fafanua CAP1188_MOSI 11 #fafanua CAP1188_MISO 12 #fafanua CAP1188_CLK 13

// Tumia I2C, hakuna pini ya kuweka upya!

Kofia ya Adafruit_CAP1188 = Adafruit_CAP1188 ();

usanidi batili () {

// NEOPIXEL ~~~~~~~~~~~~ ~ saizi. anza (); // Hii inaanzisha maktaba ya NeoPixel. saizi. onyesha (); // Hii inapeleka rangi ya pikseli iliyosasishwa kwenye vifaa.

// GUSA ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

Serial. Kuanza (300); Serial.println ("Jaribio la CAP1188!");

ikiwa (! cap. anza ()) {

Serial.println ("CAP1188 haipatikani"); wakati (1); } Serial.println ("CAP1188 imepatikana!"); }

kitanzi batili () {

// GUSA + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~~ uint8_t kuguswa = cap. Kuguswa (); ikiwa (imeguswa == 0) {ikiwa ((haijasainiwa kwa muda mrefu) (millis () - colorWipePreviousMillis)> = saiziInterval) {colorWipePreviousMillis = millis (); colorWipe (saizi. Rangi (0, 255, 125)); }} mwingine {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (saizi. Rangi (100, 0, 150)); }}

}

utupu colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~ ~ saizi.setPixelColor (sasaPixel - 1, saizi Rangi (0, 0, 0)); saizi. onyesha (); sasaPixel ++; ikiwa (currentPixel == NUMPIXELS) {currentPixel = 0; saizi.setPixelColor (7, saizi Rangi (0, 0, 0));

}

}

Jaribu na ufurahie! Kama unavyoona unapogusa kamba ya C1 rangi hubadilika. (Ikiwa sio mara ya kwanza fungua tu Arduino yako na uiunganishe tena kwenye kompyuta yako.)

Hatua ya 2: Hatua ya 2: Kuongeza Sauti

Pamoja na matumizi ya mafunzo ya kufaa nilifanya hii. Mafunzo yamepunguka:

github.com/xitangg/-Pirates-of-the-Caribbe…

Wakati wa kunyakua buzzer yako! Weka (-) ya buzzer katika moja ya pini za GND na (+) kwenye pini 10 ~

Hiyo ni juu yake, sasa wakati wa kuendesha nambari tena na kusikia kwamba maharamia wazuri wa tune ya Caribbean! Sasa furahiya upimaji!

// Julia Emmink // Nuru, mguso na nambari ya muziki ya mti unaoingiliana 2018-01-19 // Imetengenezwa na matumizi ya Adafruit Neopixel na Captive Touch (CAP1188) (inapaswa kusanikishwa) na mwangaza wa LED bila kuchelewa

// NEOPIXEL ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ni pamoja

#fafanua PIXELSPIN 6

#fafanua NUMPIXELS 8 #fafanua UFAFANUZI WAKATI 20000

Saizi za Adafruit_NeoPixel = Adafruit_NeoPixel (NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);

saizi ndefu ambazo hazijasainiwaInterval = 500; // wakati tunahitaji kusubiri

rangi ndefu isiyosajiliwaWipePreviousMillis = 0; ukumbi wa michezo usiowekwa sainiChasePreviousMillis = 0; upinde wa mvua usiotiwa sainiPreviousMillis = 0; upinde wa mvua usiotiwa sainiCyclesPreviousMillis = 0;

ukumbi wa michezoChaseQ = 0;

uint16_t currentPixel = 0; // ni pixel gani tunayoendesha

// MUZIKI ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

const int buzzer = 10; // Fafanua pini 10, unaweza kutumia pini zingine za PWM (5, 6 au 9) // Vidokezo vya kumbuka 3 na 11 haviwezi kutumiwa wakati wa kutumia kazi ya toni katika Arduino Uno const int songspeed = 1.5; // Badilisha hadi 2 kwa toleo la polepole la wimbo, kubwa zaidi nambari wimbo polepole // *************************** 523 #fafanua NOTE_D5 587 #fafanua NOTE_E5 659 #fasili NOTE_F5 698 #fasili NOTE_G5 784 #fasili NOTE_A5 880 #fafanua NOTE_B5 988 // *********************** ****************** maelezo ya ndani = {// Kumbuka ya wimbo, 0 ni kupumzika / mapigo NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0, NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0, NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0, NOTE_A4, NOTE_G4, NOTE_A4, 0}; // ****************************************** muda wa int = {/ / muda wa kila noti (katika ms) Kumbuka Robo imewekwa 250 ms 125, 125, 250, 125, 125, 125, 125, 125, 250, 125, 125, 125, 125, 125, 250, 125, 125, 125, 125, 375, 125};

// GUSA ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

#jumlisha #jumlisha # pamoja

// Weka upya Pin hutumiwa kwa I2C au SPI

#fafanua CAP1188_RESET 9

// CS pin hutumiwa kwa programu au vifaa SPI

#fafanua CAP1188_CS 10

// Hizi zimefafanuliwa kwa programu ya SPI, kwa vifaa vya SPI, angalia yako

pini za bodi ya SPI kwenye hati ya Arduino #fafanua CAP1188_MOSI 11 #fafanua CAP1188_MISO 12 #fafanua CAP1188_CLK 13

// Tumia I2C, hakuna pini ya kuweka upya!

Kofia ya Adafruit_CAP1188 = Adafruit_CAP1188 ();

usanidi batili () {

// MUZIKI ~ ~ wimbo int wait = muda * kasi ya nyimbo; toni (buzzer, maelezo , subiri); // toni (pini, masafa, muda);} // kuchelewa kunatumiwa kwa hivyo haiendi kwenye kitanzi kinachofuata kabla sauti haijamaliza kucheza // Unaweza kubofya kwenye Arduino ili kurudia wimbo // NEOPIXEL ~~~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ sasaPixel = 0; saizi. anza (); // Hii inaanzisha maktaba ya NeoPixel. saizi. onyesha (); // Hii inapeleka rangi ya pikseli iliyosasishwa kwenye vifaa.

// GUSA ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

Serial. Kuanza (300); Serial.println ("Jaribio la CAP1188!"); ikiwa (! cap.begin ()) {Serial.println ("CAP1188 haipatikani"); wakati (1); } Serial.println ("CAP1188 imepatikana!");

}

kitanzi batili () {

// GUSA + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~~ uint8_t kuguswa = cap. Kuguswa (); ikiwa (imeguswa == 0) {ikiwa ((haijasainiwa kwa muda mrefu) (millis () - colorWipePreviousMillis)> = saiziInterval) {colorWipePreviousMillis = millis (); colorWipe (saizi. Rangi (0, 255, 125)); }} mwingine {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (saizi. Rangi (100, 0, 150)); }}

kwa (int i = 0; i = saiziInterval) {

colorWipePreviousMillis = milimita (); colorWipe (saizi. Rangi (0, 255, 125)); }} mwingine {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (saizi. Rangi (100, 0, 150)); }}

kuchelewesha (subiri);

}

}

utupu colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~ ~ saizi.setPixelColor (sasaPixel-1, saizi Rangi (0, 0, 0)); saizi. onyesha (); sasaPixel ++; ikiwa (currentPixel == NUMPIXELS) {currentPixel = 0; saizi.setPixelColor (7, saizi Rangi (0, 0, 0));

}

}

Hatua ya 3: Hatua ya Ziada: Kufanya kisiki 'Arduino Tayari'

Hatua ya Ziada: Kufanya kisiki 'Arduino Tayari'
Hatua ya Ziada: Kufanya kisiki 'Arduino Tayari'
Hatua ya Ziada: Kufanya kisiki 'Arduino Tayari'
Hatua ya Ziada: Kufanya kisiki 'Arduino Tayari'
Hatua ya Ziada: Kufanya kisiki 'Arduino Tayari'
Hatua ya Ziada: Kufanya kisiki 'Arduino Tayari'

Ukiamua kutumia kisiki cha mti lazima ufanye yafuatayo.

  • Pata kisiki cha mti (nimepata moja kutoka kwa mti wa zamani wa Krismasi bure)
  • Pima Arduino yako na uone jinsi unataka kuwa na wiring kwenye kisiki cha mti
  • Shina kisiki (nilitumia mashine ya kuchimba visima kutoka shuleni)
  • Mchanga kingo mbaya
  • Ongeza maelezo madogo ya kufurahisha

Maelezo niliyoongeza ni nembo ndogo ambayo nilitengeneza na mkataji wa laser. Pia niliweka vifaa vyangu vyote vya elektroniki ndani kwenye fimbo ndani ya mti wangu na nikaongeza mnyama aliyejazwa nje kwa nje ili taa iweze na kutoa upole mdogo zaidi.

Ilipendekeza: