Arduino MusicStump: Kevyt, vangitseva kosketus ja summeri: 3 vaihetta
Arduino MusicStump: Kevyt, vangitseva kosketus ja summeri: 3 vaihetta
Anonim
Arduino MusicStump: Kevyt, vangitseva kosketus ja summeri
Arduino MusicStump: Kevyt, vangitseva kosketus ja summeri

Vuorovaikutteinen puu, jonka yläosassa on LED -rengas, summeri, joka tuottaa ääntä ja vangitseva kosketusanturi, joka muuttaa väriä kosketettaessa sitä. Tämän hauskan pienen asian tekemiseksi tarvitset seuraavat:

Elektroniikka:- 1x Arduino Uno

- 15x kaapelit

- 1x juotin pyöreällä kärjellä

- 1x Adafruit 8-näppäin vankka kosketus (CAP1188)

- 1x Arduino -virtajohto

- 1x 8 LED -rengas

- 1x summeri

- 1x kuuma liimapistooli

-Lataa CAP1188-kirjasto

- Lataa Adafruit Neopixelin kirjasto

Ylimääräinen (kotelo):

- 1x kanto

- 1x sauva sisäpuolelle

- puinen lautanen kaiken asettamiseksi päälle/sisään

- Täytetyt eläinten täytteet ulkopuolelle

Voit myös käyttää jotain muuta kuin ulkona, ole luova!

Aloitetaan nyt…

Vaihe 1: Vaihe 1: LED -rengas vangitsevalla kosketuksella

Vaihe 1: LED -rengas vangitsevalla kosketuksella
Vaihe 1: LED -rengas vangitsevalla kosketuksella

Jos olet onnekas, LED -renkaassasi on jo tapit kiinni. Jos ei, on aika juottaa!

Tässä projektissa käytämme seuraavia asioita:

- DI (digitaalitulo, nasta 6 ~

- 5V (virta, 5V nasta)

- GND (maa, GND -nasta)

Se on LED -rengas nyt, nyt vangitseva kosketus.

Aseta se leipälevylle ja liitä kaikki seuraavasti: SDA/MISO nastassa (analoginen tulo) A4SCK nastassa (analoginen tulo) A5VIN sisään (virta) 5VGND GND -nastassa1x kaapeli kohdassa C1 (itse Captive touchissa)

Testaa nyt lataamalla seuraava koodi Arduinoosi:

// Julia Emmink // Valo ja kosketuskoodi vuorovaikutteiselle puulle 19 /// Valmistettu Adafruit Neopixel- ja Adafruit captive touch (CAP1188) (on asennettava) -toiminnon avulla ja LED vilkkuu viipymättä

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

#sisältää

#define PIXELSPIN 6 // Mihin liitit LED -renkaan

#define NUMPIXELS 8 // Renkaasi LED -valojen määrä #define CALIBRATIONTIME 20000

Adafruit_NeoPixel pikseliä = Adafruit_NeoPixel (NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);

allekirjoittamattomat pitkät pikselitInterval = 500; // aika, jota meidän on odotettava

allekirjoittamaton pitkä väriWipePreviousMillis = 0; allekirjoittamaton pitkä teatteriChasePreviousMillis = 0; allekirjoittamaton pitkä sateenkaariEdellinenMillis = 0; allekirjoittamaton pitkä sateenkaariCyclesPreviousMillis = 0;

int TheaterChaseQ = 0;

uint16_t currentPixel = 0; // mitä pikseliä käytämme

// KOSKETUS ~~~~~~~~~~~~~~~~~~~~~~~

#Sisällytä #Sisällytä #Sisällytä

// Reset Pin käytetään I2C: ssä tai SPI: ssä

#define CAP1188_RESET 9

// CS -nasta käytetään ohjelmisto- tai laitteisto -SPI: hen

#define CAP1188_CS 10

// Nämä on määritetty ohjelmiston SPI: lle, laitteiston SPI: lle, tarkista

// hallituksen SPI -nastat Arduinon dokumentaatiossa #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Käytä I2C: tä, ei nollaustappia!

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

void setup () {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ currentPixel = 0; pixels.begin (); // Tämä alustaa NeoPixel -kirjaston. pixels.show (); // Tämä lähettää päivitetyn pikselin värin laitteistoon.

// KOSKETUS ~~~~~~~~~~~~~~~~~~~~~~~

Sarja.alku (300); Serial.println ("CAP1188 -testi!");

jos (! cap.begin ()) {

Serial.println ("CAP1188 ei löydy"); kun taas (1); } Serial.println ("CAP1188 löydetty!"); }

void loop () {

// KOSKETUS + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~~~ uint8_t touch = cap.touched (); if (touched == 0) {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pikseliä Väri (0, 255, 125)); }} else {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pikseliä Väri (100, 0, 150)); }}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~~ // Pääsee eroon väripikseleistä.setPixelColor (currentPixel, c); pixels.setPixelColor (currentPixel - 1, pixels. Color (0, 0, 0)); pixels.show (); currentPixel ++; if (currentPixel == NUMPIXELS) {currentPixel = 0; pixels.setPixelColor (7, pixels. Color (0, 0, 0));

}

}

Testaa ja pidä hauskaa! Kuten näet, kun kosketat C1 -johtoa, väri muuttuu. (Jos ei ensimmäistä kertaa, irrota Arduino ja kytke se takaisin tietokoneeseen.)

Vaihe 2: Vaihe 2: Äänen lisääminen

Tein tämän kätevän opetusohjelman avulla. Opetusohjelma on seuraava:

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

Aika hakea summeri! Aseta summeri (-) johonkin GND-nastoista ja (+) nastaan 10 ~

Se on siitä, nyt on aika suorittaa koodi uudelleen ja kuulla ihana Pirates of the Caribbean -bändi! Nyt hauskaa testaamista!

// Julia Emmink // Valo, kosketus ja musiikkikoodi vuorovaikutteiselle puulle 19.1.2018 // Valmistettu Adafruit Neopixelin ja Captive Touchin (CAP1188) (asennetaan) avulla ja LED vilkkuu viipymättä

// NEOPIXEL ~~~~~~~~~~~~~~~~~~#sisältää

#define PIXELSPIN 6

#määritä NUMPIXELS 8 #define CALIBRATIONTIME 20000

Adafruit_NeoPixel pikseliä = Adafruit_NeoPixel (NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);

allekirjoittamattomat pitkät pikselitInterval = 500; // aika, jota meidän on odotettava

allekirjoittamaton pitkä väriWipePreviousMillis = 0; allekirjoittamaton pitkä teatteriChasePreviousMillis = 0; allekirjoittamaton pitkä sateenkaariEdellinenMillis = 0; allekirjoittamaton pitkä sateenkaariCyclesPreviousMillis = 0;

int TheaterChaseQ = 0;

uint16_t currentPixel = 0; // mitä pikseliä käytämme

// MUSIIKKI ~~~~~~~~~~~~~~~~~~~~~~~

const int summeri = 10; // Määritä nasta 10, voi käyttää muita PWM -nastoja (5, 6 tai 9) // Huomaa, että nastoja 3 ja 11 ei voi käyttää, kun käytetään äänitoimintoa Arduino Unossa. // Vaihda kappaleeseen 2, jos haluat hitaamman version kappaleesta, mitä suurempi numero, sitä hitaampi kappale // *************************** ************** #määrittele NOTE_C4 262 // Muistiinpanotaajuuden määrittäminen #määrittele NOTE_D4 294 #määrittele NOTE_E4 330 #määrittele NOTE_F4 349 #määrittele NOTE_G4 392 #määrittele NOTE_A4 440 #määritä NOTE_B4 494 #määritä NOTE_C5 523 #määrittele NOTE_D5 587 #määrittele NOTE_E5 659 #määrittele NOTE_F5 698 #määrittele NOTE_G5 784 #määrittele NOTE_A5 880 #määrittele NOTE_B5 988 // *********************** ****************** int notes = {// Kappaleen nuotti, 0 on lepo/pulssi 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}; // ***************************************** kesto = { / /kunkin nuotin kesto (ms) Neljännesmuistio on asetettu arvoon 250 ms 125, 125, 250, 125, 125, 125, 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 375, 125};

// KOSKETUS ~~~~~~~~~~~~~~~~~~~~~~~

#Sisällytä #Sisällytä #Sisällytä

// Reset Pin käytetään I2C: ssä tai SPI: ssä

#define CAP1188_RESET 9

// CS -nasta käytetään ohjelmisto- tai laitteisto -SPI: hen

#define CAP1188_CS 10

// Nämä on määritetty ohjelmiston SPI: lle, laitteiston SPI: lle, tarkista

// hallituksen SPI -nastat Arduinon dokumentaatiossa #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Käytä I2C: tä, ei nollaustappia!

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

void setup () {

// MUSIIKKA ~~~~~~~~~~~~~~~~~~~~~~~ for (int i = 0; i <203; i ++) {// 203 on musiikkimerkintöjen kokonaismäärä kappale int odota = kesto * kappaleen nopeus; ääni (summeri, muistiinpanot , odota); // sävy (nasta, taajuus, kesto);} // viivettä käytetään, jotta se ei siirry seuraavaan silmukkaan ennen kuin ääni on toistettu // Voit toistaa kappaleen napsauttamalla Arduinon nollauspainiketta // NEOPIXEL ~~~ ~~~~~~~~~~~~~~~~ CurrentPixel = 0; pixels.begin (); // Tämä alustaa NeoPixel -kirjaston. pixels.show (); // Tämä lähettää päivitetyn pikselin värin laitteistoon.

// KOSKETUS ~~~~~~~~~~~~~~~~~~~~~~~

Sarja.alku (300); Serial.println ("CAP1188 -testi!"); if (! cap.begin ()) {Serial.println ("CAP1188 ei löydy"); kun taas (1); } Serial.println ("CAP1188 löydetty!");

}

void loop () {

// KOSKETUS + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~~~ uint8_t touch = cap.touched (); if (touched == 0) {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pikseliä Väri (0, 255, 125)); }} else {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pikseliä Väri (100, 0, 150)); }}

for (int i = 0; i = pixelsInterval) {

colorWipePreviousMillis = millis (); colorWipe (pikseliä Väri (0, 255, 125)); }} else {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pikseliä Väri (100, 0, 150)); }}

viive (odota);

}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~~ // Pääsee eroon väripikseleistä.setPixelColor (currentPixel, c); pixels.setPixelColor (currentPixel-1, pixels. Color (0, 0, 0)); pixels.show (); currentPixel ++; if (currentPixel == NUMPIXELS) {currentPixel = 0; pixels.setPixelColor (7, pixels. Color (0, 0, 0));

}

}

Vaihe 3: Lisävaihe: Kannon tekeminen Arduino -valmiiksi

Lisävaihe: Tee kannosta Arduino Ready
Lisävaihe: Tee kannosta Arduino Ready
Lisävaihe: Tee kannosta Arduino Ready
Lisävaihe: Tee kannosta Arduino Ready
Lisävaihe: Tee kannosta Arduino Ready
Lisävaihe: Tee kannosta Arduino Ready

Jos päätät käyttää kantoa, sinun on tehtävä seuraava.

  • Hanki kanto (sain sen vanhasta joulukuusta ilmaiseksi)
  • Mittaa Arduino -laitteesi ja katso, miten haluat saada johdotuksen kantoon
  • Ojenna kanto (käytin koulun porakoneita)
  • Hio karkeat reunat pois
  • Lisää hauskoja pieniä yksityiskohtia

Lisätyt tiedot olivat pieni logo, jonka tein laserleikkurilla. Pinoin myös kaiken elektroniikkani sisälle puun sisällä olevaan tikkuun ja lisäsin täytettyjä eläinten täytteitä ulkopuolelle päästämään valon läpi ja antamaan pienen ylimääräisen pehmeyden.