Obsah:

Arduino MusicStump: Light, Captive Touch a bzučák: 3 kroky
Arduino MusicStump: Light, Captive Touch a bzučák: 3 kroky

Video: Arduino MusicStump: Light, Captive Touch a bzučák: 3 kroky

Video: Arduino MusicStump: Light, Captive Touch a bzučák: 3 kroky
Video: DOTYKOVÝ SENZOR S NE555 2024, Listopad
Anonim
Arduino MusicStump: Light, Captive Touch a bzučák
Arduino MusicStump: Light, Captive Touch a bzučák

Interaktivní strom s prstencem LED v horní části, bzučákem vytvářejícím zvuk a zajetým dotykovým senzorem uvnitř, který při dotyku mění barvu. K vytvoření této zábavné maličkosti budete potřebovat následující:

Elektronika:- 1x Arduino Uno

- 15x kabely

- 1x páječka s kulatým hrotem

- 1x Adafruit 8 kláves pro zajetí (CAP1188)

- 1x napájecí kabel Arduino

- 1x 8 LED kroužek

- 1x bzučák

- 1x horká lepicí pistole

-Stáhněte si knihovnu CAP1188

- Stáhněte si knihovnu Adafruit Neopixel

Extra (pouzdro):

- 1x pařez

- 1x tyč uvnitř

- dřevěný talíř pro umístění na/dovnitř

- Plněné zvířecí nádivky zvenčí

Můžete také použít něco jiného jako venku, buďte kreativní!

Nyní začněme…

Krok 1: Krok 1: LED kroužek s dotykovým ovládáním

Krok 1: LED kroužek s dotykovým ovládáním
Krok 1: LED kroužek s dotykovým ovládáním

Pokud máte štěstí, má váš prsten LED již připojené kolíky. Pokud ne, je čas pájet!

Věci, které pro tento projekt použijeme, jsou:

- DI (digitální vstup, pin 6 ~

- 5V (pro napájení, 5V pin)

- GND (uzemnění, GND pin)

To je prozatím LED kroužek. Nyní zajetí dotek.

Umístěte jej na prkénko a připojte vše následujícím způsobem: SDA/MISO v pinu (analogový vstup) A4SCK v pinu (analogový vstup) A5VIN v (napájení) 5VGND v pinu GND1x kabel na C1 (na samotném dotykovém dotyku)

Nyní vyzkoušejte nahrání následujícího kódu do vašeho Arduina:

// Julia Emmink // Světelný a dotykový kód pro interaktivní strom 19 /// Vyrobeno s použitím Adafruit Neopixel a Adafruit captive touch (CAP1188) (má být nainstalován) a LED bliká bez zpoždění

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

#zahrnout

#define PIXELSPIN 6 // Kde jste připojili LED kroužek

#define NUMPIXELS 8 // Množství LED diod, které jsou na vašem prstenu #define CALIBRATIONTIME 20 000

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

bez znaménka dlouhé pixely Interval = 500; // čas, na který musíme počkat

nepodepsané dlouhé colorWipePreviousMillis = 0; nepodepsané dlouhé divadloChasePreviousMillis = 0; nepodepsaná dlouhá duhaPreviousMillis = 0; nepodepsané dlouhé rainbowCyclesPreviousMillis = 0;

int divadloChaseQ = 0;

uint16_t currentPixel = 0; // na jakém pixelu pracujeme

// TOUCH ~~~~~~~~~~~~~~~~~~~~~~~

#include #include #include

// Resetovací pin se používá pro I2C nebo SPI

#define CAP1188_RESET 9

// CS pin se používá pro softwarové nebo hardwarové SPI

#define CAP1188_CS 10

// Jsou definovány pro software SPI, pro hardware SPI, zkontrolujte svůj

// SPI piny desky v dokumentaci Arduino #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Použijte I2C, žádný resetovací pin!

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

neplatné nastavení () {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ currentPixel = 0; pixely.begin (); // Tím se inicializuje knihovna NeoPixel. pixely.show (); // Tím se na hardware odešle aktualizovaná barva pixelu.

// TOUCH ~~~~~~~~~~~~~~~~~~~~~~~

Serial.begin (300); Serial.println („test CAP1188!“);

if (! cap.begin ()) {

Serial.println ("CAP1188 nebyl nalezen"); zatímco (1); } Serial.println ("CAP1188 nalezen!"); }

prázdná smyčka () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~~~~ uint8_t dotkl = cap.touched (); if (touched == 0) {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixely. Barva (0, 255, 125)); }} else {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixely. Color (100, 0, 150)); }}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~~ // Zbaví barevných pixelů.setPixelColor (currentPixel, c); pixely.setPixelColor (currentPixel - 1, pixely. Color (0, 0, 0)); pixely.show (); currentPixel ++; if (currentPixel == NUMPIXELS) {currentPixel = 0; pixely.setPixelColor (7, pixely. Color (0, 0, 0));

}

}

Vyzkoušejte a bavte se! Jak vidíte, když se dotknete kabelu C1, barva se změní. (Pokud tomu tak není poprvé, jednoduše odpojte Arduino a připojte jej zpět k počítači.)

Krok 2: Krok 2: Přidání zvuku

S využitím šikovného tutoriálu jsem to udělal. Níže naleznete návod:

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

Čas chytit bzučák! Vložte (-) bzučáku do jednoho z pinů GND a (+) do pinu 10 ~

To je o tom, teď je čas spustit kód znovu a slyšet tu nádhernou melodii Pirátů z Karibiku! Nyní se bavte s testováním!

// Julia Emmink // Světelný, dotykový a hudební kód pro interaktivní strom 2018-01-19 // Vyrobeno s použitím Adafruit Neopixel a Captive Touch (CAP1188) (má být nainstalován) a LED bliká bez zpoždění

// NEOPIXEL ~~~~~~~~~~~~~~~~~~~#include

#define PIXELSPIN 6

#define NUMPIXELS 8 #define CALIBRATIONTIME 20000

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

bez znaménka dlouhé pixely Interval = 500; // čas, na který musíme počkat

nepodepsané dlouhé colorWipePreviousMillis = 0; nepodepsané dlouhé divadloChasePreviousMillis = 0; nepodepsaná dlouhá duhaPreviousMillis = 0; nepodepsané dlouhé rainbowCyclesPreviousMillis = 0;

int divadloChaseQ = 0;

uint16_t currentPixel = 0; // na jakém pixelu pracujeme

// HUDBA ~~~~~~~~~~~~~~~~~~~~~~~

konstantní bzučák = 10; // Definujte pin 10, můžete použít jiné PWM piny (5, 6 nebo 9) // Poznámka piny 3 a 11 nelze použít při použití funkce tónu v Arduino Uno const int písně rychlost = 1,5; // Změňte na 2 pro pomalejší verzi skladby, čím větší číslo, tím je skladba pomalejší // ************************** ************* #define NOTE_C4 262 // Definování frekvence not #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 poznámky = {// Poznámka k písni, 0 je klid/puls 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}; // *********************************** int trvání = { / /doba trvání každé noty (v ms) Quarter Note je nastavena na 250 ms 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 375, 125};

// TOUCH ~~~~~~~~~~~~~~~~~~~~~~~

#include #include #include

// Resetovací pin se používá pro I2C nebo SPI

#define CAP1188_RESET 9

// CS pin se používá pro softwarové nebo hardwarové SPI

#define CAP1188_CS 10

// Jsou definovány pro software SPI, pro hardware SPI, zkontrolujte svůj

// SPI piny desky v dokumentaci Arduino #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Použijte I2C, žádný resetovací pin!

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

neplatné nastavení () {

// HUDBA ~~~~~~~~~~~~~~~~~~~~~~ pro (int i = 0; i <203; i ++) {// 203 je celkový počet not v skladba čekání = doba trvání * rychlost skladby; tón (bzučák, poznámky , počkejte); // tón (pin, frekvence, doba trvání);} // zpoždění se používá, aby nepřešlo na další smyčku, než se dokončí přehrávání tónu // Kliknutím na resetovat na Arduinu můžete skladbu přehrát // NEOPIXEL ~~~ ~~~~~~~~~~~~~~~ currentPixel = 0; pixely.begin (); // Tím se inicializuje knihovna NeoPixel. pixely.show (); // Tím se na hardware odešle aktualizovaná barva pixelu.

// TOUCH ~~~~~~~~~~~~~~~~~~~~~~~

Serial.begin (300); Serial.println („test CAP1188!“); if (! cap.begin ()) {Serial.println ("CAP1188 nebyl nalezen"); zatímco (1); } Serial.println ("CAP1188 nalezen!");

}

prázdná smyčka () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~~~~ uint8_t dotkl = cap.touched (); if (touched == 0) {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixely. Barva (0, 255, 125)); }} else {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixely. Color (100, 0, 150)); }}

pro (int i = 0; i = pixelInterval) {

colorWipePreviousMillis = milis (); colorWipe (pixely. Barva (0, 255, 125)); }} else {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixely. Color (100, 0, 150)); }}

zpoždění (čekání);

}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~~ // Zbaví barevných pixelů.setPixelColor (currentPixel, c); pixely.setPixelColor (aktuálníPixel-1, pixely. Color (0, 0, 0)); pixely.show (); currentPixel ++; if (currentPixel == NUMPIXELS) {currentPixel = 0; pixely.setPixelColor (7, pixely. Color (0, 0, 0));

}

}

Krok 3: Další krok: Příprava pahýlu na „Arduino Ready“

Další krok: Vytvoření pařezu „připraveného na Arduino“
Další krok: Vytvoření pařezu „připraveného na Arduino“
Další krok: Příprava pahýlu na „Arduino Ready“
Další krok: Příprava pahýlu na „Arduino Ready“
Další krok: Příprava pahýlu na „Arduino Ready“
Další krok: Příprava pahýlu na „Arduino Ready“

Pokud se rozhodnete použít pařez, musíte udělat následující.

  • Získejte pařez (jeden mám ze starého vánočního stromku zdarma)
  • Změřte si Arduino a uvidíte, jak chcete mít kabeláž v pařezu
  • Vydlabat pařez (ze školy jsem použil vrtačku)
  • Zdrsněte hrubé hrany
  • Přidejte zábavné malé detaily

Podrobnosti, které jsem přidal, bylo malé logo, které jsem vytvořil pomocí laserové řezačky. Také jsem dovnitř složil veškerou svou elektroniku na klacek uvnitř svého stromu a zvenčí jsem přidal vycpané zvířecí náplně, aby dovnitř pronikalo světlo a dodalo té malé extra měkkosti.

Doporučuje: