Arduino MusicStump: Light, Captive Touch e um Buzzer: 3 etapas
Arduino MusicStump: Light, Captive Touch e um Buzzer: 3 etapas
Anonim
Arduino MusicStump: Light, Captive Touch e um Buzzer
Arduino MusicStump: Light, Captive Touch e um Buzzer

Uma árvore interativa com um anel de LED no topo, uma campainha para fazer som e um sensor de toque interno que muda a cor conforme você o toca. Para tornar esta pequena coisa divertida, você precisará do seguinte:

Eletrônicos: - 1x Arduino Uno

- cabos 15x

- 1 ferro de solda com ponta redonda

- 1 toque cativo de 8 teclas Adafruit (CAP1188)

- 1 cabo de alimentação Arduino

- 1 anel de 8 LEDs

- 1 campainha

- 1 pistola de cola quente

- Baixe a biblioteca do CAP1188

- Baixe a biblioteca de Adafruit Neopixel

Extra (caixa):

- 1 toco de árvore

- 1 vara para dentro

- bandeja de madeira para colocar tudo em / dentro

- Recheio de pelúcia para o exterior

Você também pode usar algo externo, seja criativo!

Agora vamos começar …

Etapa 1: Etapa 1: anel LED com toque cativo

Etapa 1: anel LED com toque cativo
Etapa 1: anel LED com toque cativo

Agora, se você tiver sorte, seu anel de LED já tem pinos presos a ele. Se não, é hora de soldar!

As coisas que usaremos neste projeto são:

- DI (entrada digital, pino 6 ~

- 5 V (para alimentação, pino de 5 V)

- GND (O aterramento, pino GND)

Esse é o anel de LED por enquanto. Agora o toque cativo.

Coloque-o em uma placa de ensaio e conecte tudo da seguinte maneira: SDA / MISO no pino (entrada analógica) A4SCK no pino (entrada analógica) A5VIN no (alimentação) 5VGND em um cabo GND pin1x em C1 (no próprio toque do Captive)

Agora, para testar, faça upload do seguinte código para o seu Arduino:

// Julia Emmink // Código de luz e toque para a árvore interativa 19 /// Feito com o uso do Adafruit Neopixel e Adafruit toque cativo (CAP1188) (deve ser instalado) e o LED piscando sem demora

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

#incluir

#define PIXELSPIN 6 // Onde você conectou o anel de LED

#define NUMPIXELS 8 // A quantidade de LEDs que estão em seu anel #define CALIBRATIONTIME 20000

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

pixels longos sem sinalInterval = 500; // o tempo que precisamos esperar

longo sem sinal colorWipePreviousMillis = 0; long theatreChasePreviousMillis sem sinal = 0; long rainbowPreviousMillis = 0; long rainbowCyclesPreviousMillis = 0;

int theaterChaseQ = 0;

uint16_t currentPixel = 0; // em qual pixel estamos operando

// TOQUE ~~~~~~~~~~~~~~~~~~~~~~~~

#include #include #include

// Reset Pin é usado para I2C ou SPI

# define CAP1188_RESET 9

// O pino CS é usado para software ou hardware SPI

# define CAP1188_CS 10

// Estes são definidos para software SPI, para hardware SPI, verifique o seu

// pinos SPI da placa na documentação do Arduino # define CAP1188_MOSI 11 # define CAP1188_MISO 12 # define CAP1188_CLK 13

// Use I2C, sem pino de reinicialização!

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

void setup () {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~~ currentPixel = 0; pixels.begin (); // Isso inicializa a biblioteca NeoPixel. pixels.show (); // Isso envia a cor de pixel atualizada para o hardware.

// TOQUE ~~~~~~~~~~~~~~~~~~~~~~~~

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

if (! cap.begin ()) {

Serial.println ("CAP1188 não encontrado"); enquanto (1); } Serial.println ("CAP1188 encontrado!"); }

void loop () {

// TOQUE + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~~~ uint8_t Touch = cap.touched (); if (tocado == 0) {if ((sem sinal longo) (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)); }}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~~ // Livre-se da cor 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));

}

}

Teste e divirta-se! Como você pode ver, ao tocar no cabo C1, a cor muda. (Se não for a primeira vez, basta desconectar o Arduino e conectá-lo de volta ao computador.)

Etapa 2: Etapa 2: Adicionando som

Com o uso de um tutorial prático fiz isso. O tutorial está abaixo:

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

É hora de pegar a campainha! Coloque o (-) da campainha em um dos pinos GND e o (+) no pino 10 ~

É isso, agora é hora de executar o código novamente e ouvir aquela adorável melodia de Piratas do Caribe! Agora divirta-se testando!

// Julia Emmink // Código de luz, toque e música para a árvore interativa 2018-01-19 // Feito com o uso do Adafruit Neopixel e Captive Touch (CAP1188) (está para ser instalado) e o LED piscando sem demora

// NEOPIXEL ~~~~~~~~~~~~~~~~~~~~ # inclui

# define PIXELSPIN 6

#define NUMPIXELS 8 #define CALIBRATIONTIME 20000

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

pixels longos sem sinalInterval = 500; // o tempo que precisamos esperar

longo sem sinal colorWipePreviousMillis = 0; long theatreChasePreviousMillis sem sinal = 0; long rainbowPreviousMillis = 0; long rainbowCyclesPreviousMillis = 0;

int theaterChaseQ = 0;

uint16_t currentPixel = 0; // em qual pixel estamos operando

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

const int buzzer = 10; // Defina o pino 10, pode usar outros pinos PWM (5, 6 ou 9) // Observe que os pinos 3 e 11 não podem ser usados ao usar a função de tom no Arduino Uno const int songspeed = 1.5; // Mude para 2 para uma versão mais lenta da música, quanto maior o número, mais lenta a música // ************************** ************** #define NOTE_C4 262 // Definindo freqüência de nota #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 da música, 0 é uma pausa / pulso 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}; // ****************************************** duração interna = {/ / duração de cada nota (em ms) Semínima é definida como 250 ms 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 375, 125};

// TOQUE ~~~~~~~~~~~~~~~~~~~~~~~~

#include #include #include

// Reset Pin é usado para I2C ou SPI

# define CAP1188_RESET 9

// O pino CS é usado para software ou hardware SPI

# define CAP1188_CS 10

// Estes são definidos para software SPI, para hardware SPI, verifique o seu

// pinos SPI da placa na documentação do Arduino # define CAP1188_MOSI 11 # define CAP1188_MISO 12 # define CAP1188_CLK 13

// Use I2C, sem pino de reinicialização!

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

void setup () {

// MÚSICA ~~~~~~~~~~~~~~~~~~~~~~~~~ for (int i = 0; i <203; i ++) {// 203 é o número total de notas musicais em a música int espera = duração * velocidade da música; tom (campainha, notas , espera); // tom (pin, frequência, duração);} // atraso é usado para que não vá para o próximo loop antes que o tom termine de tocar // Você pode clicar em reset no Arduino para reproduzir a música // NEOPIXEL ~~~ ~~~~~~~~~~~~~~~~~ currentPixel = 0; pixels.begin (); // Isso inicializa a biblioteca NeoPixel. pixels.show (); // Isso envia a cor de pixel atualizada para o hardware.

// TOQUE ~~~~~~~~~~~~~~~~~~~~~~~~

Serial.begin (300); Serial.println ("Teste CAP1188!"); if (! cap.begin ()) {Serial.println ("CAP1188 não encontrado"); enquanto (1); } Serial.println ("CAP1188 encontrado!");

}

void loop () {

// TOQUE + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~~~ uint8_t Touch = cap.touched (); if (tocado == 0) {if ((sem sinal longo) (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)); }}

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

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

atrasar (esperar);

}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~~ // Livre-se da cor 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));

}

}

Etapa 3: Etapa adicional: tornando o toco 'Arduino pronto'

Etapa adicional: tornando o toco 'Arduino pronto'
Etapa adicional: tornando o toco 'Arduino pronto'
Etapa adicional: tornando o toco 'Arduino pronto'
Etapa adicional: tornando o toco 'Arduino pronto'
Etapa adicional: tornando o toco 'Arduino pronto'
Etapa adicional: tornando o toco 'Arduino pronto'

Se decidir usar um toco de árvore, você deve fazer o seguinte.

  • Pegue um toco de árvore (eu ganhei um de uma velha árvore de Natal de graça)
  • Meça seu Arduino e veja como você quer ter a fiação no toco de árvore
  • Esvazie o coto (usei uma furadeira da escola)
  • Lixe as arestas
  • Adicione pequenos detalhes divertidos

Os detalhes que adicionei foi um pequeno logotipo que fiz com um cortador a laser. Eu também empilhei todos os meus eletrônicos dentro de um pedaço de pau dentro da minha árvore e adicionei recheio de bichinhos de pelúcia do lado de fora para deixar a luz passar e dar aquela pequena suavidade extra.