Cuprins:

Arduino MusicStump: ușor, captivant și un buzzer: 3 pași
Arduino MusicStump: ușor, captivant și un buzzer: 3 pași

Video: Arduino MusicStump: ușor, captivant și un buzzer: 3 pași

Video: Arduino MusicStump: ușor, captivant și un buzzer: 3 pași
Video: Массимо Банци: Как Arduino пробуждает воображение 2024, Noiembrie
Anonim
Arduino MusicStump: ușor, tactil captiv și un buzzer
Arduino MusicStump: ușor, tactil captiv și un buzzer

Un copac interactiv cu un inel LED în partea de sus, un buzzer pentru a face sunet și un senzor tactil captiv în interior care schimbă culoarea pe măsură ce îl atingeți. Pentru a face acest lucru distractiv, veți avea nevoie de următoarele:

Electronică: - 1x Arduino Uno

- 15x cabluri

- 1x fier de lipit cu vârf rotund

- 1 atingere captivă Adafruit cu 8 taste (CAP1188)

- 1x cablu de alimentare Arduino

- 1 inel cu 8 LED-uri

- 1x buzzer

- 1x pistol de lipit fierbinte

- Descărcați biblioteca CAP1188

- Descărcați biblioteca Adafruit Neopixel

Extra (carcasă):

- 1x butuc de copac

- 1x stick pentru interior

- platou de lemn pentru a pune totul pe / în

- Umpluturi de animale umplute pentru exterior

Puteți folosi și altceva ca în exterior, fiți creativi!

Acum să începem …

Pasul 1: Pasul 1: Inel cu LED cu atingere captivă

Pasul 1: Inel cu LED cu atingere captivă
Pasul 1: Inel cu LED cu atingere captivă

Acum, dacă ești norocos, inelul tău cu LED-uri are deja pini atașați la el. Dacă nu, este timpul să lipiți!

Lucrurile pe care le vom folosi pentru acest proiect sunt:

- DI (Intrare digitală, pin 6 ~

- 5V (pentru putere, pin 5V)

- GND (solul, pinul GND)

Acesta este inelul LED pentru moment. Acum atingerea captivă.

Așezați-l într-o placă de conectare și conectați totul după cum urmează: SDA / MISO în pin (analog intrare) A4SCK în pin (analog intrare) A5VIN în (alimentare) 5VGND într-un pin GND cablu 1x la C1 (pe captivitatea însăși)

Acum, pentru a testa încărcați următorul cod pe Arduino:

// Julia Emmink // Cod luminos și tactil pentru arborele interactiv 19 /// Realizat cu utilizarea Adafruit Neopixel și Adafruit captive touch (CAP1188) (urmează să fie instalat) și LED-ul clipește fără întârziere

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

#include

#define PIXELSPIN 6 // Unde ați conectat inelul LED

#define NUMPIXELS 8 // Cantitatea de LED-uri care sunt pe inelul tău #define CALIBRATIONTIME 20000

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

pixeli lungi nesemnați Interval = 500; // timpul pe care trebuie să-l așteptăm

nesemnat lung colorWipePreviousMillis = 0; teatru lung nesemnatChasePreviousMillis = 0; curcubeu lung nesemnatPreviousMillis = 0; rainbowCyclesPreviousMillis lung nesemnat = 0;

int theatreChaseQ = 0;

uint16_t currentPixel = 0; // pe ce pixel operăm

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

#include #include #include

// Reset Pin este utilizat pentru I2C sau SPI

#define CAP1188_RESET 9

// Pinul CS este utilizat pentru software sau hardware SPI

#define CAP1188_CS 10

// Acestea sunt definite pentru software SPI, pentru hardware SPI, verificați-vă

// pinii SPI ai plăcii în documentația Arduino #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Folosiți I2C, fără pin de resetare!

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

configurare nulă () {

// NEOPIXEL ~~~~~~~~~~~~~~~~~ currentPixel = 0; pixeli.begin (); // Aceasta inițializează biblioteca NeoPixel. pixels.show (); // Aceasta trimite culoarea pixelilor actualizată la hardware.

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

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

if (! cap.begin ()) {

Serial.println ("CAP1188 nu a fost găsit"); în timp ce (1); } Serial.println ("CAP1188 găsit!"); }

bucla nulă () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~ uint8_t atins = cap.touched (); if (atins == 0) {if ((nesemnat lung) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixeli. Culoare (0, 255, 125)); }} else {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixeli. Culoare (100, 0, 150)); }}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~ // Elimina pixelii de culoare.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));

}

}

Testează-l și distrează-te! După cum vedeți când atingeți cablul C1, culoarea se schimbă. (Dacă nu este pentru prima dată, deconectați-vă Arduino și conectați-l din nou la computer.)

Pasul 2: Pasul 2: Adăugarea de sunet

Cu ajutorul unui tutorial la îndemână, am făcut acest lucru. Tutorialul de mai jos:

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

Este timpul să vă apucați soneria! Puneți (-) soneria într-unul dintre pinii GND și (+) în pinul 10 ~

Cam atât, acum este timpul să rulați din nou codul și să auziți acea melodie minunată a Piraților din Caraibe! Acum distrează-te testând!

// Julia Emmink // Lumina, atingerea și codul muzical pentru arborele interactiv 2018-01-19 // Realizat cu utilizarea Adafruit Neopixel și Captive Touch (CAP1188) (urmează să fie instalat) și LED-ul clipește fără întârziere

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

#define PIXELSPIN 6

#define NUMPIXELS 8 #define CALIBRATIONTIME 20000

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

pixeli lungi nesemnați Interval = 500; // timpul pe care trebuie să-l așteptăm

nesemnat lung colorWipePreviousMillis = 0; teatru lung nesemnatChasePreviousMillis = 0; curcubeu lung nesemnatPreviousMillis = 0; rainbowCyclesPreviousMillis lung nesemnat = 0;

int theatreChaseQ = 0;

uint16_t currentPixel = 0; // pe ce pixel operăm

// MUZICA ~~~~~~~~~~~~~~~~~~~~~~

const int buzzer = 10; // Definiți pinul 10, puteți utiliza alți pinii PWM (5, 6 sau 9) // Notați pinii 3 și 11 nu pot fi utilizați când utilizați funcția de ton în Arduino Uno const int viteză de melodie = 1,5; // Schimbați la 2 pentru o versiune mai lentă a melodiei, cu cât numărul este mai mare, cu atât melodia este mai lentă // *************************** ************** #define NOTE_C4 262 // Definirea frecvenței notei #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 = {// Nota melodiei, 0 este o pauză / 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 durata = {/ / durata fiecărei note (în ms) Notă trimestrială este setată la 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

// Reset Pin este utilizat pentru I2C sau SPI

#define CAP1188_RESET 9

// Pinul CS este utilizat pentru software sau hardware SPI

#define CAP1188_CS 10

// Acestea sunt definite pentru software SPI, pentru hardware SPI, verificați-vă

// pinii SPI ai plăcii în documentația Arduino #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Utilizați I2C, fără pin de resetare!

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

configurare nulă () {

// MUSIC ~~~~~~~~~~~~~~~~~~~~~ for (int i = 0; i <203; i ++) {// 203 este numărul total de note muzicale din melodia int wait = durata * melodia vitezei; ton (sonerie, note , așteptați); // ton (pin, frecvență, durată);} // întârzierea este utilizată, astfel încât să nu meargă la următoarea buclă înainte ca tonul să fie terminat de redat // Puteți face clic pe reset pe Arduino pentru a reda melodia // NEOPIXEL ~~~ ~~~~~~~~~~~~~~~ currentPixel = 0; pixeli.begin (); // Aceasta inițializează biblioteca NeoPixel. pixels.show (); // Aceasta trimite culoarea pixelilor actualizată la hardware.

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

Serial.begin (300); Serial.println ("test CAP1188!"); if (! cap.begin ()) {Serial.println ("CAP1188 not found"); în timp ce (1); } Serial.println ("CAP1188 găsit!");

}

bucla nulă () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~ uint8_t atins = cap.touched (); if (atins == 0) {if ((nesemnat lung) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixeli. Culoare (0, 255, 125)); }} else {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixeli. Culoare (100, 0, 150)); }}

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

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

întârziere (așteptați);

}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~ // Elimina pixelii de culoare.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));

}

}

Pasul 3: Pas suplimentar: pregătirea butucului „Arduino Ready”

Pas suplimentar: pregătirea butucului „Arduino Ready”
Pas suplimentar: pregătirea butucului „Arduino Ready”
Pas suplimentar: pregătirea butucului „Arduino Ready”
Pas suplimentar: pregătirea butucului „Arduino Ready”
Pas suplimentar: pregătirea butucului „Arduino Ready”
Pas suplimentar: pregătirea butucului „Arduino Ready”

Dacă decideți să folosiți o buturugă de copac, trebuie să faceți următoarele.

  • Obțineți o buturugă de copac (am primit una de la un pom de Crăciun gratuit)
  • Măsurați-vă Arduino și vedeți cum doriți să aveți cablurile în butucul de copac
  • Scobesc butucul (am folosit o mașină de găurit de la școală)
  • Șlefuiți marginile aspre
  • Adăugați mici detalii distractive

Detalii pe care le-am adăugat a fost un logo mic pe care l-am realizat cu un tăietor cu laser. De asemenea, mi-am stivuit toate componentele electronice înăuntru pe un băț în interiorul copacului meu și am adăugat umpluturi de animale umplute în exterior pentru a lăsa lumina să treacă și pentru a oferi acea mică moliciune suplimentară.

Recomandat: