Kazalo:

Arduino MusicStump: lahek, ujetniški dotik in zvočni signal: 3 koraki
Arduino MusicStump: lahek, ujetniški dotik in zvočni signal: 3 koraki

Video: Arduino MusicStump: lahek, ujetniški dotik in zvočni signal: 3 koraki

Video: Arduino MusicStump: lahek, ujetniški dotik in zvočni signal: 3 koraki
Video: WS2812 [Программируемая светодиодная лента] 2024, November
Anonim
Arduino MusicStump: Lahka, privlačna na dotik in zvočni signal
Arduino MusicStump: Lahka, privlačna na dotik in zvočni signal

Interaktivno drevo z LED obročem na vrhu, zvočnikom za zvok in vgrajenim senzorjem na dotik, ki spreminja barvo, ko se ga dotaknete. Če želite narediti to zabavno malenkost, potrebujete naslednje:

Elektronika:- 1x Arduino Uno

- 15x kabli

- 1x spajkalnik z okroglo konico

- 1x Adafruit 8-ključni dotik (CAP1188)

- 1x napajalni kabel Arduino

- 1x 8 LED obroček

- 1x zvočni signal

- 1x pištola za vroče lepilo

-Prenesite knjižnico CAP1188

- Prenesite knjižnico Adafruit Neopixel

Dodatno (ohišje):

- 1x panj

- 1x palica za notranjost

- leseni krožnik, na katerega lahko postavite vse

- Polnjenje z polnjenimi živalmi za zunanjost

Zunaj lahko uporabite tudi kaj drugega, bodite ustvarjalni!

Zdaj pa začnimo…

1. korak: 1. korak: LED obroč z ujetniškim dotikom

Korak: LED obroč s funkcijo Captive Touch
Korak: LED obroč s funkcijo Captive Touch

Če imate srečo, ima vaš LED obroč že pritrjene zatiče. Če ne, je čas za spajkanje!

Za ta projekt bomo uporabili:

- DI (digitalni vhod, pin 6 ~

- 5V (za napajanje, 5V pin)

- GND (ozemljitev, pin GND)

To je za zdaj LED obroč. Zdaj se dotaknite.

Postavite ga na ploščo in vse povežite na naslednji način: SDA/MISO v pin (analogni vhod) A4SCK v pin (analogni vhod) A5VIN v (napajanje) 5VGND v kabel GND pin1x na C1 (na samem dotiku)

Zdaj za preskus naložite naslednjo kodo v svoj Arduino:

// Julia Emmink // Koda za svetlobo in dotik za interaktivno drevo 19 /// Izdelano z uporabo Adafruit Neopixel in Adafruit captive touch (CAP1188) (nameščen bo) in LED utripa brez zamude

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

#vključi

#define PIXELSPIN 6 // Kjer ste priključili LED obroč

#define NUMPIXELS 8 // Količina LED, ki so na vašem obroču #define CALIBRATIONTIME 20000

Slikovne pike Adafruit_NeoPixel = Adafruit_NeoPixel (NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);

nepodpisani dolgi piksliInterval = 500; // čas, ki ga moramo počakati

brez podpisa dolga colorWipePreviousMillis = 0; brez podpisa dolgo gledališčeChasePreviousMillis = 0; nepodpisana dolga mavricaPreviousMillis = 0; nepodpisani dolgi mavrični cikliPreviousMillis = 0;

int theatreChaseQ = 0;

uint16_t currentPixel = 0; // s katerim pikslom delujemo

// DOTIK ~~~~~~~~~~~~~~~~~~~~~~

#include #include #include

// Reset Pin se uporablja za I2C ali SPI

#define CAP1188_RESET 9

// CS pin se uporablja za programsko ali strojno opremo SPI

#define CAP1188_CS 10

// Te so določene za programsko opremo SPI, za strojno opremo SPI, preverite vaš

// zatiči SPI plošče v dokumentaciji Arduino #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Uporabite I2C, brez pin za ponastavitev!

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

void setup () {

// NEOPIXEL ~~~~~~~~~~~~~~~~~ currentPixel = 0; pixels.begin (); // To inicializira knjižnico NeoPixel. piksli.show (); // To pošlje posodobljeno barvo slikovnih pik strojni opremi.

// DOTIK ~~~~~~~~~~~~~~~~~~~~~~

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

if (! cap.begin ()) {

Serial.println ("CAP1188 ni mogoče najti"); medtem ko (1); } Serial.println ("Najden je bil CAP1188!"); }

void loop () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~ uint8_t touched = cap.touched (); if (dotaknjeno == 0) {if ((brez podpisa dolgo) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (slikovne pike. Barva (0, 255, 125)); }} else {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (slikovne pike. Barva (100, 0, 150)); }}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ // Znebi se barvnih pikslov.setPixelColor (currentPixel, c); pixels.setPixelColor (currentPixel - 1, pixels. Color (0, 0, 0)); piksli.show (); currentPixel ++; if (currentPixel == NUMPIXELS) {currentPixel = 0; pixels.setPixelColor (7, pixels. Color (0, 0, 0));

}

}

Preizkusite in se zabavajte! Ko vidite, da se dotaknete kabla C1, se barva spremeni. (Če se to ne zgodi prvič, preprosto izključite Arduino in ga znova vklopite v računalnik.)

2. korak: 2. korak: Dodajanje zvoka

Z uporabo priročne vadnice sem to naredil. Vadnica je spodaj:

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

Čas je, da vzamete zvočni signal! (-) brenčalnika vstavite v enega od zatičev GND in (+) v zatič 10 ~

To je to, zdaj je čas, da znova zaženete kodo in slišite to čudovito melodijo Pirati s Karibov! Zdaj pa se zabavajte pri testiranju!

// Julia Emmink // Koda za svetlobo, dotik in glasbo za interaktivno drevo 2018-01-19 // Izdelano z uporabo Adapruit Neopixel in Captive Touch (CAP1188) (namesti se) in LED utripa brez zamude

// NEOPIXEL ~~~~~~~~~~~~~~~~~#vključi

#define PIXELSPIN 6

#define NUMPIXELS 8 #define CALIBRATIONTIME 20000

Slikovne pike Adafruit_NeoPixel = Adafruit_NeoPixel (NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);

nepodpisani dolgi piksliInterval = 500; // čas, ki ga moramo počakati

brez podpisa dolga colorWipePreviousMillis = 0; brez podpisa dolgo gledališčeChasePreviousMillis = 0; nepodpisana dolga mavricaPreviousMillis = 0; nepodpisani dolgi mavrični cikliPreviousMillis = 0;

int theatreChaseQ = 0;

uint16_t currentPixel = 0; // s katerim pikslom delujemo

// GLASBA ~~~~~~~~~~~~~~~~~~~~~

zvočni signal const int = 10; // Določimo pin 10, lahko uporabimo tudi druge PWM nožice (5, 6 ali 9) // Opombe nožic 3 in 11 ni mogoče uporabiti pri uporabi tonske funkcije v Arduino Uno const int songspeed = 1,5; // Spremenite v 2 za počasnejšo različico pesmi, večja kot je številka, počasnejša je pesem // *************************** ************** #define NOTE_C4 262 // Določanje frekvence zapiskov #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 note = {// Opomba pesmi, 0 je počitek/utrip 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}; // *************************************** trajanje int = { / /trajanje vsakega zapiska (v ms) Četrtletna nota je nastavljena na 250 ms 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 375, 125};

// DOTIK ~~~~~~~~~~~~~~~~~~~~~~

#include #include #include

// Reset Pin se uporablja za I2C ali SPI

#define CAP1188_RESET 9

// CS pin se uporablja za programsko ali strojno opremo SPI

#define CAP1188_CS 10

// Te so določene za programsko opremo SPI, za strojno opremo SPI, preverite vaš

// zatiči SPI plošče v dokumentaciji Arduino #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Uporabite I2C, brez ponastavitvenega zatiča!

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

void setup () {

// GLASBA ~~~~~~~~~~~~~~~~~~~~~ for (int i = 0; i <203; i ++) {// 203 je skupno število glasbenih not v int wait pesmi = trajanje * hitrost pesmi; ton (zvonec, opombe , počakaj); // ton (pin, frekvenca, trajanje);} // se uporablja zakasnitev, da ne gre na naslednjo zanko, preden se ton konča // Če pritisnete reset na Arduinu, lahko predvajate pesem // NEOPIXEL ~~~ ~~~~~~~~~~~~~~~ currentPixel = 0; pixels.begin (); // To inicializira knjižnico NeoPixel. piksli.show (); // To pošlje posodobljeno barvo slikovnih pik strojni opremi.

// DOTIK ~~~~~~~~~~~~~~~~~~~~~~

Serial.begin (300); Serial.println ("CAP1188 test!"); if (! cap.begin ()) {Serial.println ("CAP1188 ni mogoče najti"); medtem ko (1); } Serial.println ("Najden je bil CAP1188!");

}

void loop () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~ uint8_t touched = cap.touched (); if (dotaknjeno == 0) {if ((brez podpisa dolgo) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (slikovne pike. Barva (0, 255, 125)); }} else {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (slikovne pike. Barva (100, 0, 150)); }}

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

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

zamuda (čakanje);

}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ // Znebi se barvnih pikslov.setPixelColor (currentPixel, c); pixels.setPixelColor (currentPixel-1, pixels. Color (0, 0, 0)); piksli.show (); currentPixel ++; if (currentPixel == NUMPIXELS) {currentPixel = 0; pixels.setPixelColor (7, pixels. Color (0, 0, 0));

}

}

3. korak: Dodatni korak: Priprava panja na "Arduino pripravljen"

Dodatni korak: Priprava panja na "Arduino pripravljen"
Dodatni korak: Priprava panja na "Arduino pripravljen"
Dodatni korak: Priprava panja na "Arduino pripravljen"
Dodatni korak: Priprava panja na "Arduino pripravljen"
Dodatni korak: Priprava panja na "Arduino pripravljen"
Dodatni korak: Priprava panja na "Arduino pripravljen"

Če se odločite za uporabo drevesnega panja, morate storiti naslednje.

  • Pridobite drevesni panj (enega sem dobil brezplačno od starega božičnega drevesa)
  • Izmerite svoj Arduino in poglejte, kako želite imeti ožičenje v škrbini
  • Izdolbi panj (iz šole sem uporabljal vrtalni stroj)
  • Odstranite grobe robove
  • Dodajte zabavne majhne podrobnosti

Podrobnosti, ki sem jih dodal, je bil majhen logotip, ki sem ga naredil z laserskim rezalnikom. Vso svojo elektroniko sem zložil tudi notri na palico v svojem drevesu, na zunanji strani pa sem dodal nadev iz polnjenih živali, ki je prepuščal svetlobo in dal tej majhni dodatni mehkobi.

Priporočena: