Mục lục:

Arduino MusicStump: Light, Captive Touch và Buzzer: 3 bước
Arduino MusicStump: Light, Captive Touch và Buzzer: 3 bước

Video: Arduino MusicStump: Light, Captive Touch và Buzzer: 3 bước

Video: Arduino MusicStump: Light, Captive Touch và Buzzer: 3 bước
Video: Learn Internet Of Things On Cloud in 3 Hours | AWS IoT | Azure IoT For Beginners | Great Learning 2024, Tháng mười một
Anonim
Arduino MusicStump: Light, Captive Touch và một Buzzer
Arduino MusicStump: Light, Captive Touch và một Buzzer

Một cây tương tác với vòng LED ở trên cùng, một bộ rung để tạo ra âm thanh và một cảm biến cảm ứng cố định bên trong có thể thay đổi màu sắc khi bạn chạm vào nó. Để tạo ra điều thú vị nhỏ này, bạn sẽ cần những thứ sau:

Điện tử: - 1x Arduino Uno

- 15x cáp

- 1x mỏ hàn có đầu tròn

- 1x cảm ứng cố định 8 phím Adafruit (CAP1188)

- 1x cáp nguồn Arduino

- 1x 8 vòng LED

- 1x Buzzer

- 1x súng bắn keo nóng

- Tải xuống thư viện của CAP1188

- Tải xuống thư viện của Adafruit Neopixel

Thêm (vỏ bọc):

- 1 gốc cây

- 1x gậy cho bên trong

- đĩa gỗ để đặt tất cả vào / vào

- Thú nhồi bông cho bên ngoài

Bạn cũng có thể sử dụng một cái gì đó khác như bên ngoài, hãy sáng tạo!

Bây giờ chúng ta hãy bắt đầu…

Bước 1: Bước 1: Vòng LED với cảm ứng cố định

Bước 1: Vòng LED với cảm ứng cố định
Bước 1: Vòng LED với cảm ứng cố định

Bây giờ nếu bạn may mắn, vòng LED của bạn đã có các chân gắn vào nó. Nếu không nó là thời gian để hàn!

Những thứ chúng tôi sẽ sử dụng cho dự án này là:

- DI (Đầu vào kỹ thuật số, chân 6 ~

- 5V (cho nguồn, chân 5V)

- GND (Mặt đất, chân GND)

Đó là vòng đèn LED bây giờ. Bây giờ là cảm ứng bị giam giữ.

Đặt nó vào một breadboard và kết nối mọi thứ như sau: SDA / MISO ở chân (đầu vào tương tự) A4SCK ở chân (đầu vào tương tự) A5VIN trong (nguồn) 5VGND trong cáp GND pin1x ở C1 (trên chính cảm ứng Captive)

Bây giờ để kiểm tra, hãy tải mã sau lên Arduino của bạn:

// Julia Emmink // Mã ánh sáng và cảm ứng cho cây tương tác 19 /// Được tạo bằng cách sử dụng cảm ứng nuôi nhốt Adafruit Neopixel và Adafruit (CAP1188) (sẽ được cài đặt) và đèn LED nhấp nháy không chậm trễ

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

#bao gồm

#define PIXELSPIN 6 // Nơi bạn đã kết nối Vòng LED

#define NUMPIXELS 8 // Số lượng đèn LED trên chuông của bạn #define CALIBRATIONTIME 20000

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

pixel dài không dấuInterval = 500; // thời gian chúng ta cần đợi

màu dài không dấuWipePreviousMillis = 0; rạp hát dài không dấuChasePreviousMillis = 0; cầu vồng dài không dấuPreviousMillis = 0; cầu vồng dài không dấuCyclesPreviousMillis = 0;

int TheaterChaseQ = 0;

uint16_t currentPixel = 0; // chúng ta đang hoạt động trên pixel nào

// CHẠM ~~~~~~~~~~~~~~~~~~~~~~~

#include #include #include

// Đặt lại Pin được sử dụng cho I2C hoặc SPI

#define CAP1188_RESET 9

// Chân CS được sử dụng cho SPI phần mềm hoặc phần cứng

#define CAP1188_CS 10

// Chúng được xác định cho SPI phần mềm, cho SPI phần cứng, hãy kiểm tra

// chân SPI của bo mạch trong tài liệu Arduino #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Sử dụng I2C, không có ghim đặt lại!

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

void setup () {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~~ currentPixel = 0; pixel.begin (); // Thao tác này khởi tạo thư viện NeoPixel. pixel.show (); // Điều này sẽ gửi màu pixel được cập nhật đến phần cứng.

// CHẠM ~~~~~~~~~~~~~~~~~~~~~~~

Serial.begin (300); Serial.println ("Thử nghiệm CAP1188!");

if (! cap.begin ()) {

Serial.println ("Không tìm thấy CAP1188"); trong khi (1); } Serial.println ("Đã tìm thấy CAP1188!"); }

void loop () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~~~ uint8_t touch = cap.touched (); if (touch == 0) {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelInterval) {colorWipePreviousMillis = millis (); colorWipe (pixel. Color (0, 255, 125)); }} else {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelInterval) {colorWipePreviousMillis = millis (); colorWipe (pixel. Color (100, 0, 150)); }}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~~ // Loại bỏ các pixel màu.setPixelColor (currentPixel, c); pixel.setPixelColor (currentPixel - 1, pixel. Color (0, 0, 0)); pixel.show (); currentPixel ++; if (currentPixel == NUMPIXELS) {currentPixel = 0; pixel.setPixelColor (7, pixel. Color (0, 0, 0));

}

}

Kiểm tra nó và vui chơi! Như bạn thấy khi bạn chạm vào dây C1, màu sắc sẽ thay đổi. (Nếu đây không phải là lần đầu tiên, chỉ cần rút Arduino của bạn và cắm lại vào máy tính của bạn.)

Bước 2: Bước 2: Thêm âm thanh

Với việc sử dụng một hướng dẫn tiện dụng, tôi đã thực hiện điều này. Hướng dẫn dưới đây:

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

Đã đến lúc lấy buzzer của bạn! Đặt dấu (-) của bộ rung vào một trong các chân GND và dấu (+) vào chân 10 ~

Vậy là xong, giờ là lúc chạy lại mã và nghe giai điệu Cướp biển vùng Caribê đáng yêu đó! Bây giờ hãy thử nghiệm vui vẻ!

// Julia Emmink // Mã ánh sáng, cảm ứng và âm nhạc cho cây tương tác 2018-01-19 // Được tạo bằng việc sử dụng Adafruit Neopixel và Captive Touch (CAP1188) (sẽ được cài đặt) và đèn LED nhấp nháy không chậm trễ

// NEOPIXEL ~~~~~~~~~~~~~~~~~~~ # bao gồm

#define PIXELSPIN 6

#define NUMPIXELS 8 #define CALIBRATIONTIME 20000

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

pixel dài không dấuInterval = 500; // thời gian chúng ta cần đợi

màu dài không dấuWipePreviousMillis = 0; rạp hát dài không dấuChasePreviousMillis = 0; cầu vồng dài không dấuPreviousMillis = 0; cầu vồng dài không dấuCyclesPreviousMillis = 0;

int TheaterChaseQ = 0;

uint16_t currentPixel = 0; // chúng ta đang hoạt động trên pixel nào

// NHẠC ~~~~~~~~~~~~~~~~~~~~~~~

const int buzzer = 10; // Xác định chân 10, có thể sử dụng các chân PWM khác (5, 6 hoặc 9) // Lưu ý không thể sử dụng chân 3 và 11 khi sử dụng chức năng giai điệu trong Arduino Uno const int songspeed = 1.5; // Thay đổi thành 2 cho phiên bản chậm hơn của bài hát, số càng lớn thì bài hát càng chậm // *************************** ************** #define NOTE_C4 262 // Xác định tần suất ghi chú #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 = {// Lưu ý của bài hát, 0 là phần còn lại / xung 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 thời lượng = {/ / thời lượng của mỗi nốt (tính bằng mili giây) Ghi chú Quý được đặt thành 250 ms 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 375, 125};

// CHẠM ~~~~~~~~~~~~~~~~~~~~~~~

#include #include #include

// Đặt lại Pin được sử dụng cho I2C hoặc SPI

#define CAP1188_RESET 9

// Chân CS được sử dụng cho SPI phần mềm hoặc phần cứng

#define CAP1188_CS 10

// Chúng được xác định cho SPI phần mềm, cho SPI phần cứng, hãy kiểm tra

// chân SPI của bo mạch trong tài liệu Arduino #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// Sử dụng I2C, không có ghim đặt lại!

Adafruit_CAP1188 cap = Adafruit_CAP1188 ();

void setup () {

// MUSIC ~~~~~~~~~~~~~~~~~~~~~~~ for (int i = 0; i <203; i ++) {// 203 là tổng số nốt nhạc trong bài hát int wait = time * songspeed; âm điệu (buzzer, ghi chú , chờ đợi); // giai điệu (pin, tần số, thời lượng);} // độ trễ được sử dụng để nó không chuyển sang vòng lặp tiếp theo trước khi giai điệu kết thúc phát // Bạn có thể nhấp vào đặt lại trên Arduino để phát lại bài hát // NEOPIXEL ~~~ ~~~~~~~~~~~~~~~ currentPixel = 0; pixel.begin (); // Thao tác này khởi tạo thư viện NeoPixel. pixel.show (); // Điều này sẽ gửi màu pixel được cập nhật đến phần cứng.

// CHẠM ~~~~~~~~~~~~~~~~~~~~~~~

Serial.begin (300); Serial.println ("Thử nghiệm CAP1188!"); if (! cap.begin ()) {Serial.println ("Không tìm thấy CAP1188"); trong khi (1); } Serial.println ("Đã tìm thấy CAP1188!");

}

void loop () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~~~ uint8_t touch = cap.touched (); if (touch == 0) {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelInterval) {colorWipePreviousMillis = millis (); colorWipe (pixel. Color (0, 255, 125)); }} else {if ((unsigned long) (millis () - colorWipePreviousMillis)> = pixelInterval) {colorWipePreviousMillis = millis (); colorWipe (pixel. Color (100, 0, 150)); }}

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

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

trì hoãn (chờ đợi);

}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~~ // Loại bỏ các pixel màu.setPixelColor (currentPixel, c); pixel.setPixelColor (currentPixel-1, pixel. Color (0, 0, 0)); pixel.show (); currentPixel ++; if (currentPixel == NUMPIXELS) {currentPixel = 0; pixel.setPixelColor (7, pixel. Color (0, 0, 0));

}

}

Bước 3: Bước bổ sung: Chuẩn bị "Arduino Sẵn sàng"

Bước bổ sung: Làm cho gốc 'Sẵn sàng Arduino'
Bước bổ sung: Làm cho gốc 'Sẵn sàng Arduino'
Bước bổ sung: Làm cho gốc 'Sẵn sàng Arduino'
Bước bổ sung: Làm cho gốc 'Sẵn sàng Arduino'
Bước bổ sung: Làm cho gốc 'Sẵn sàng Arduino'
Bước bổ sung: Làm cho gốc 'Sẵn sàng Arduino'

Nếu bạn quyết định sử dụng một gốc cây, bạn phải làm như sau.

  • Nhận một gốc cây (Tôi đã nhận một gốc cây Giáng sinh cũ miễn phí)
  • Đo Arduino của bạn và xem bạn muốn đi dây như thế nào trong gốc cây
  • Làm rỗng gốc cây (tôi đã sử dụng một máy khoan từ trường học)
  • Chà nhám các cạnh thô
  • Thêm các chi tiết nhỏ thú vị

Chi tiết tôi đã thêm là một logo nhỏ mà tôi đã làm bằng máy cắt laser. Tôi cũng xếp tất cả các thiết bị điện tử bên trong vào một cái que bên trong cây của mình và tôi thêm thú nhồi bông ở bên ngoài để cho ánh sáng xuyên qua và tạo thêm độ mềm mại nhỏ bé đó.

Đề xuất: