Arduino MusicStump: Lagani, zarobljeni dodir i zujalica: 3 koraka
Arduino MusicStump: Lagani, zarobljeni dodir i zujalica: 3 koraka
Anonim
Arduino MusicStump: Lagani, zarobljeni dodir i zujalica
Arduino MusicStump: Lagani, zarobljeni dodir i zujalica

Interaktivno drvo sa LED prstenom na vrhu, zujalicom za zvuk i zatvorenim senzorom dodira koji mijenja boju dok ga dodirujete. Da biste napravili ovu zabavnu sitnicu, trebat će vam sljedeće:

Elektronika:- 1x Arduino Uno

- 15x kablovi

- 1x lemilica sa okruglim vrhom

- 1x Adafruit zatvarač sa 8 ključeva (CAP1188)

- 1x Arduino kabel za napajanje

- 1x 8 LED prsten

- 1x zujalica

- 1x pištolj za vruće ljepilo

-Preuzmite biblioteku CAP1188

- Preuzmite biblioteku Adafruit Neopixela

Extra (kućište):

- 1x panj

- 1x štapić za unutrašnjost

- drveni tanjir za postavljanje svega na/u

- Punjenje punjenih životinja izvana

Možete koristiti i nešto drugo vani, budite kreativni!

Počnimo sada…

Korak 1: Korak 1: LED prsten sa zaštitnim dodirom

Korak 1: LED prsten sa zaštitnim dodirom
Korak 1: LED prsten sa zaštitnim dodirom

Sada, ako imate sreće, vaš LED prsten već ima pričvršćene pinove. Ako ne, vrijeme je za lemljenje!

Stvari koje ćemo koristiti za ovaj projekat su:

- DI (digitalni ulaz, pin 6 ~

- 5V (za napajanje, pin 5V)

- GND (Uzemljenje, pin GND)

To je zasad LED prsten. Sada dodirnite.

Stavite ga u matičnu ploču i povežite sve na sljedeći način: SDA/MISO u pin (analogni ulaz) A4SCK u pin (analogni ulaz) A5VIN ulaz (napajanje) 5VGND u GND pin1x kabel na C1 (na dodirnom uređaju)

Sada za testiranje prenesite sljedeći kod na svoj Arduino:

// Julia Emmink // Kôd svjetla i dodira za interaktivno stablo 19 /// Napravljeno korištenjem Adafruit Neopixela i Adafruit captive touch (CAP1188) (treba se instalirati) i LED treperi bez odlaganja

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

#include

#define PIXELSPIN 6 // Gdje ste priključili LED prsten

#define NUMPIXELS 8 // Količina LED dioda na vašem prstenu #define CALIBRATIONTIME 20000

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

nepotpisani dugi pikseliInterval = 500; // vrijeme koje trebamo čekati

unsigned long colorWipePreviousMillis = 0; bez potpisa dugo kazališteChasePreviousMillis = 0; nepotpisana duga dugaPreviousMillis = 0; nepotpisana duga duga ciklaPrethodniMillis = 0;

int TheaterChaseQ = 0;

uint16_t currentPixel = 0; // kojim pikselom radimo

// DODIR ~~~~~~~~~~~~~~~~~~~~~~

#include #include #include

// Reset Pin se koristi za I2C ili SPI

#define CAP1188_RESET 9

// CS pin se koristi za softverski ili hardverski SPI

#define CAP1188_CS 10

// Oni su definirani za softverski SPI, za hardverski SPI, provjerite svoj

// SPI pinovi ploče u Arduino dokumentaciji #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Koristite I2C, bez pina za resetiranje!

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

void setup () {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ currentPixel = 0; pixels.begin (); // Ovo inicijalizira NeoPixel biblioteku. pixels.show (); // Ovo šalje ažuriranu boju piksela na hardver.

// DODIR ~~~~~~~~~~~~~~~~~~~~~~

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

if (! cap.begin ()) {{100} {101}

Serial.println ("CAP1188 nije pronađen"); while (1); } Serial.println ("CAP1188 pronađen!"); }

void loop () {{100} {101}

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~ uint8_t touched = cap.touched (); if (dodirnuto == 0) {if ((bez znaka dugo) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pikseli. Boja (0, 255, 125)); }} else {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pikseli. Boja (100, 0, 150)); }}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ // Oslobađa se piksela u boji.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));

}

}

Testirajte i zabavite se! Kao što vidite kada dodirnete C1 kabel, boja se mijenja. (Ako nije prvi put, samo isključite Arduino iz utičnice i ponovo ga uključite u računar.)

Korak 2: Korak 2: Dodavanje zvuka

Koristeći zgodan vodič to sam napravio. Vodič je ispod:

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

Vrijeme je da uzmete zvučni signal! Stavite (-) zujalice u jedan od GND pinova, a (+) u iglu 10 ~

To je otprilike to, sad je vrijeme da ponovo pokrenete kôd i čujete tu ljupku melodiju Pirati s Kariba! Sada se zabavite s testiranjem!

// Julia Emmink // Svjetlosni, dodirni i muzički kôd za interaktivno stablo 2018-01-19 // Napravljeno korištenjem Adapruit Neopixela i Captive Touch -a (CAP1188) (treba se instalirati) i LED treperi bez odlaganja

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

#define PIXELSPIN 6

#define NUMPIXELS 8 #define CALIBRATIONTIME 20000

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

nepotpisani dugi pikseliInterval = 500; // vrijeme koje trebamo čekati

unsigned long colorWipePreviousMillis = 0; bez potpisa dugo kazališteChasePreviousMillis = 0; nepotpisana duga dugaPreviousMillis = 0; nepotpisana duga duga ciklaPrethodniMillis = 0;

int TheaterChaseQ = 0;

uint16_t currentPixel = 0; // kojim pikselom radimo

// MUZIKA ~~~~~~~~~~~~~~~~~~~~~~

const int zujalica = 10; // Definirajte pin 10, može koristiti druge PWM pinove (5, 6 ili 9) // Note pinovi 3 i 11 se ne mogu koristiti kada se koristi funkcija tona u Arduino Uno const int songspeed = 1,5; // Promijenite na 2 za sporiju verziju pjesme, što je veći broj, pjesma je sporija // *************************** ************** #define NOTE_C4 262 // Definiranje frekvencije note #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 = {// Napomena pjesme, 0 je odmor/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 duration = { / /trajanje svake note (u ms) Kvartalna nota je postavljena na 250 ms 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 375, 125};

// DODIR ~~~~~~~~~~~~~~~~~~~~~~

#include #include #include

// Reset Pin se koristi za I2C ili SPI

#define CAP1188_RESET 9

// CS pin se koristi za softverski ili hardverski SPI

#define CAP1188_CS 10

// Oni su definirani za softverski SPI, za hardverski SPI, provjerite svoj

// SPI pinovi ploče u Arduino dokumentaciji #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Koristite I2C, bez pina za resetiranje!

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

void setup () {

// MUZIKA ~~~~~~~~~~~~~~~~~~~~~ for (int i = 0; i <203; i ++) {// 203 je ukupan broj muzičkih nota u int čekanje pjesme = trajanje * brzina pjesme; ton (zujalica, note , sačekajte); // ton (pin, frekvencija, trajanje);} // koristi se kašnjenje kako ne bi prešlo na sljedeću petlju prije nego što se ton završi // Možete kliknuti reset na Arduinu da biste reproducirali pjesmu // NEOPIXEL ~~~ ~~~~~~~~~~~~~~~ currentPixel = 0; pixels.begin (); // Ovo inicijalizira NeoPixel biblioteku. pixels.show (); // Ovo šalje ažuriranu boju piksela na hardver.

// DODIR ~~~~~~~~~~~~~~~~~~~~~~

Serial.begin (300); Serial.println ("CAP1188 test!"); if (! cap.begin ()) {Serial.println ("CAP1188 nije pronađen"); while (1); } Serial.println ("CAP1188 pronađen!");

}

void loop () {{100} {101}

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~ uint8_t touched = cap.touched (); if (dodirnuto == 0) {if ((bez potpisa dugo) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pikseli. Boja (0, 255, 125)); }} else {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pikseli. Boja (100, 0, 150)); }}

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

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

kašnjenje (čekanje);

}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ // Oslobađa se piksela u boji.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));

}

}

Korak 3: Dodatni korak: Prilagodba panja „Arduino spreman“

Dodatni korak: Pripremanje panja za Arduino spreman
Dodatni korak: Pripremanje panja za Arduino spreman
Dodatni korak: Pripremanje panja za Arduino spreman
Dodatni korak: Pripremanje panja za Arduino spreman
Dodatni korak: Pripremanje panja za 'Arduino spreman'
Dodatni korak: Pripremanje panja za 'Arduino spreman'

Ako se ipak odlučite za korištenje panja, morate učiniti sljedeće.

  • Nabavite panj (dobio sam ga sa starog božićnog drvca besplatno)
  • Izmjerite svoj Arduino i vidite kako želite imati ožičenje u panju
  • Izdubite panj (koristio sam bušilicu iz škole)
  • Odgrusite grube ivice
  • Dodajte zabavne male detalje

Detalji koje sam dodao bio je mali logotip koji sam napravio laserskim rezačem. Također sam svu svoju elektroniku složio unutra na štap unutar drveta, a izvana sam dodao nadjev od punjenih životinja kako bi svjetlo prodiralo i dalo toj maloj dodatnoj mekoći.