INHOUDSOPGAWE:

Arduino MusicStump: Light, Captive Touch en 'n zoemer: 3 stappe
Arduino MusicStump: Light, Captive Touch en 'n zoemer: 3 stappe

Video: Arduino MusicStump: Light, Captive Touch en 'n zoemer: 3 stappe

Video: Arduino MusicStump: Light, Captive Touch en 'n zoemer: 3 stappe
Video: Capacitive Touch Sensor with Arduino use as a Toggle Switch 2024, November
Anonim
Arduino MusicStump: lig, gevange aanraking en 'n zoemer
Arduino MusicStump: lig, gevange aanraking en 'n zoemer

'N Interaktiewe boom met 'n LED -ring aan die bokant, 'n gonser om geluid te maak en 'n gevange aanraaksensor aan die binnekant wat die kleur verander terwyl jy daaraan raak. Om hierdie lekker dingetjie te maak, benodig jy die volgende:

Elektronika:- 1x Arduino Uno

- 15x kabels

- 1x soldeerbout met 'n ronde punt

- 1x Adafruit 8-sleutel gevange aanraking (CAP1188)

- 1x Arduino -kragkabel

- 1x 8 LED -ring

- 1x gonser

- 1x warm lijmpistool

-Laai die biblioteek van CAP1188 af

- Laai die biblioteek van Adafruit Neopixel af

Ekstra (omhulsel):

- 1x boomstomp

- 1x stok vir binnekant

- houtbord om dit alles op/in te plaas

- Gevulde vulling vir die buitekant

U kan ook iets anders as buite gebruik, wees kreatief!

Laat ons nou begin …

Stap 1: Stap 1: LED -ring met Captive Touch

Stap 1: LED -ring met Captive Touch
Stap 1: LED -ring met Captive Touch

As u gelukkig is, het u LED -ring reeds penne daaraan vasgemaak. Indien nie, is dit tyd om te soldeer!

Die dinge wat ons vir hierdie projek sal gebruik, is:

- DI (Digitale invoer, pen 6 ~

- 5V (vir krag, 5V -pen)

- GND (die grond, GND -pen)

Dit is nou die LED -ring. Nou die gevangene.

Plaas dit in 'n broodbord en verbind alles soos volg: SDA/MISO in pen (analoog in) A4SCK in pen (analoog in) A5VIN in (krag) 5VGND in 'n GND pin1x -kabel by C1 (op Captive touch self)

Laai nou die volgende kode na u Arduino op:

// Julia Emmink // Ligte en aanraakkode vir die interaktiewe boom 19 /// Gemaak met die gebruik van die Adafruit Neopixel en Adafruit captive touch (CAP1188) (moet geïnstalleer word) en die LED knipper sonder vertraging

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

#insluit

#define PIXELSPIN 6 // Waar u die LED -ring verbind het

#define NUMPIXELS 8 // Die hoeveelheid LED's op u ring #defineer KALIBRASIETYD 20000

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

ongetekende lang pixelsInterval = 500; // die tyd wat ons moet wag

ongetekende lang colorWipePreviousMillis = 0; ongetekende lang theaterChasePreviousMillis = 0; ongetekende lang reënboogPreviousMillis = 0; ongetekende lang reënboogCyclesPreviousMillis = 0;

int theaterChaseQ = 0;

uint16_t currentPixel = 0; // op watter pixel werk ons

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

#include #include #include

// Herstelpen word gebruik vir I2C of SPI

#definieer CAP1188_RESET 9

// CS -pen word gebruik vir sagteware of hardeware SPI

#definieer CAP1188_CS 10

// Dit word gedefinieer vir sagteware SPI, vir hardeware SPI, kyk na u

// bord se SPI -penne in die Arduino -dokumentasie #definieer CAP1188_MOSI 11 #definieer CAP1188_MISO 12 #definieer CAP1188_CLK 13

// Gebruik I2C, geen resetpen nie!

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

ongeldige opstelling () {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ currentPixel = 0; pixels.begin (); // Dit begin die NeoPixel -biblioteek. pixels.show (); // Dit stuur die opgedateerde pixelkleur na die hardeware.

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

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

as (! cap.begin ()) {

Serial.println ("CAP1188 nie gevind nie"); terwyl (1); } Serial.println ("CAP1188 gevind!"); }

leemte -lus () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~ uint8_t touched = cap.touched (); if (aangeraak == 0) {if ((ongeteken lank) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixels. Color (0, 255, 125)); }} anders {if ((ongeteken lank) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixels. Color (100, 0, 150)); }}

}

nietige colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~ // Raak ontslae van die kleur pixels.setPixelColor (currentPixel, c); pixels.setPixelColor (currentPixel - 1, pixels. Color (0, 0, 0)); pixels.show (); currentPixel ++; as (currentPixel == NUMPIXELS) {currentPixel = 0; pixels.setPixelColor (7, pixels. Color (0, 0, 0));

}

}

Toets dit en geniet dit! Soos u sien as u aan die C1 -tou raak, verander die kleur. (As dit nie die eerste keer is nie, ontkoppel u Arduino en koppel dit weer aan op u rekenaar.)

Stap 2: Stap 2: Voeg klank by

Met die gebruik van 'n handige handleiding het ek dit gemaak. Die tutoriaal is hieronder:

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

Tyd om jou gonser te gryp! Plaas die (-) van die zoemer in een van die GND-penne en die (+) in pen 10 ~

Dit is omtrent dit, nou is dit tyd om die kode weer uit te voer en die pragtige liedjie van Pirates of the Caribbean te hoor! Geniet nou lekker toets!

// Julia Emmink // Lig-, aanraak- en musiekkode vir die interaktiewe boom 2018-01-19 // Gemaak met die gebruik van die Adafruit Neopixel en Captive Touch (CAP1188) (moet geïnstalleer word) en die LED knipper sonder vertraging

// NEOPIXEL ~~~~~~~~~~~~~~~~~~~ insluit#

#definieer PIXELSPIN 6

#definieer NUMPIXELS 8 #definieer KALIBRASIE TYD 20000

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

ongetekende lang pixelsInterval = 500; // die tyd wat ons moet wag

ongetekende lang colorWipePreviousMillis = 0; ongetekende lang theaterChasePreviousMillis = 0; ongetekende lang reënboogPreviousMillis = 0; ongetekende lang reënboogCyclesPreviousMillis = 0;

int theaterChaseQ = 0;

uint16_t currentPixel = 0; // op watter pixel werk ons

// MUSIEK ~~~~~~~~~~~~~~~~~~~~~~~

const int gonser = 10; // Definieer pen 10, kan ander PWM -penne (5, 6 of 9) gebruik // Let op dat penne 3 en 11 nie gebruik kan word by die gebruik van die toonfunksie in Arduino Uno const int songspeed = 1.5; // Verander na 2 vir 'n stadiger weergawe van die liedjie, hoe groter die getal, hoe stadiger die liedjie // *************************** ************** #define NOTE_C4 262 // Definieer noot frekwensie #definieer NOTE_D4 294 #definieer NOTE_E4 330 #definieer NOTE_F4 349 #definieer NOTE_G4 392 #definieer NOTE_A4 440 #definieer NOTE_B4 494 #definieer NOTE_C5 523 #definieer NOTE_D5 587 #definieer NOTE_E5 659 #definieer NOTE_F5 698 #definieer NOTE_G5 784 #definieer NOTE_A5 880 #definieer NOTE_B5 988 // *********************** ****************** int note = {// Nota van die liedjie, 0 is 'n rus/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 duur = { / /duur van elke noot (in ms) Kwartnoot is ingestel op 250 ms 125, 125, 250, 125, 125, 125, 250, 125, 125, 125, 125, 125, 125, 125, 125, 125, 375, 125};

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

#include #include #include

// Herstelpen word gebruik vir I2C of SPI

#definieer CAP1188_RESET 9

// CS -pen word gebruik vir sagteware of hardeware SPI

#definieer CAP1188_CS 10

// Dit word gedefinieer vir sagteware SPI, vir hardeware SPI, kyk na u

// bord se SPI -penne in die Arduino -dokumentasie #definieer CAP1188_MOSI 11 #definieer CAP1188_MISO 12 #definieer CAP1188_CLK 13

// Gebruik I2C, geen resetpen nie!

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

ongeldige opstelling () {

// MUSIEK ~~~~~~~~~~~~~~~~~~~~~~ vir (int i = 0; i <203; i ++) {// 203 is die totale aantal musieknotas in die lied int wag = duur * songspeed; toon (gonser, note , wag); // toon (pen, frekwensie, duur);} // vertraging word gebruik sodat dit nie na die volgende lus gaan voordat die toon klaar is nie // U kan op reset op Arduino klik om die liedjie weer te speel // NEOPIXEL ~~~ ~~~~~~~~~~~~~~~~ currentPixel = 0; pixels.begin (); // Dit begin die NeoPixel -biblioteek. pixels.show (); // Dit stuur die opgedateerde pixelkleur na die hardeware.

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

Serial.begin (300); Serial.println ("CAP1188 toets!"); as (! cap.begin ()) {Serial.println ("CAP1188 nie gevind nie"); terwyl (1); } Serial.println ("CAP1188 gevind!");

}

leemte -lus () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~ uint8_t touched = cap.touched (); if (aangeraak == 0) {if ((ongeteken lank) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixels. Color (0, 255, 125)); }} anders {if ((ongeteken lank) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixels. Color (100, 0, 150)); }}

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

colorWipePreviousMillis = millis (); colorWipe (pixels. Color (0, 255, 125)); }} anders {if ((ongeteken lank) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (pixels. Color (100, 0, 150)); }}

vertraag (wag);

}

}

nietige colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~ // Raak ontslae van die kleur pixels.setPixelColor (currentPixel, c); pixels.setPixelColor (currentPixel-1, pixels. Color (0, 0, 0)); pixels.show (); currentPixel ++; as (currentPixel == NUMPIXELS) {currentPixel = 0; pixels.setPixelColor (7, pixels. Color (0, 0, 0));

}

}

Stap 3: Bykomende stap: maak die stomp 'Arduino gereed'

Bykomende stap: maak die stomp 'Arduino gereed'
Bykomende stap: maak die stomp 'Arduino gereed'
Bykomende stap: maak die stomp 'Arduino gereed'
Bykomende stap: maak die stomp 'Arduino gereed'
Bykomende stap: maak die stomp 'Arduino gereed'
Bykomende stap: maak die stomp 'Arduino gereed'

As u besluit om 'n boomstomp te gebruik, moet u die volgende doen.

  • Kry 'n boomstomp (ek het een gratis van 'n ou kersboom gekry)
  • Meet u Arduino en kyk hoe u die bedrading in die boomstomp wil hê
  • Maak die stomp hol (ek het 'n boormasjien van die skool af gebruik)
  • Skuur die ruwe kante af
  • Voeg prettige klein besonderhede by

Besonderhede wat ek bygevoeg het, was 'n klein logo wat ek met 'n lasersnyer gemaak het. Ek het ook al my elektronika binne op 'n stok in my boom gestapel en ek het opgestopte vulsel aan die buitekant bygevoeg om die lig deur te laat en die ekstra sagte sagtheid te gee.

Aanbeveel: