Taula de continguts:

Arduino MusicStump: lleuger, tacte captiu i un brunzidor: 3 passos
Arduino MusicStump: lleuger, tacte captiu i un brunzidor: 3 passos

Vídeo: Arduino MusicStump: lleuger, tacte captiu i un brunzidor: 3 passos

Vídeo: Arduino MusicStump: lleuger, tacte captiu i un brunzidor: 3 passos
Vídeo: Leap Motion SDK 2024, Desembre
Anonim
Arduino MusicStump: lleuger, tacte captiu i un brunzidor
Arduino MusicStump: lleuger, tacte captiu i un brunzidor

Un arbre interactiu amb un anell LED a la part superior, un brunzidor per fer so i un sensor tàctil captiu que canvia el color a mesura que el toqueu. Per fer aquesta cosa divertida, necessitareu el següent:

Electrònica: - 1x Arduino Uno

- Cables de 15x

1x soldador amb punta rodona

1x tacte captiu de 8 tecles Adafruit (CAP1188)

- 1x cable d'alimentació Arduino

- 1x 8 anells LED

- 1x timbre

- 1 pistola de cola calenta

- Descarregueu la biblioteca de CAP1188

- Descarregueu la biblioteca d'Adafruit Neopixel

Extra (carcassa):

- 1x soca d'arbre

1x pal per a l'interior

- Plat de fusta per col·locar-ho tot a dins

- Farcit d’animals de peluix per a l’exterior

També podeu utilitzar una altra cosa com a fora, sigueu creatius.

Ara comencem …

Pas 1: Pas 1: anell LED amb tacte captiu

Pas 1: anell LED amb tacte captiu
Pas 1: anell LED amb tacte captiu

Ara bé, si teniu sort, el vostre anell LED ja té pins connectats. Si no, és hora de soldar!

Les coses que farem servir per a aquest projecte són:

- DI (entrada digital, pin 6 ~

5V (per a alimentació, pin de 5V)

- GND (el terra, pin GND)

Aquest és l’anell LED per ara. Ara el toc captiu.

Col·loqueu-lo en una placa de connexió i connecteu-ho tot de la manera següent: SDA / MISO en pin (entrada analògica) A4SCK en pin (entrada analògica) A5VIN in (alimentació) 5VGND en un cable GND pin1x a C1 (al propi Captive touch)

Ara per provar, pengeu el següent codi al vostre Arduino:

// Julia Emmink // Llum i codi tàctil per a l’arbre interactiu 19 /// Fet amb l’ús de Adafruit Neopixel i Adafruit captive touch (CAP1188) (s’ha d’instal·lar) i el LED parpelleja sense demora

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

#incloure

#define PIXELSPIN 6 // On heu connectat l'anell LED

#define NUMPIXELS 8 // La quantitat de LEDs que hi ha al vostre anell #define CALIBRATIONTIME 20000

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

píxels llargs sense signes Interval = 500; // el temps que hem d’esperar

color llarg sense signarWipePreviousMillis = 0; teatre llarg sense signarChasePreviousMillis = 0; longbow rainbowPreviousMillis sense signar = 0; rainbowCyclesPreviousMillis llarg sense signar = 0;

int theatreChaseQ = 0;

uint16_t currentPixel = 0; // en quin píxel estem operant

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

#include #include #include

// Reset Pin s'utilitza per a I2C o SPI

#define CAP1188_RESET 9

// El pin CS s'utilitza per al programari o maquinari SPI

#define CAP1188_CS 10

// Aquests es defineixen per al programari SPI, per al maquinari SPI, comproveu el vostre

// pins SPI de la placa a la documentació Arduino #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Utilitzeu I2C, sense pin de restabliment.

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

configuració nul·la () {

// NEOPIXEL ~~~~~~~~~~~~~~~~~ currentPixel = 0; pixels.begin (); // Això inicialitza la biblioteca NeoPixel. pixels.show (); // Això envia el color de píxels actualitzat al maquinari.

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

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

if (! cap.begin ()) {

Serial.println ("CAP1188 no trobat"); mentre que (1); } Serial.println ("CAP1188 trobat!"); }

bucle buit () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~ uint8_t tocat = cap.touched (); if (tocat == 0) {if ((sense signar llarg) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixels. Color (0, 255, 125)); }} else {if ((sense signar llarg) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixels. Color (100, 0, 150)); }}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~ // Es desfà del color pixels.setPixelColor (currentPixel, c); pixels.setPixelColor (Pixel actual - 1, pixels. Color (0, 0, 0)); pixels.show (); currentPixel ++; if (currentPixel == NUMPIXELS) {currentPixel = 0; pixels.setPixelColor (7, pixels. Color (0, 0, 0));

}

}

Posa-ho a prova i diverteix-te! Com veieu quan toqueu el cable C1, el color canvia. (Si no és la primera vegada, desconnecteu l'Arduino i torneu-lo a connectar a l'ordinador).

Pas 2: Pas 2: Afegir so

Amb l'ús d'un pràctic tutorial he fet això. El tutorial es mostra a continuació:

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

És hora d’agafar el vostre timbre! Poseu el (-) del brunzidor en un dels pins GND i el (+) al pin 10 ~

Això és tot, ara és hora de tornar a executar el codi i escoltar aquella preciosa melodia de Pirates del Carib! Ara divertiu-vos provant!

// Julia Emmink // Llum, tacte i codi musical per a l’arbre interactiu 2018-01-19 // Fet amb l’ús de l’Adafruit Neopixel i Captive Touch (CAP1188) (s’ha d’instal·lar) i el LED parpelleja sense demora

// NEOPIXEL ~~~~~~~~~~~~~~~~~ # inclou

#define PIXELSPIN 6

#define NUMPIXELS 8 #define CALIBRATIONTIME 20000

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

píxels llargs sense signes Interval = 500; // el temps que hem d’esperar

color sense signar llarg ColorWipePreviousMillis = 0; teatre llarg sense signarChasePreviousMillis = 0; rainbow long unsignedPreviousMillis = 0; rainbowCyclesPreviousMillis llarg sense signar = 0;

int theatreChaseQ = 0;

uint16_t currentPixel = 0; // en quin píxel estem operant

// MÚSICA ~~~~~~~~~~~~~~~~~~~~~

const int buzzer = 10; // Definiu el pin 10, es poden utilitzar altres pins PWM (5, 6 o 9) // Els pins 3 i 11 no es poden utilitzar quan s’utilitza la funció de to a Arduino Uno const int velocitat de cançó = 1,5; // Canvieu a 2 per obtenir una versió més lenta de la cançó, com més gran sigui el número, la cançó serà més lenta // *************************** ************** #define NOTE_C4 262 // Definició de freqüència de notes #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 de la cançó, 0 és un repòs / pols 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 = {/ / durada de cada nota (en ms) La nota trimestral s'estableix en 250 ms 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 125, 250, 125, 125, 125, 125, 375, 125};

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

#include #include #include

// Reset Pin s'utilitza per a I2C o SPI

#define CAP1188_RESET 9

// El pin CS s'utilitza per al programari o maquinari SPI

#define CAP1188_CS 10

// Aquests es defineixen per al programari SPI, per al maquinari SPI, comproveu el vostre

// pins SPI de la placa a la documentació Arduino #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Utilitzeu I2C, sense pin de restabliment.

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

configuració nul·la () {

// MÚSICA ~~~~~~~~~~~~~~~~~~~~~ for (int i = 0; i <203; i ++) {// 203 és el nombre total de notes musicals a la cançó int wait = durata * velocitat de la cançó; to (timbre, notes , espera); // to (pin, freqüència, durada);} // s’utilitza el retard, de manera que no passa al següent bucle abans que s’acabi de reproduir el to // Podeu fer clic a Restableix a Arduino per reproduir la cançó // NEOPIXEL ~~~ ~~~~~~~~~~~~~~~ currentPixel = 0; pixels.begin (); // Això inicialitza la biblioteca NeoPixel. pixels.show (); // Això envia el color de píxels actualitzat al maquinari.

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

Serial.begin (300); Serial.println ("prova CAP1188!"); if (! cap.begin ()) {Serial.println ("CAP1188 no trobat"); mentre que (1); } Serial.println ("CAP1188 trobat!");

}

bucle buit () {

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

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

colorWipePreviousMillis = millis (); colorWipe (pixels. Color (0, 255, 125)); }} else {if ((sense signar llarg) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixels. Color (100, 0, 150)); }}

retard (esperar);

}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~ // Es desfà del color pixels.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));

}

}

Pas 3: Pas addicional: preparar el Stump "Arduino Ready"

Pas addicional: preparar el Stump "Arduino Ready"
Pas addicional: preparar el Stump "Arduino Ready"
Pas addicional: preparar el Stump "Arduino Ready"
Pas addicional: preparar el Stump "Arduino Ready"
Pas addicional: preparar el Stump "Arduino Ready"
Pas addicional: preparar el Stump "Arduino Ready"

Si decidiu utilitzar una soca d’arbre, heu de fer el següent.

  • Aconsegueix una soca d'arbre (en tinc una d'un vell arbre de Nadal de franc)
  • Mesureu el vostre Arduino i vegeu com voleu tenir el cablejat a la soca de l'arbre
  • Buida la soca (he utilitzat una broca de l’escola)
  • Liureu les vores rugoses
  • Afegiu petits detalls divertits

Els detalls que he afegit són un petit logotip que he fet amb un tallador làser. També vaig apilar tots els meus aparells electrònics a dins d’un pal dins del meu arbre i hi vaig afegir peluix de peluix a l’exterior per deixar passar la llum i donar aquesta petita suavitat extra.

Recomanat: