Arduino MusicStump: Light, Captive Touch и зумер: 3 стъпки
Arduino MusicStump: Light, Captive Touch и зумер: 3 стъпки
Anonim
Arduino MusicStump: Леко, задържащо докосване и зумер
Arduino MusicStump: Леко, задържащо докосване и зумер

Интерактивно дърво с LED пръстен в горната част, зумер за издаване на звук и вътрешен сензор за докосване, който променя цвета, докато го докосвате. За да направите това забавно малко нещо, ще ви трябва следното:

Електроника:- 1x Arduino Uno

- 15x кабели

- 1x поялник с кръгъл накрайник

- 1x Adafruit 8-клавишен задържащ сензор (CAP1188)

- 1x захранващ кабел Arduino

- 1x 8 LED пръстен

- 1x зумер

- 1x пистолет за горещо лепило

-Изтеглете библиотеката на CAP1188

- Изтеглете библиотеката на Adafruit Neopixel

Екстра (корпус):

- 1x пън

- 1x пръчка за вътре

- дървена чиния, за да поставите всичко на/вътре

- Пълнени пълнежи отвън

Можете също да използвате нещо друго като навън, бъдете креативни!

Сега нека започнем…

Стъпка 1: Стъпка 1: LED пръстен с Captive Touch

Стъпка 1: LED пръстен с Captive Touch
Стъпка 1: LED пръстен с Captive Touch

Сега, ако имате късмет, вашият LED пръстен вече има прикрепени щифтове към него. В противен случай е време за запояване!

Нещата, които ще използваме за този проект, са:

- DI (Цифров вход, щифт 6 ~

- 5V (за захранване, 5V щифт)

- GND (земята, щифт GND)

Това е светодиодният пръстен засега.

Поставете го в макет и свържете всичко, както следва: SDA/MISO в пин (аналогов вход) A4SCK в пин (аналогов вход) A5VIN в (захранване) 5VGND в GND pin1x кабел в C1 (на самото докосване на Captive)

Сега за тестване качете следния код на вашия Arduino:

// Julia Emmink // Код за светлина и докосване за интерактивното дърво 19 /// Изработен с помощта на Adafruit Neopixel и Adafruit задържащо докосване (CAP1188) (предстои да бъде инсталиран) и светодиодът мига без забавяне

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

#включва

#define PIXELSPIN 6 // Където сте свързали LED пръстена

#define NUMPIXELS 8 // Количеството светодиоди, които са на пръстена ви #define CALIBRATIONTIME 20000

Adafruit_NeoPixel пиксели = Adafruit_NeoPixel (NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);

без знаци дълги пиксели Интервал = 500; // времето, което трябва да изчакаме

unsigned long colorWipePreviousMillis = 0; без подпис дълъг театърChasePreviousMillis = 0; беззнакова дълга дъгаPreviousMillis = 0; без знак дълга дъгаCyclesPreviousMillis = 0;

int TheaterChaseQ = 0;

uint16_t currentPixel = 0; // с какъв пиксел работим

// ДОКЛАВАНЕ ~~~~~~~~~~~~~~~~~~~~~~

#включи #включи #включи

// Reset Pin се използва за I2C или SPI

#дефинирайте CAP1188_RESET 9

// CS щифт се използва за софтуерен или хардуерен SPI

#дефинирайте CAP1188_CS 10

// Те са дефинирани за софтуерен SPI, за хардуерен SPI, проверете вашия

// SPI щифтове на платката в документацията на Arduino #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Използвайте I2C, без щифт за нулиране!

Adafruit_CAP1188 капачка = Adafruit_CAP1188 ();

void setup () {

// NEOPIXEL ~~~~~~~~~~~~~~~~~ currentPixel = 0; pixels.begin (); // Това инициализира библиотеката NeoPixel. pixels.show (); // Това изпраща актуализирания цвят на пиксела към хардуера.

// ДОКОСНЕ ~~~~~~~~~~~~~~~~~~~~~~

Serial.begin (300); Serial.println ("CAP1188 тест!");

if (! cap.begin ()) {

Serial.println ("CAP1188 не е намерен"); докато (1); } Serial.println ("CAP1188 намерен!"); }

void loop () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~ uint8_t докоснат = cap.touched (); if (докоснато == 0) {if ((беззнаково дълго) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (пиксели. Цвят (0, 255, 125)); }} else {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (пиксели. Цвят (100, 0, 150)); }}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ // Отстранява цветните пиксели.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));

}

}

Тествайте го и се забавлявайте! Както виждате, когато докоснете кабела C1, цветът се променя. (Ако не се случи за първи път, просто изключете вашия Arduino и го включете отново в компютъра си.)

Стъпка 2: Стъпка 2: Добавяне на звук

С помощта на удобен урок направих това. Урокът е по -долу:

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

Време е да вземете своя зумер! Поставете (-) на зумера в един от щифтовете на GND и (+) в щифт 10 ~

Това е всичко, сега е време да стартирате кода отново и да чуете тази прекрасна мелодия от „Карибски пирати“! Сега се забавлявайте с тестването!

// Julia Emmink // Код за светлина, докосване и музика за интерактивното дърво 2018-01-19 // Изработен с помощта на Adapruit Neopixel и Captive Touch (CAP1188) (предстои да бъде инсталиран) и светодиодът мига без забавяне

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

#дефинирайте PIXELSPIN 6

#дефинирайте NUMPIXELS 8 #дефинирайте CALIBRATIONTIME 20000

Adafruit_NeoPixel пиксели = Adafruit_NeoPixel (NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);

без знаци дълги пиксели Интервал = 500; // времето, което трябва да изчакаме

unsigned long colorWipePreviousMillis = 0; без подпис дълъг театърChasePreviousMillis = 0; беззнакова дълга дъгаPreviousMillis = 0; без знак дълга дъгаCyclesPreviousMillis = 0;

int TheaterChaseQ = 0;

uint16_t currentPixel = 0; // с какъв пиксел работим

// МУЗИКА ~~~~~~~~~~~~~~~~~~~~~~

const int зумер = 10; // Определете щифт 10, можете да използвате други PWM щифтове (5, 6 или 9) // Забележки щифтове 3 и 11 не могат да се използват, когато се използва тоналната функция в Arduino Uno const int songspeed = 1,5; // Променете на 2 за по -бавна версия на песента, колкото по -голям е номерът, толкова по -бавна е песента // *************************** ************** #define NOTE_C4 262 // Дефиниране на честотата на бележката #define NOTE_D4 294 #define NOTE_E4 330 #define NOTE_F4 349 #define NOTE_G4 392 #define NOTE_A4 440 #define NOTE_B4 494 #deteine NOTE_C5 523 #дефинирай ЗАБЕЛЕЖКА_D5 587 #дефинирай ЗАБЕЛЕЖКА_E5 659 #дефинирай ЗАБЕЛЕЖКА_F5 698 #дефинирай ЗАБЕЛЕЖКА_G5 784 #дефинирай ЗАБЕЛЕЖКА_A5 880 #дефинирай ЗАБЕЛЕЖКА_B5 988 // *********************** ****************** int бележки = {// Бележка на песента, 0 е почивка/пулс 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 продължителност = { / /продължителност на всяка бележка (в ms) Quarter Note е зададена на 250 ms 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 375, 125};

// ДОКЛАВАНЕ ~~~~~~~~~~~~~~~~~~~~~~

#включи #включи #включи

// Reset Pin се използва за I2C или SPI

#дефинирайте CAP1188_RESET 9

// CS щифт се използва за софтуерен или хардуерен SPI

#дефинирайте CAP1188_CS 10

// Те са дефинирани за софтуерен SPI, за хардуерен SPI, проверете вашия

// SPI щифтове на платката в документацията на Arduino #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Използвайте I2C, без щифт за нулиране!

Adafruit_CAP1188 капачка = Adafruit_CAP1188 ();

void setup () {

// МУЗИКА ~~~~~~~~~~~~~~~~~~~~~ for (int i = 0; i <203; i ++) {// 203 е общият брой музикални ноти в песента int чакане = продължителност * скорост на песента; тон (зумер, бележки , изчакайте); // тон (пин, честота, продължителност);} // се използва забавяне, така че да не премине към следващия цикъл преди тона да е завършил // Можете да щракнете върху нулиране на Arduino, за да повторите песента // NEOPIXEL ~~~ ~~~~~~~~~~~~~~~ currentPixel = 0; pixels.begin (); // Това инициализира библиотеката NeoPixel. pixels.show (); // Това изпраща актуализирания цвят на пиксела към хардуера.

// ДОКОСНЕ ~~~~~~~~~~~~~~~~~~~~~~

Serial.begin (300); Serial.println ("CAP1188 тест!"); if (! cap.begin ()) {Serial.println ("CAP1188 не е намерен"); докато (1); } Serial.println ("CAP1188 намерен!");

}

void loop () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~ uint8_t докоснат = cap.touched (); if (докоснато == 0) {if ((беззнаково дълго) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (пиксели. Цвят (0, 255, 125)); }} else {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (пиксели. Цвят (100, 0, 150)); }}

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

colorWipePreviousMillis = millis (); colorWipe (пиксели. Цвят (0, 255, 125)); }} else {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (пиксели. Цвят (100, 0, 150)); }}

забавяне (изчакване);

}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ // Отстранява цветните пиксели.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));

}

}

Стъпка 3: Допълнителна стъпка: Направете пъна „Arduino готов“

Допълнителна стъпка: Направете пъна „Arduino готов“
Допълнителна стъпка: Направете пъна „Arduino готов“
Допълнителна стъпка: Направете пъна „Arduino готов“
Допълнителна стъпка: Направете пъна „Arduino готов“
Допълнителна стъпка: Направете пъна „Arduino готов“
Допълнителна стъпка: Направете пъна „Arduino готов“

Ако все пак решите да използвате пън, трябва да направите следното.

  • Вземете пън (взех един от старо коледно дърво безплатно)
  • Измерете вашия Arduino и вижте как искате да имате окабеляването в пъна
  • Издълбайте пънчето (използвах бормашина от училище)
  • Изстържете грубите ръбове
  • Добавете забавни малки детайли

Детайлите, които добавих, бяха малко лого, което направих с лазерен нож. Също така сложих цялата си електроника вътре на пръчка вътре в дървото си и добавих пълнеж от препарирани животни отвън, за да проникне светлината и да придаде на тази малка допълнителна мекота.

Препоръчано: