Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Pohon interaktif dengan cincin LED di bagian atas, bel untuk mengeluarkan suara, dan sensor sentuh di dalam yang mengubah warna saat Anda menyentuhnya. Untuk membuat hal kecil yang menyenangkan ini, Anda memerlukan yang berikut ini:
Elektronik:- 1x Arduino Uno
- 15x kabel
- 1x besi solder dengan ujung bulat
- 1x Adafruit 8-key captive touch (CAP1188)
- 1x kabel daya Arduino
- 1x8 cincin LED
- 1x Buzzer
- 1x pistol lem panas
- Unduh perpustakaan CAP1188
- Unduh perpustakaan Adafruit Neopixel
Ekstra (casing):
- 1x tunggul pohon
- 1x tongkat untuk bagian dalam
- piring kayu untuk meletakkan semuanya di/dalam
- Isian binatang untuk bagian luar
Anda juga dapat menggunakan sesuatu yang lain sebagai luar, menjadi kreatif!
Sekarang mari kita mulai…
Langkah 1: Langkah 1: Cincin LED Dengan Captive Touch
Sekarang jika Anda beruntung, cincin LED Anda sudah memiliki pin yang terpasang padanya. Jika tidak, saatnya untuk menyolder!
Hal-hal yang akan kita gunakan untuk proyek ini adalah:
- DI (Input digital, pin 6~
- 5V (untuk daya, pin 5V)
- GND (tanah, pin GND)
Itulah cincin LED untuk saat ini. Sekarang sentuhan menawan.
Letakkan di papan tempat memotong roti dan sambungkan semuanya sebagai berikut: SDA/MISO di pin (analog in) A4SCK di pin (analog in) A5VIN di (daya) 5VGND di kabel pin1x GND di C1 (di Captive touch itu sendiri)
Sekarang untuk menguji unggah kode berikut ke Arduino Anda:
// Julia Emmink// Cahaya dan kode sentuh untuk pohon interaktif 19/// Dibuat dengan menggunakan Adafruit Neopixel dan Adafruit captive touch (CAP1188) (akan dipasang) dan LED berkedip tanpa penundaan
// NEOPIXEL ~~~~~~~~~~~~~~~~~~
#termasuk
#define PIXELSPIN 6 // Di mana Anda menghubungkan Cincin LED
#define NUMPIXELS 8 //Jumlah LED yang ada di cincin Anda #define CALIBRATIONTIME 20000
Adafruit_NeoPixel piksel = Adafruit_NeoPixel(NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);
piksel panjang yang tidak ditandatanganiInterval = 500; // waktu yang kita butuhkan untuk menunggu
unsigned long colorWipePreviousMillis = 0; teater panjang yang tidak ditandatanganiChasePreviousMillis = 0; unsigned long rainbowPreviousMillis = 0; unsigned long rainbowCyclesPreviousMillis = 0;
int theaterChaseQ = 0;
uint16_t currentPixel = 0;// piksel apa yang kita operasikan
// SENTUH ~~~~~~~~~~~~~~~~~~~~~~
#sertakan #sertakan #sertakan
// Reset Pin digunakan untuk I2C atau SPI
#define CAP1188_RESET 9
// Pin CS digunakan untuk SPI perangkat lunak atau perangkat keras
#menentukan CAP1188_CS 10
// Ini ditentukan untuk SPI perangkat lunak, untuk SPI perangkat keras, periksa
// pin SPI board dalam dokumentasi Arduino #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13
// Gunakan I2C, tidak ada pin reset!
Adafruit_CAP1188 tutup = Adafruit_CAP1188();
batalkan pengaturan() {
// NEOPIXEL ~~~~~~~~~~~~~~~~~~ currentPixel = 0; piksel.mulai(); // Ini menginisialisasi perpustakaan NeoPixel. piksel.tampilkan(); // Ini mengirimkan warna piksel yang diperbarui ke perangkat keras.
// SENTUH ~~~~~~~~~~~~~~~~~~~~~~
Serial.begin(300); Serial.println("Uji CAP1188!");
if (!cap.begin()) {
Serial.println("CAP1188 tidak ditemukan"); sementara (1); } Serial.println("CAP1188 ditemukan!"); }
lingkaran kosong () {
// SENTUH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~~~~ uint8_t menyentuh = cap.touched(); if (disentuh == 0) { if ((unsigned long)(millis() - colorWipePreviousMillis) >= pixelsInterval) { colorWipePreviousMillis = millis(); colorWipe(piksel. Warna (0, 255, 125)); } } else { if ((unsigned long)(millis() - colorWipePreviousMillis) >= pixelsInterval) { colorWipePreviousMillis = millis(); colorWipe(piksel. Warna(100, 0, 150)); } }
}
void colorWipe(uint32_t c) {
// NEOPIXEL ~~~~~~~~~~~~~~~~~~ // Menghilangkan piksel warna.setPixelColor(currentPixel, c); piksel.setPixelColor(Pixel saat ini - 1, piksel. Warna (0, 0, 0)); piksel.tampilkan(); saat iniPixel++; if (currentPixel == NUMPIXELS) { currentPixel = 0; piksel.setPixelColor(7, piksel. Warna (0, 0, 0));
}
}
Uji dan bersenang-senanglah! Seperti yang Anda lihat saat Anda menyentuh kabel C1 warnanya berubah. (Jika bukan pertama kali, cabut Arduino Anda dan pasang kembali ke komputer Anda.)
Langkah 2: Langkah 2: Menambahkan Suara
Dengan menggunakan tutorial praktis saya membuat ini. Tutorialnya ada di bawah ini:
github.com/xitangg/-Pirates-of-the-Caribbe…
Saatnya ambil buzzer Anda! Pasang (-) buzzer di salah satu pin GND dan (+) di pin 10~
Itu saja, sekarang saatnya untuk menjalankan kode lagi dan dengarkan lagu Pirates of the Caribbean yang indah itu! Sekarang bersenang-senang pengujian!
// Julia Emmink// Cahaya, sentuhan dan kode musik untuk pohon interaktif 2018-01-19// Dibuat dengan menggunakan Adafruit Neopixel dan Captive Touch (CAP1188) (akan dipasang) dan LED berkedip tanpa penundaan
// NEOPIXEL ~~~~~~~~~~~~~~~~~~#include
#define PIXELSPIN 6
#define NUMPIXELS 8 #define CALIBRATIONTIME 20000
Adafruit_NeoPixel piksel = Adafruit_NeoPixel(NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);
piksel panjang yang tidak ditandatanganiInterval=500; // waktu yang kita butuhkan untuk menunggu
unsigned long colorWipePreviousMillis=0; teater panjang yang tidak ditandatanganiChasePreviousMillis=0; unsigned long rainbowPreviousMillis=0; unsigned long rainbowCyclesPreviousMillis=0;
int theaterChaseQ = 0;
uint16_t currentPixel = 0;// piksel apa yang kita operasikan
// MUSIK ~~~~~~~~~~~~~~~~~~~~~~~~
const int bel = 10; //Tentukan pin 10, dapat menggunakan pin PWM lainnya (5, 6 atau 9) //Catatan pin 3 dan 11 tidak dapat digunakan saat menggunakan fungsi nada di Arduino Uno const int songspeed = 1.5; //Ubah ke 2 untuk versi lagu yang lebih lambat, semakin besar angkanya, semakin lambat lagunya //*************************** ************** #define NOTE_C4 262 //Mendefinisikan frekuensi not #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 = { //Catatan lagu, 0 adalah istirahat/denyut 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 durasi = { / /durasi setiap not (dalam ms) Quarter Note diatur ke 250 ms 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 375, 125 };
// SENTUH ~~~~~~~~~~~~~~~~~~~~~~
#sertakan #sertakan #sertakan
// Reset Pin digunakan untuk I2C atau SPI
#define CAP1188_RESET 9
// Pin CS digunakan untuk SPI perangkat lunak atau perangkat keras
#menentukan CAP1188_CS 10
// Ini ditentukan untuk SPI perangkat lunak, untuk SPI perangkat keras, periksa
// pin SPI board dalam dokumentasi Arduino #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13
// Gunakan I2C, tidak ada pin reset!
Adafruit_CAP1188 tutup = Adafruit_CAP1188();
batalkan pengaturan() {
// MUSIC ~~~~~~~~~~~~~~~~~~~~~~~~ for (int i=0;i<203;i++){ ///203 adalah jumlah total not musik dalam lagu int wait = durasi * kecepatan lagu; nada(buzzer, nada, tunggu); //tone(pin, frequency, duration);} //delay digunakan agar tidak ke loop berikutnya sebelum nada selesai dimainkan //Anda dapat mengklik reset pada Arduino untuk memutar ulang lagu // NEOPIXEL ~~~ ~~~~~~~~~~~~~~~ saat iniPixel = 0; piksel.mulai(); // Ini menginisialisasi perpustakaan NeoPixel. piksel.tampilkan(); // Ini mengirimkan warna piksel yang diperbarui ke perangkat keras.
// SENTUH ~~~~~~~~~~~~~~~~~~~~~~
Serial.begin(300); Serial.println("Uji CAP1188!"); if (!cap.begin()) { Serial.println("CAP1188 tidak ditemukan"); sementara (1); } Serial.println("CAP1188 ditemukan!");
}
lingkaran kosong () {
// SENTUH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~~~~ uint8_t menyentuh = cap.touched(); if (disentuh == 0) { if ((unsigned long)(millis() - colorWipePreviousMillis) >= pixelsInterval) { colorWipePreviousMillis = millis(); colorWipe(piksel. Warna (0, 255, 125)); } } else { if ((unsigned long)(millis() - colorWipePreviousMillis) >= pixelsInterval) { colorWipePreviousMillis = millis(); colorWipe(piksel. Warna(100, 0, 150)); } }
untuk (int i=0;i= pikselInterval) {
colorWipePreviousMillis = milis(); colorWipe(piksel. Warna (0, 255, 125)); } } else { if ((unsigned long)(millis() - colorWipePreviousMillis) >= pixelsInterval) { colorWipePreviousMillis = millis(); colorWipe(piksel. Warna(100, 0, 150)); }}
tunda (tunggu);
}
}
void colorWipe(uint32_t c){
// NEOPIXEL ~~~~~~~~~~~~~~~~~~~~ //Menghilangkan piksel warna.setPixelColor(currentPixel, c); piksel.setPixelColor(Pixel-1 saat ini, piksel. Warna (0, 0, 0)); piksel.tampilkan(); saat iniPixel++; if(currentPixel == NUMPIXELS){ currentPixel = 0; piksel.setPixelColor(7, piksel. Warna (0, 0, 0));
}
}
Langkah 3: Langkah Tambahan: Membuat Stump 'Siap Arduino'
Jika Anda memutuskan untuk menggunakan tunggul pohon, Anda harus melakukan hal berikut.
- Dapatkan tunggul pohon (saya mendapatkannya dari pohon Natal tua secara gratis)
- Ukur Arduino Anda dan lihat bagaimana Anda ingin memiliki kabel di tunggul pohon
- Lubangi tunggulnya (saya menggunakan mesin bor dari sekolah)
- Amplas bagian tepi yang kasar
- Tambahkan detail kecil yang menyenangkan
Detail yang saya tambahkan adalah logo kecil yang saya buat dengan pemotong laser. Saya juga menumpuk semua barang elektronik saya di dalam pada tongkat di dalam pohon saya dan saya menambahkan isian binatang di bagian luar untuk membiarkan cahaya masuk dan memberikan kelembutan ekstra kecil itu.