Arduino MusicStump: Light, Captive Touch och en summer: 3 steg
Arduino MusicStump: Light, Captive Touch och en summer: 3 steg
Anonim
Arduino MusicStump: Light, Captive Touch och en summer
Arduino MusicStump: Light, Captive Touch och en summer

Ett interaktivt träd med en LED -ring överst, en summer för att göra ljud och en fången beröringssensor inuti som ändrar färgen när du rör den. För att göra denna roliga lilla sak behöver du följande:

Elektronik:- 1x Arduino Uno

- 15x kablar

- 1x lödkolv med rund spets

- 1x Adafruit 8-tangenters touch (CAP1188)

- 1x Arduino -strömkabel

- 1x 8 LED -ring

- 1x summer

- 1x hett limpistol

-Ladda ner CAP1188-biblioteket

- Ladda ner biblioteket för Adafruit Neopixel

Extra (hölje):

- 1x trädstubbe

- 1x pinne för insida

- träfat för att placera allt på/in

- Fylld djurfyllning för utsidan

Du kan också använda något annat som utanför, var kreativ!

Nu ska vi börja …

Steg 1: Steg 1: LED -ring med Captive Touch

Steg 1: LED -ring med Captive Touch
Steg 1: LED -ring med Captive Touch

Om du har tur har din LED -ring redan stift fästa vid den. Om inte är det dags att löda!

De saker vi kommer att använda för detta projekt är:

- DI (Digital ingång, stift 6 ~

- 5V (för ström, 5V stift)

- GND (marken, GND -stift)

Det är LED -ringen för nu. Nu den fångna touchen.

Placera den i en brödbräda och anslut allt enligt följande: SDA/MISO i stift (analog in) A4SCK i stift (analog in) A5VIN in (ström) 5VGND i en GND pin1x -kabel vid C1 (på Captive touch själv)

Nu för att testa ladda upp följande kod till din Arduino:

// Julia Emmink // Ljus- och beröringskod för det interaktiva trädet 19 /// Gjord med användning av Adafruit Neopixel och Adafruit captive touch (CAP1188) (ska installeras) och lysdioden blinkar utan fördröjning

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

#omfatta

#define PIXELSPIN 6 // Där du anslöt LED -ringen

#define NUMPIXELS 8 // Mängden lysdioder som finns på din ring #define CALIBRATIONTIME 20000

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

osignerade långa pixlarInterval = 500; // den tid vi behöver vänta

osignerad lång colorWipePreviousMillis = 0; osignerad lång theaterChasePreviousMillis = 0; osignerad lång regnbågePreviousMillis = 0; osignerad lång rainbowCyclesPreviousMillis = 0;

int theaterChaseQ = 0;

uint16_t currentPixel = 0; // vilken pixel kör vi på

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

#include #include #include

// Återställ stift används för I2C eller SPI

#define CAP1188_RESET 9

// CS -pin används för programvara eller hårdvara SPI

#define CAP1188_CS 10

// Dessa är definierade för programvara SPI, för hårdvara SPI, kontrollera din

// styrelsens SPI -stift i Arduino -dokumentationen #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Använd I2C, ingen återställningsstift!

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

void setup () {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ currentPixel = 0; pixlar. börjar (); // Detta initierar NeoPixel -biblioteket. pixlar. visa (); // Detta skickar den uppdaterade pixelfärgen till hårdvaran.

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

Serial.begin (300); Serial.println ("CAP1188 test!");

om (! cap.begin ()) {

Serial.println ("CAP1188 hittades inte"); medan (1); } Serial.println ("CAP1188 hittat!"); }

void loop () {

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

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ // Bli av med färgpixlarna.setPixelColor (currentPixel, c); pixels.setPixelColor (currentPixel - 1, pixels. Color (0, 0, 0)); pixlar. visa (); currentPixel ++; om (currentPixel == NUMPIXELS) {currentPixel = 0; pixels.setPixelColor (7, pixlar. Color (0, 0, 0));

}

}

Testa det och ha kul! Som du ser när du rör vid C1 -sladden ändras färgen. (Om det inte är första gången kopplar du bara ur din Arduino och ansluter den till datorn.)

Steg 2: Steg 2: Lägga till ljud

Med hjälp av en praktisk handledning gjorde jag detta. Handledningen är nedan:

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

Dags att ta tag i din summer! Sätt summern (-) i en av GND-stiften och (+) i stift 10 ~

Det är ungefär det, nu är det dags att köra koden igen och höra den här fina låten Pirates of the Caribbean! Nu ska du testa kul!

// Julia Emmink // Ljus, beröring och musikkod för det interaktiva trädet 2018-01-19 // Gjord med användning av Adafruit Neopixel och Captive Touch (CAP1188) (ska installeras) och lysdioden blinkar utan fördröjning

// NEOPIXEL ~~~~~~~~~~~~~~~~~~~#inkluderar

#define PIXELSPIN 6

#define NUMPIXELS 8 #define CALIBRATIONTIME 20000

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

osignerade långa pixlarInterval = 500; // den tid vi behöver vänta

osignerad lång colorWipePreviousMillis = 0; osignerad lång theaterChasePreviousMillis = 0; osignerad lång regnbågePreviousMillis = 0; osignerad lång rainbowCyclesPreviousMillis = 0;

int theaterChaseQ = 0;

uint16_t currentPixel = 0; // vilken pixel kör vi på

// MUSIK ~~~~~~~~~~~~~~~~~~~~~~~

const int summer = 10; // Definiera stift 10, kan använda andra PWM -stift (5, 6 eller 9) // Notera stift 3 och 11 kan inte användas när tonfunktionen används i Arduino Uno const int song speed = 1,5; // Ändra till 2 för en långsammare version av låten, ju större siffra desto långsammare låten // **************************** ***** ***** 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 = {// Not av låten, 0 är en vila/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 varaktighet = { / /varaktighet för varje anteckning (i ms) Kvartsnot är inställd på 250 ms 125, 125, 250, 125, 125, 125, 250, 125, 125, 125, 125, 125, 125, 125, 125, 125, 375, 125};

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

#include #include #include

// Återställ stift används för I2C eller SPI

#define CAP1188_RESET 9

// CS -pin används för programvara eller hårdvara SPI

#define CAP1188_CS 10

// Dessa är definierade för programvara SPI, för hårdvara SPI, kontrollera din

// styrelsens SPI -stift i Arduino -dokumentationen #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Använd I2C, ingen återställningsstift!

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

void setup () {

// MUSIK ~~~~~~~~~~~~~~~~~~~~~~ för (int i = 0; i <203; i ++) {// 203 är det totala antalet noter i låten int vänta = varaktighet * sånghastighet; ton (summer, anteckningar , vänta); // ton (stift, frekvens, varaktighet);} // fördröjning används så att den inte går till nästa loop innan tonen spelas upp // Du kan klicka på reset på Arduino för att spela om låten // NEOPIXEL ~~~ ~~~~~~~~~~~~~~~~ currentPixel = 0; pixlar. börjar (); // Detta initierar NeoPixel -biblioteket. pixlar. visa (); // Detta skickar den uppdaterade pixelfärgen till hårdvaran.

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

Serial.begin (300); Serial.println ("CAP1188 test!"); if (! cap.begin ()) {Serial.println ("CAP1188 hittades inte"); medan (1); } Serial.println ("CAP1188 hittat!");

}

void loop () {

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

för (int i = 0; i = pixelintervall) {

colorWipePreviousMillis = millis (); colorWipe (pixlar. Color (0, 255, 125)); }} annat {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixlar. Color (100, 0, 150)); }}

fördröjning (vänta);

}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ // Bli av med färgpixlarna.setPixelColor (currentPixel, c); pixels.setPixelColor (currentPixel-1, pixels. Color (0, 0, 0)); pixlar. visa (); currentPixel ++; om (currentPixel == NUMPIXELS) {currentPixel = 0; pixels.setPixelColor (7, pixlar. Color (0, 0, 0));

}

}

Steg 3: Ytterligare steg: Gör stubben 'Arduino Ready'

Ytterligare steg: Gör stubben 'Arduino Ready'
Ytterligare steg: Gör stubben 'Arduino Ready'
Ytterligare steg: Gör stubben 'Arduino Ready'
Ytterligare steg: Gör stubben 'Arduino Ready'
Ytterligare steg: Gör stubben 'Arduino Ready'
Ytterligare steg: Gör stubben 'Arduino Ready'

Om du bestämmer dig för att använda en trädstubbe måste du göra följande.

  • Skaffa en trädstubbe (jag fick en från en gammal julgran gratis)
  • Mät din Arduino och se hur du vill ha ledningarna i trädstubben
  • Hål ut stubben (jag använde en borrmaskin från skolan)
  • Slipa av de grova kanterna
  • Lägg till roliga små detaljer

Detaljer jag lade till var en liten logotyp som jag gjorde med en laserskärare. Jag staplade också all min elektronik inuti på en pinne inuti mitt träd och jag lade till uppstoppade djurfyllningar på utsidan för att släppa igenom ljuset och ge den lilla extra mjukheten.