Arduino MusicStump: свет, захватывающее касание и зуммер: 3 шага
Arduino MusicStump: свет, захватывающее касание и зуммер: 3 шага
Anonim
Arduino MusicStump: свет, захватывающее касание и зуммер
Arduino MusicStump: свет, захватывающее касание и зуммер

Интерактивное дерево со светодиодным кольцом наверху, зуммером для воспроизведения звука и встроенным сенсорным датчиком, меняющим цвет при прикосновении. Чтобы сделать эту забавную вещицу, вам понадобится следующее:

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

- 15 кабелей

- 1x паяльник с круглым наконечником

- 1x Adafruit 8-клавишный захватывающий сенсор (CAP1188)

- 1x кабель питания Arduino

- 1x 8 светодиодное кольцо

- 1x зуммер

- 1x термоклеевой пистолет

- Загрузите библиотеку CAP1188

- Загрузите библиотеку Adafruit Neopixel

Экстра (оболочка):

- 1x пень

- 1x палка для внутренней части

- деревянная тарелка для размещения всего на / в

- Чучела животных снаружи

Вы также можете использовать что-то еще снаружи, проявите творческий подход!

А теперь начнем …

Шаг 1: Шаг 1: светодиодное кольцо с функцией Captive Touch

Шаг 1. Светодиодное кольцо с функцией Captive Touch
Шаг 1. Светодиодное кольцо с функцией Captive Touch

Теперь, если вам повезло, к вашему светодиодному кольцу уже прикреплены контакты. Если нет пора паять!

В этом проекте мы будем использовать следующие вещи:

- DI (цифровой вход, контакт 6 ~

- 5 В (для питания, вывод 5 В)

- GND (земля, контакт GND)

На данный момент это светодиодное кольцо. А теперь о пленном прикосновении.

Поместите его в макет и подключите все следующим образом: SDA / MISO в контакте (аналоговый вход) A4SCK в контакте (аналоговый вход) A5VIN в (питание) 5VGND в заземлении, контакт 1x кабель в C1 (на самом Captive touch)

Теперь для тестирования загрузите следующий код на ваш Arduino:

// Julia Emmink // Код подсветки и сенсорного ввода для интерактивного дерева 19 /// Сделано с использованием сенсорного экрана Adafruit Neopixel и Adafruit captive touch (CAP1188) (устанавливается), а светодиод мигает без задержки

// НЕОПИКСЕЛЬ ~~~~~~~~~~~~~~~~~~

#включают

#define PIXELSPIN 6 // Куда вы подключили светодиодное кольцо

#define NUMPIXELS 8 // Количество светодиодов на вашем кольце #define CALIBRATIONTIME 20000

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

беззнаковые длинные пикселиInterval = 500; // время, которое нам нужно подождать

беззнаковый длинный colorWipePreviousMillis = 0; беззнаковый длинный theatreChasePreviousMillis = 0; беззнаковая длинная радугаPreviousMillis = 0; беззнаковый длинный rainbowCyclesPreviousMillis = 0;

int TheaterChaseQ = 0;

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

// КАСАНИЕ ~~~~~~~~~~~~~~~~~~~~~

#include #include #include

// Пин сброса используется для I2C или SPI

#define CAP1188_RESET 9

// Вывод CS используется для программного или аппаратного SPI

#define CAP1188_CS 10

// Они определены для программного SPI, для аппаратного SPI, проверьте свой

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

// Используйте I2C, без вывода сброса!

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

void setup () {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ currentPixel = 0; pixel.begin (); // Это инициализирует библиотеку NeoPixel. pixel.show (); // Это отправляет обновленный цвет пикселя на оборудование.

// КАСАНИЕ ~~~~~~~~~~~~~~~~~~~~~~

Serial.begin (300); Serial.println («Тест CAP1188!»);

if (! cap.begin ()) {

Serial.println («CAP1188 не найден»); в то время как (1); } Serial.println («CAP1188 найден!»); }

void loop () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~ uint8_t touched = cap.touched (); если (прикоснулся == 0) {если ((длинное без знака) (millis () - colorWipePreviousMillis)> = pixelInterval) {colorWipePreviousMillis = millis (); colorWipe (пикселей. Color (0, 255, 125)); }} еще {если ((длинное без знака) (миллис () - colorWipePreviousMillis)> = пикселейИнтервал) {colorWipePreviousMillis = millis (); colorWipe (пикселей. Цвет (100, 0, 150)); }}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ // Избавляется от цветных пикселей. SetPixelColor (currentPixel, c); пикселей.setPixelColor (currentPixel - 1, пикселей. Color (0, 0, 0)); pixel.show (); currentPixel ++; если (текущийПиксель == ЧИСЛО) {текущийПиксель = 0; пикселей.setPixelColor (7, пикселей. Color (0, 0, 0));

}

}

Протестируйте и получайте удовольствие! Как видите, при прикосновении к шнуру C1 цвет меняется. (Если это не получается в первый раз, просто отключите Arduino и снова подключите его к компьютеру.)

Шаг 2: Шаг 2: Добавление звука

Я сделал это с помощью удобного учебника. Учебник приведен ниже:

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

Пора брать зуммер! Поместите (-) зуммера в один из контактов GND и (+) в контакт 10 ~

Вот и все, пора снова запустить код и услышать эту прекрасную мелодию Пиратов Карибского моря! А теперь веселого тестирования!

// Юлия Эмминк // Световой, сенсорный и музыкальный код для интерактивного дерева 19.01.2018 // Сделано с использованием Adafruit Neopixel и Captive Touch (CAP1188) (устанавливается), а светодиод мигает без задержки

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ # включить

#define PIXELSPIN 6

#define NUMPIXELS 8 #define ВРЕМЯ КАЛИБРОВКИ 20000

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

беззнаковые длинные пикселиInterval = 500; // время, которое нам нужно подождать

беззнаковый длинный colorWipePreviousMillis = 0; беззнаковый длинный theatreChasePreviousMillis = 0; беззнаковая длинная радугаPreviousMillis = 0; беззнаковый длинный rainbowCyclesPreviousMillis = 0;

int TheaterChaseQ = 0;

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

// МУЗЫКА ~~~~~~~~~~~~~~~~~~~~~~

const int buzzer = 10; // Определить вывод 10, можно использовать другие выводы ШИМ (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 #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 = {// Нота песни, 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 duration = {/ / длительность каждой ноты (в мс) Четвертная нота установлена на 250 мс 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 375, 125};

// КАСАНИЕ ~~~~~~~~~~~~~~~~~~~~~~

#include #include #include

// Пин сброса используется для I2C или SPI

#define CAP1188_RESET 9

// Вывод CS используется для программного или аппаратного SPI

#define CAP1188_CS 10

// Они определены для программного SPI, для аппаратного SPI, проверьте свой

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

// Используйте I2C, без вывода сброса!

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

void setup () {

// МУЗЫКА ~~~~~~~~~~~~~~~~~~~~~ for (int i = 0; i <203; i ++) {// 203 - общее количество нот в песня int wait = duration * songpeed; тон (зуммер, ноты , подождите); // tone (pin, frequency, duration);} // используется задержка, чтобы не переходить к следующему циклу до того, как звук закончится // Вы можете нажать кнопку сброса на Arduino, чтобы воспроизвести песню // NEOPIXEL ~~~ ~~~~~~~~~~~~~~~ currentPixel = 0; pixel.begin (); // Это инициализирует библиотеку NeoPixel. pixel.show (); // Это отправляет обновленный цвет пикселя на оборудование.

// КАСАНИЕ ~~~~~~~~~~~~~~~~~~~~~

Serial.begin (300); Serial.println («Тест CAP1188!»); если (! cap.begin ()) {Serial.println ("CAP1188 не найден"); в то время как (1); } Serial.println («CAP1188 найден!»);

}

void loop () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~ uint8_t touched = cap.touched (); если (прикоснулся == 0) {если ((длинное без знака) (millis () - colorWipePreviousMillis)> = pixelInterval) {colorWipePreviousMillis = millis (); colorWipe (пикселей. Color (0, 255, 125)); }} еще {если ((беззнаковое длинное) (миллис () - colorWipePreviousMillis)> = пикселейИнтервал) {colorWipePreviousMillis = millis (); colorWipe (пикселей. Цвет (100, 0, 150)); }}

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

colorWipePreviousMillis = millis (); colorWipe (пикселей. Color (0, 255, 125)); }} еще {если ((беззнаковое длинное) (миллис () - colorWipePreviousMillis)> = пикселейИнтервал) {colorWipePreviousMillis = millis (); colorWipe (пикселей. Цвет (100, 0, 150)); }}

задержка (ждать);

}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ // Избавляется от цветных пикселей. SetPixelColor (currentPixel, c); пикселей.setPixelColor (currentPixel-1, pixels. Color (0, 0, 0)); pixel.show (); currentPixel ++; если (текущийПиксель == ЧИСЛО) {текущийПиксель = 0; пикселей.setPixelColor (7, пикселей. Color (0, 0, 0));

}

}

Шаг 3: Дополнительный шаг: подготовка пня к Arduino

Дополнительный шаг: подготовка пня к Arduino
Дополнительный шаг: подготовка пня к Arduino
Дополнительный шаг: подготовка пня к Arduino
Дополнительный шаг: подготовка пня к Arduino
Дополнительный шаг: подготовка пня к Arduino
Дополнительный шаг: подготовка пня к Arduino

Если вы все же решили использовать пень, вам необходимо сделать следующее.

  • Получите пень (получил бесплатно от старой елки)
  • Измерьте свой Arduino и посмотрите, как вы хотите, чтобы проводка была в пне
  • Выдолбить культю (я из школы пользовался дрелью)
  • Отшлифуйте грубые края
  • Добавьте забавные мелкие детали

Я добавил небольшой логотип, который я сделал с помощью лазерного резака. Я также сложил всю свою электронику внутри на палке внутри своего дерева и добавил чучело животных снаружи, чтобы пропускать свет и придать небольшую дополнительную мягкость.