Arduino MusicStump: Könnyű, rabul ejtő érintés és hangjelző: 3 lépés
Arduino MusicStump: Könnyű, rabul ejtő érintés és hangjelző: 3 lépés
Anonim
Arduino MusicStump: Könnyű, rabul ejtő érintés és hangjelző
Arduino MusicStump: Könnyű, rabul ejtő érintés és hangjelző

Interaktív fa, tetején LED -gyűrűvel, hangjelző hangjelzéssel és belső érintőérzékelővel, amely megváltoztatja a színt, amikor megérinti. Ennek a szórakoztató kis dolognak az elkészítéséhez a következőkre lesz szüksége:

Elektronika:- 1x Arduino Uno

- 15x kábel

- 1x forrasztópáka kerek véggel

- 1x 8 gombos Adafruit fogható érintés (CAP1188)

- 1x Arduino tápkábel

- 1x 8 LED gyűrű

- 1x csengő

- 1x forró ragasztópisztoly

-Töltse le a CAP1188 könyvtárát

- Töltse le az Adafruit Neopixel könyvtárát

Extra (burkolat):

- 1x fatönk

- 1x bot belsejébe

- fából készült tál, hogy mindezt be-/behelyezze

- Tömött állati töltelék külső használatra

Használhat mást is, mint kívül, legyen kreatív!

Most kezdjük…

1. lépés: 1. lépés: LED -gyűrű rögzített érintéssel

1. lépés: LED -gyűrű rögzített érintéssel
1. lépés: LED -gyűrű rögzített érintéssel

Ha szerencséje van, a LED -gyűrűhöz már csapok vannak rögzítve. Ha nem, akkor ideje forrasztani!

Ebben a projektben a következő dolgokat használjuk:

- DI (Digitális bemenet, 6 ~ érintkező

- 5V (tápellátáshoz, 5V pin)

- GND (föld, GND csap)

Ez egyelőre a LED -gyűrű. Most a ragadós érintés.

Helyezze be a kenyérsütő táblába, és kösse össze az alábbiakat: SDA/MISO a tűben (analóg bemenet) A4SCK a tűben (analóg bemenet) A5VIN bemenet (tápellátás) 5VGND a GND tűben

Most tesztelés céljából töltse fel az alábbi kódot Arduino készülékére:

// Julia Emmink // Fény és érintőkód az interaktív fához 19 /// Az Adafruit Neopixel és az Adafruit captive touch (CAP1188) (telepítendő) használatával készült, és a LED késedelem nélkül villog

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

#befoglalni

#define PIXELSPIN 6 // A LED -gyűrű csatlakoztatásának helye

#define NUMPIXELS 8 // A gyűrűn lévő LED -ek száma #define CALIBRATIONTIME 20000

Adafruit_NeoPixel pixelek = Adafruit_NeoPixel (NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);

unsigned long pixelsInterval = 500; // az idő, amire várnunk kell

unsigned long colorWipePreviousMillis = 0; előjel nélküli hosszú színházChasePreviousMillis = 0; előjel nélküli hosszú szivárványElőzőMillis = 0; előjel nélküli hosszú szivárványCyclesPreviousMillis = 0;

int TheaterChaseQ = 0;

uint16_t currentPixel = 0; // milyen képponton dolgozunk

// ÉRINTÉS ~~~~~~~~~~~~~~~~~~~~~~~~

#befoglalni #befoglalni #befoglalni

// A Reset Pin az I2C vagy az SPI esetében használatos

#define CAP1188_RESET 9

// A CS pin szoftveres vagy hardveres SPI -hez használatos

#define CAP1188_CS 10

// Ezek a szoftveres SPI -hez vannak definiálva, a hardveres SPI -hez, ellenőrizze

// tábla SPI csapjai az Arduino dokumentációjában #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Használjon I2C -t, nincs reset pin!

Adafruit_CAP1188 sapka = Adafruit_CAP1188 ();

void setup () {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ aktuálisPixel = 0; pixels.begin (); // Ezzel inicializálja a NeoPixel könyvtárat. pixels.show (); // Ez elküldi a frissített pixelszínt a hardvernek.

// ÉRINTÉS ~~~~~~~~~~~~~~~~~~~~~~~~

Sorozat.kezdet (300); Serial.println ("CAP1188 teszt!");

if (! cap.begin ()) {

Serial.println ("A CAP1188 nem található"); míg (1); } Serial.println ("CAP1188 megtalálva!"); }

void loop () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~~ uint8_t touch = cap.touched (); if (megérintett == 0) {if ((előjel nélküli hosszú) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixel. Color (0, 255, 125)); }} else {if ((előjel nélküli hosszú) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixel. Color (100, 0, 150)); }}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~~ // Megszabadul a színes pixelektől.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));

}

}

Teszteld és érezd jól magad! Amint látja, amikor megérinti a C1 kábelt, a szín megváltozik. (Ha nem ez az első alkalom, húzza ki az Arduino csatlakozóját, és csatlakoztassa újra a számítógéphez.)

2. lépés: 2. lépés: Hang hozzáadása

Egy praktikus oktatóanyag segítségével elkészítettem ezt. Az oktatóanyag a következő:

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

Ideje felvenni a csengőt! Helyezze a zümmögő (-) jelét az egyik GND csapba, és a (+) jelzést a 10-es tűbe.

Nagyjából ennyi, most ideje újra futtatni a kódot, és hallani a Karib -tenger kalózai kedves dallamát! Most jó szórakozást a teszteléshez!

// Julia Emmink // Fény, érintés és zenei kód az interaktív fához 19.01.2018 // Az Adafruit Neopixel és a Captive Touch (CAP1188) (telepítendő) használatával készül, és a LED késedelem nélkül villog

// NEOPIXEL ~~~~~~~~~~~~~~~~~~#tartalmazza

#define PIXELSPIN 6

#define NUMPIXELS 8 #define CALIBRATIONTIME 20000

Adafruit_NeoPixel pixelek = Adafruit_NeoPixel (NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);

unsigned long pixelsInterval = 500; // az idő, amire várnunk kell

unsigned long colorWipePreviousMillis = 0; előjel nélküli hosszú színházChasePreviousMillis = 0; előjel nélküli hosszú szivárványElőzőMillis = 0; előjel nélküli hosszú szivárványCyclesPreviousMillis = 0;

int TheaterChaseQ = 0;

uint16_t currentPixel = 0; // milyen képponton dolgozunk

// ZENE ~~~~~~~~~~~~~~~~~~~~~~~

const int zümmögő = 10; // Határozza meg a 10 -es tűt, használhat más PWM -csapokat (5, 6 vagy 9) // Megjegyzés: A 3. és a 11. tű nem használható, ha az Arduino Uno const hangszínfunkcióját használja a dallamsebesség = 1,5; // Váltson 2 -re a dal lassabb verziója esetén, minél nagyobb a szám, annál lassabb a dal // *************************** ************** #define NOTE_C4 262 // Megjegyzés gyakoriságának meghatározása #define NOTE_D4 294 #define NOTE_E4 330 #define NOTE_F4 349 #define NOTE_G4 392 #define NOTE_A4 440 #define NOTE_B4 494 #define NOTE_C5 523 #define NOTE_D5 587 #define NOTE_E5 659 #define NOTE_F5 698 #define NOTE_G5 784 #define NOTE_A5 880 #define NOTE_B5 988 // *********************** ****************** int notes = {// A dal megjegyzése, a 0 pihenő/impulzus 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}; // ***************************************** időtartam = { / /minden hangjegy időtartama (ms -ban) A negyedéves jegyzet beállítása 250 ms 125, 125, 250, 125, 125, 125, 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 375, 125};

// ÉRINTÉS ~~~~~~~~~~~~~~~~~~~~~~~~

#befoglalni #befoglalni #befoglalni

// A Reset Pin az I2C vagy az SPI esetében használatos

#define CAP1188_RESET 9

// A CS pin szoftveres vagy hardveres SPI -hez használatos

#define CAP1188_CS 10

// Ezek a szoftveres SPI -hez vannak definiálva, a hardveres SPI -hez, ellenőrizze

// tábla SPI csapjai az Arduino dokumentációjában #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Használjon I2C -t, nincs reset pin!

Adafruit_CAP1188 sapka = Adafruit_CAP1188 ();

void setup () {

// MUSIC ~~~~~~~~~~~~~~~~~~~~~~~ for (int i = 0; i <203; i ++) {// 203 a zenei jegyzetek teljes száma a dal int wait = időtartam * songpeed; hang (hangjelzés, hangjegyek , várakozás); // hang (pin, frekvencia, időtartam);} // késleltetés, így nem megy a következő ciklusra, mielőtt befejeződik a hang lejátszása // Az Arduino -n a reset gombra kattintva újra lejátszhatja a dalt // NEOPIXEL ~~~ ~~~~~~~~~~~~~~~ aktuális aktuális Pixel = 0; pixels.begin (); // Ezzel inicializálja a NeoPixel könyvtárat. pixels.show (); // Ez elküldi a frissített pixelszínt a hardvernek.

// ÉRINTÉS ~~~~~~~~~~~~~~~~~~~~~~~~

Sorozat.kezdet (300); Serial.println ("CAP1188 teszt!"); if (! cap.begin ()) {Serial.println ("A CAP1188 nem található"); míg (1); } Serial.println ("CAP1188 megtalálva!");

}

void loop () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~~ uint8_t touch = cap.touched (); if (megérintett == 0) {if ((előjel nélküli hosszú) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixel. Color (0, 255, 125)); }} else {if ((előjel nélküli hosszú) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixel. Color (100, 0, 150)); }}

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

colorWipePreviousMillis = millis (); colorWipe (pixel. Color (0, 255, 125)); }} else {if ((előjel nélküli hosszú) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixel. Color (100, 0, 150)); }}

késleltetés (várakozás);

}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~~ // Megszabadul a színes pixelektől.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));

}

}

3. lépés: További lépés: A csonk „Arduino Ready” készítése

További lépés: A csonk "Arduino Ready" készítése
További lépés: A csonk "Arduino Ready" készítése
További lépés: A csonk "Arduino Ready" készítése
További lépés: A csonk "Arduino Ready" készítése
További lépés: A csonk "Arduino Ready" készítése
További lépés: A csonk "Arduino Ready" készítése

Ha úgy dönt, hogy fatuskót használ, akkor tegye a következőket.

  • Szerezzen fatönköt (ingyen kaptam egy régi karácsonyfáról)
  • Mérje meg Arduino készülékét, és nézze meg, hogyan szeretné a vezetéket a fatönkön elhelyezni
  • Vágja ki a csonkot (én fúrógépet használtam az iskolából)
  • Csiszolja le a durva széleket
  • Adjon hozzá szórakoztató apró részleteket

A részletek, amelyeket hozzáadtam, egy kis logó volt, amelyet lézervágóval készítettem. Az összes elektronikámat is a fám belsejében lévő pálcára halmoztam, és kívül töltött plüssállat -tölteléket tettem hozzá, hogy átengedje a fényt, és ez a kis extra puhaság legyen.

Ajánlott: