Arduino MusicStump: เบา สัมผัสได้ และ Buzzer: 3 ขั้นตอน
Arduino MusicStump: เบา สัมผัสได้ และ Buzzer: 3 ขั้นตอน
Anonim
Arduino MusicStump: เบา สัมผัสได้ และ Buzzer
Arduino MusicStump: เบา สัมผัสได้ และ Buzzer

ต้นไม้แบบโต้ตอบพร้อมวงแหวน LED ที่ด้านบน เสียงกริ่งสำหรับส่งเสียง และเซ็นเซอร์สัมผัสภายในที่จะเปลี่ยนสีเมื่อคุณสัมผัส ในการสร้างสรรค์สิ่งเล็กๆ น้อยๆ ให้สนุก คุณจะต้องมีสิ่งต่อไปนี้:

อิเล็กทรอนิกส์:- 1x Arduino Uno

- 15x สายเคเบิล

- หัวแร้ง 1x หัวกลม

- 1x Adafruit 8-key captive touch (CAP1188)

- 1x สายไฟ Arduino

- 1x 8 LED วงแหวน

- 1x Buzzer

- 1x ปืนกาวร้อน

- ดาวน์โหลดห้องสมุด CAP1188

- ดาวน์โหลดไลบรารี่ Adafruit Neopixel

พิเศษ (ปลอก):

- 1x ตอไม้

- 1x ไม้สำหรับด้านใน

- จานไม้สำหรับวางบน/ใน

- ไส้สัตว์ยัดไส้สำหรับภายนอก

ใช้อย่างอื่นแทนก็ได้ สร้างสรรค์!

มาเริ่มกันเลย…

ขั้นตอนที่ 1: ขั้นตอนที่ 1: LED Ring พร้อม Captive Touch

ขั้นตอนที่ 1: วงแหวน LED พร้อม Captive Touch
ขั้นตอนที่ 1: วงแหวน LED พร้อม Captive Touch

ตอนนี้ถ้าคุณโชคดีที่วงแหวน LED ของคุณมีหมุดติดอยู่แล้ว ถ้าไม่ถึงเวลาที่จะประสาน!

สิ่งที่เราจะใช้สำหรับโครงการนี้คือ:

- DI (อินพุตดิจิตอล, พิน 6~

- 5V (สำหรับจ่ายไฟ พิน 5V)

- GND (กราวด์, พิน GND)

นั่นคือวงแหวน LED สำหรับตอนนี้ ตอนนี้สัมผัสที่เชลยศึก

วางไว้ในเขียงหั่นขนมและเชื่อมต่อทุกอย่างดังนี้:SDA/MISO ในพิน (อนาล็อก) A4SCK ในพิน (อนาล็อก) A5VIN ใน (พลังงาน) 5VGND ในสายเคเบิล GND pin1x ที่ C1 (บน Captive touch เอง)

ตอนนี้เพื่อทดสอบการอัปโหลดโค้ดต่อไปนี้ไปยัง Arduino ของคุณ:

// Julia Emmink// โค้ดแสงและสัมผัสสำหรับต้นไม้แบบโต้ตอบ 19/// ทำด้วยการใช้ Adafruit Neopixel และ Adafruit captive touch (CAP1188) (กำลังติดตั้ง) และไฟ LED กะพริบโดยไม่ชักช้า

// นีโอพิเซล ~~~~~~~~~~~~~~~~~~~~

#รวม

#define PIXELSPIN 6 // ตำแหน่งที่คุณเชื่อมต่อ LED Ring

#define NUMPIXELS 8 // จำนวน LED ที่อยู่บนวงแหวนของคุณ #define CALIBRATIONTIME 20000

Adafruit_NeoPixel พิกเซล = Adafruit_NeoPixel (NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);

พิกเซลแบบยาวที่ไม่ได้ลงนาม ช่วงเวลา = 500; //เวลาที่เราต้องรอ

colorWipePreviousMillis แบบยาวที่ไม่ได้ลงชื่อ = 0; โรงละครยาวที่ไม่ได้ลงนาม ChasePreviousMillis = 0; สายรุ้งยาวที่ไม่ได้ลงชื่อPreviousMillis = 0; สายรุ้งยาวที่ไม่ได้ลงนามCyclesPreviousMillis = 0;

int โรงละครChaseQ = 0;

uint16_t currentPixel = 0;// เราใช้พิกเซลอะไรอยู่

// สัมผัส ~~~~~~~~~~~~~~~~~~~~~~

#รวม #รวม #รวม

// รีเซ็ตพินใช้สำหรับ I2C หรือ SPI

#define CAP1188_RESET 9

// CS pin ใช้สำหรับซอฟต์แวร์หรือฮาร์ดแวร์ SPI

#define CAP1188_CS 10

// สิ่งเหล่านี้ถูกกำหนดไว้สำหรับซอฟต์แวร์ SPI สำหรับฮาร์ดแวร์ SPI ให้ตรวจสอบ.ของคุณ

// พิน SPI ของบอร์ดในเอกสารประกอบ Arduino #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// ใช้ I2C ไม่มีพินรีเซ็ต!

Adafruit_CAP1188 หมวก = Adafruit_CAP1188();

การตั้งค่าเป็นโมฆะ () {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~~~ พิกเซลปัจจุบัน = 0; พิกเซล.begin(); // นี่เป็นการเริ่มต้นไลบรารี NeoPixel พิกเซล.show(); // สิ่งนี้จะส่งสีพิกเซลที่อัปเดตไปยังฮาร์ดแวร์

// สัมผัส ~~~~~~~~~~~~~~~~~~~~~~

Serial.begin(300); Serial.println("ทดสอบ CAP1188!");

ถ้า (!cap.begin()) {

Serial.println("ไม่พบ CAP1188"); ในขณะที่ (1); } Serial.println("พบ CAP1188!"); }

วงเป็นโมฆะ () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~~ uint8_t touched = cap.touched(); if (แตะ == 0) { if ((unsigned long)(millis() - colorWipePreviousMillis) >= pixelsInterval) { colorWipePreviousMillis = millis (); colorWipe(พิกเซล.สี(0, 255, 125)); } } อื่น { if ((unsigned long)(millis() - colorWipePreviousMillis) >= pixelsInterval) { colorWipePreviousMillis = millis(); colorWipe(พิกเซล.สี(100, 0, 150)); } }

}

เป็นโมฆะ colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~~~ // กำจัดสี pixels.setPixelColor(currentPixel, c); พิกเซล.setPixelColor(currentPixel - 1, พิกเซล.สี(0, 0, 0)); พิกเซล.show(); พิกเซลปัจจุบัน++; ถ้า (currentPixel == NUMPIXELS) { currentPixel = 0; พิกเซล.setPixelColor(7, พิกเซล.สี(0, 0, 0));

}

}

ทดสอบและสนุก! อย่างที่คุณเห็นเมื่อคุณสัมผัสสาย C1 สีจะเปลี่ยนไป (หากไม่ใช่ครั้งแรก ให้ถอดปลั๊ก Arduino แล้วเสียบกลับเข้าไปในคอมพิวเตอร์ของคุณ)

ขั้นตอนที่ 2: ขั้นตอนที่ 2: การเพิ่มเสียง

ด้วยการใช้บทช่วยสอนที่มีประโยชน์ ฉันจึงทำสิ่งนี้ กวดวิชาเป็นร้อง:

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

ถึงเวลาคว้าออดของคุณแล้ว! ใส่ (-) ของออดในหมุด GND อันใดอันหนึ่งและ (+) ที่พิน 10~

เท่านี้ก็ถึงเวลารันโค้ดอีกครั้งและฟังเพลง Pirates of the Caribbean อันแสนน่ารัก! ตอนนี้มีการทดสอบที่สนุก!

// Julia Emmink// แสง สัมผัส และรหัสเพลงสำหรับต้นไม้แบบโต้ตอบ 2018-01-19// ทำด้วยการใช้ Adafruit Neopixel และ Captive Touch (CAP1188) (กำลังติดตั้ง) และไฟ LED กะพริบโดยไม่ชักช้า

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

#define PIXELSPIN 6

#define NUMPIXELS 8 #define CALIBRATIONTIME 20000

Adafruit_NeoPixel พิกเซล = Adafruit_NeoPixel (NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);

พิกเซลแบบยาวที่ไม่ได้ลงนาม ช่วงเวลา=500; //เวลาที่เราต้องรอ

สีแบบยาวที่ไม่ได้ลงชื่อWipePreviousMillis=0; โรงละครยาวที่ไม่ได้ลงนาม ChasePreviousMillis=0; สายรุ้งยาวที่ไม่ได้ลงชื่อPreviousMillis=0; สายรุ้งยาวที่ไม่ได้ลงนามCyclesPreviousMillis=0;

int โรงละครChaseQ = 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 #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 ของโน้ตแต่ละตัว (เป็น ms) Quarter Note ตั้งไว้ที่ 250 ms 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 375, 125 };

// สัมผัส ~~~~~~~~~~~~~~~~~~~~~~

#รวม #รวม #รวม

// รีเซ็ตพินใช้สำหรับ I2C หรือ SPI

#define CAP1188_RESET 9

// CS pin ใช้สำหรับซอฟต์แวร์หรือฮาร์ดแวร์ SPI

#define CAP1188_CS 10

// สิ่งเหล่านี้ถูกกำหนดไว้สำหรับซอฟต์แวร์ SPI สำหรับฮาร์ดแวร์ SPI ให้ตรวจสอบ.ของคุณ

// พิน SPI ของบอร์ดในเอกสารประกอบ Arduino #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// ใช้ I2C ไม่มีพินรีเซ็ต!

Adafruit_CAP1188 หมวก = Adafruit_CAP1188();

การตั้งค่าเป็นโมฆะ () {

// MUSIC ~~~~~~~~~~~~~~~~~~~~~~ สำหรับ (int i=0;i<203;i++){ //203 คือจำนวนโน้ตดนตรีทั้งหมดใน เพลง int wait = ระยะเวลา * songspeed; เสียง(ออด, บันทึกย่อ, รอ); //tone(pin, frequency, duration);} //ใช้การหน่วงเวลาเพื่อไม่ให้ไปวนซ้ำก่อนที่เสียงจะเล่นเสร็จ // คุณสามารถคลิกรีเซ็ตบน Arduino เพื่อเล่นเพลงซ้ำ // NEOPIXEL ~~~ ~~~~~~~~~~~~~~~ พิกเซลปัจจุบัน = 0; พิกเซล.begin(); // นี่เป็นการเริ่มต้นไลบรารี NeoPixel พิกเซล.show(); // สิ่งนี้จะส่งสีพิกเซลที่อัปเดตไปยังฮาร์ดแวร์

// สัมผัส ~~~~~~~~~~~~~~~~~~~~~~

Serial.begin(300); Serial.println("ทดสอบ CAP1188!"); ถ้า (!cap.begin()) { Serial.println ("ไม่พบ CAP1188"); ในขณะที่ (1); } Serial.println("พบ CAP1188!");

}

วงเป็นโมฆะ () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~~ uint8_t touched = cap.touched(); if (แตะ == 0) { if ((unsigned long)(millis() - colorWipePreviousMillis) >= pixelsInterval) { colorWipePreviousMillis = millis (); colorWipe(พิกเซล.สี(0, 255, 125)); } } อื่น { if ((unsigned long)(millis() - colorWipePreviousMillis) >= pixelsInterval) { colorWipePreviousMillis = millis(); colorWipe(พิกเซล.สี(100, 0, 150)); } }

สำหรับ (int i=0;i=pixelInterval) {

colorWipePreviousMillis = มิลลิวินาที (); colorWipe(พิกเซล.สี(0, 255, 125)); } } อื่น { if ((unsigned long)(millis() - colorWipePreviousMillis) >= pixelsInterval) { colorWipePreviousMillis = millis(); colorWipe(พิกเซล.สี(100, 0, 150)); }}

ล่าช้า(รอ);

}

}

เป็นโมฆะ colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~~~ // กำจัดสี pixels.setPixelColor(currentPixel, c); พิกเซล.setPixelColor(currentPixel-1, พิกเซล.สี(0, 0, 0)); พิกเซล.show(); พิกเซลปัจจุบัน++; ถ้า (currentPixel == NUMPIXELS) {currentPixel = 0; พิกเซล.setPixelColor(7, พิกเซล.สี(0, 0, 0));

}

}

ขั้นตอนที่ 3: ขั้นตอนเพิ่มเติม: ทำให้ Stump 'Arduino Ready'

ขั้นตอนเพิ่มเติม: การสร้างตอไม้ 'Arduino Ready'
ขั้นตอนเพิ่มเติม: การสร้างตอไม้ 'Arduino Ready'
ขั้นตอนเพิ่มเติม: การสร้างตอไม้ 'Arduino Ready'
ขั้นตอนเพิ่มเติม: การสร้างตอไม้ 'Arduino Ready'
ขั้นตอนเพิ่มเติม: การสร้างตอไม้ 'Arduino Ready'
ขั้นตอนเพิ่มเติม: การสร้างตอไม้ 'Arduino Ready'

หากคุณตัดสินใจที่จะใช้ตอไม้คุณต้องทำดังต่อไปนี้

  • รับตอไม้ (ฉันได้มาจากต้นคริสต์มาสเก่าฟรี)
  • วัด Arduino ของคุณและดูว่าคุณต้องการเดินสายไฟในตอไม้อย่างไร
  • เจาะตอไม้ (ฉันใช้เครื่องเจาะของโรงเรียน)
  • ขัดขอบหยาบ
  • เพิ่มรายละเอียดเล็กๆ สนุกๆ

รายละเอียดที่ฉันเพิ่มเข้าไปคือโลโก้ขนาดเล็กที่ฉันสร้างด้วยเครื่องตัดเลเซอร์ ฉันยังซ้อนอุปกรณ์อิเล็กทรอนิกส์ทั้งหมดของฉันไว้บนแท่งไม้ภายในต้นไม้ของฉัน และฉันได้เพิ่มยัดไส้สัตว์ที่ด้านนอกเพื่อให้แสงส่องผ่านและให้ความนุ่มนวลเป็นพิเศษเล็กน้อย