ในโครงการนี้เราจะสร้างความบันเทิงโดยใช้ Arduino เราทุกคนมีนิสัยชอบแตะที่โต๊ะหรือปากกาเพื่อสร้างเพลงแบบสุ่ม แน่นอนว่ามันอาจไม่ถือเป็นการแสดงมารยาทที่ดี แต่เราทุกคนก็สนุกกับการทำอย่างน้อยหนึ่งครั้ง ดังนั้นฉันจึงคิดที่จะก้าวไปอีกระดับโดยใช้ความสามารถในการเล่นเสียงของ Arduino เมื่อคุณสร้างโปรเจ็กต์นี้คุณจะสามารถสร้างโทนเสียงได้โดยการแตะนิ้วของคุณบนอะไรก็ได้ที่เป็นสื่อกระแสไฟฟ้าและสร้างจังหวะของคุณเองเหมือนกับการเล่นเปียโนบนฝ่ามือของคุณ ฟังดูดีมากให้เราสร้างมันขึ้นมา
ส่วนประกอบที่จำเป็น:
วัสดุที่จำเป็นสำหรับโครงการนี้แสดงไว้ด้านล่างไม่จำเป็นต้องยึดติดกับสิ่งเดียวกัน เมื่อคุณได้แนวคิดแล้วคุณสามารถใช้วิธีการสร้างของคุณเองได้
- Arduini Pro Mini
- ลำโพง Peizo
- เซนเซอร์ Flex
- ถุงมือนิ้ว
- ตัวต้านทาน 10K
- BC547 ทรานซิสเตอร์
- แบตเตอรี่ 9V
แผนภาพวงจรและคำอธิบาย:
แผนภาพวงจรสำหรับArduino Palm Pianoนี้แสดงไว้ด้านล่าง
โครงการที่ใช้ทั้งหมดสี่เซ็นเซอร์ที่เป็นสองเซ็นเซอร์ดิ้นและสองคู่ดาร์ลิงตันทำหน้าที่เป็นเซ็นเซอร์สัมผัสเรายังใช้ตัวต้านทานแบบดึงลงสองตัว R1 และ R2 ที่มีค่า 10k ซึ่งจะทำหน้าที่เป็นตัวต้านทานแบบดึงลงสำหรับเซ็นเซอร์ Flex เซ็นเซอร์ Flex ใช้ในการสร้างโทนเสียงที่แตกต่างกันสามแบบโดยใช้นิ้วเดียวโดยพิจารณาจากการงอมากน้อยเพียงใด เราจึงสามารถสร้าง 6 เสียงโดยใช้สองนิ้ว เรียนรู้เกี่ยวกับ Flex Sensor ที่นี่
คู่ดาร์ลิงตัน:
ก่อนที่เราจะดำเนินการต่อสิ่งสำคัญคือต้องรู้ว่าดาร์ลิงตันคืออะไรและทำงานอย่างไรในโครงการของเรา คู่ดาร์ลิงตันสามารถกำหนดให้เป็นทรานซิสเตอร์สองขั้วที่เชื่อมต่อกันในลักษณะที่กระแสที่ขยายโดยตัวแรกจะถูกขยายเพิ่มเติมโดยทรานซิสเตอร์ตัวที่สอง คู่ดาร์ลิงตันแสดงในภาพด้านล่าง:
ดังที่แสดงไว้ข้างต้นเราได้ใช้ทรานซิสเตอร์ BC547 สองตัวซึ่งตัวสะสมถูกเชื่อมโยงเพื่อรวบรวมและตัวปล่อยของทรานซิสเตอร์ตัวแรกเชื่อมต่อกับฐานของทรานซิสเตอร์ตัวที่สอง วงจรนี้ทำหน้าที่เป็นแอมพลิฟายเออร์ที่มีอัตราขยายซึ่งหมายความว่าสัญญาณขนาดเล็กใด ๆ ที่ให้กับฐานของทรานซิสเตอร์ตัวแรกนั้นเพียงพอที่จะทำให้ฐานของทรานซิสเตอร์ตัวที่สองมีอคติร่างกายของเราทำหน้าที่เป็นกราวด์ที่นี่ดังนั้นเมื่อใดก็ตามที่เราสัมผัสฐานของทรานซิสเตอร์ทรานซิสเตอร์ตัวที่สองจะเอนเอียง การใช้สิ่งนี้เพื่อประโยชน์ของเราเราได้สร้างเซ็นเซอร์สัมผัสสำหรับโครงการนี้
พินหมายเลข 2 และ 3 เป็นพินขัดจังหวะบน Arduinoซึ่งจะถูกดึงให้สูงโดยใช้ตัวต้านทานแบบดึงขึ้นภายในจากนั้นพินเหล่านี้จะถูกยึดกับกราวด์เมื่อใดก็ตามที่สวิตช์ดาร์ลิงตันปิดลง ด้วยวิธีนี้ทุกครั้งที่เราสัมผัสสาย (จากฐานของทรานซิสเตอร์1 st) การขัดจังหวะจะถูกกระตุ้นจาก Arduino
ใช้สองนิ้วสามารถผลิตเพียงสองประเภทของเสียงด้วยเหตุนี้ฉันยังเพิ่มขึ้นเซ็นเซอร์ดิ้นซึ่งจะปรับเปลี่ยนโทนสีขึ้นอยู่กับวิธีการมากก็จะงอฉันได้ตั้งโปรแกรมให้สร้างโทนเสียงที่แตกต่างกันสามแบบต่อนิ้วโดยพิจารณาจากการงอของนิ้ว (เซ็นเซอร์งอ) คุณสามารถเพิ่มจำนวนได้หากต้องการเพิ่มเสียงที่ปลายนิ้วของคุณ
ฉันสร้างบอร์ดทั้งหมดบนกระดาน perf เพื่อให้พอดีกับฝ่ามือของฉันได้ง่าย แต่คุณสามารถใช้เขียงหั่นขนมได้เช่นกัน ตรวจสอบให้แน่ใจว่าร่างกายของคุณสัมผัสพื้นของวงจรในบางจุด เมื่อคุณบัดกรีทุกอย่างแล้วควรมีลักษณะดังนี้
ฉันใช้ถุงมือสองนิ้วเพื่อยึดสายจากคู่ดาร์ลิงตันและเซ็นเซอร์ดิ้นในตำแหน่งดังที่แสดงด้านบน คุณสามารถสร้างแนวคิดของคุณเอง (ดีกว่าถ้าเป็นไปได้) เพื่อรักษาความปลอดภัยให้เข้าที่ในขณะที่คุณกำลังเล่นโทนเสียง
การเขียนโปรแกรม Arduino:
โปรแกรมสำหรับArduino Tap Tone Generatorนี้ค่อนข้างตรงไปตรงมา เราต้องระวังการขัดจังหวะจากสายดาร์ลิงตันและถ้าพบเราต้องเล่นโทนซึ่งขึ้นอยู่กับว่าเซ็นเซอร์งอมากแค่ไหน รหัสที่สมบูรณ์จะได้รับในตอนท้ายของโพสต์นี้ แต่ฉันได้อธิบายส่วนสำคัญบางส่วนไว้ด้านล่าง
หมายเหตุ: โปรแกรมนี้ทำงานโดยใช้ไลบรารี“ pitches.h” ดังนั้นตรวจสอบให้แน่ใจว่าคุณได้เพิ่มไฟล์ส่วนหัวลงในโปรแกรมของคุณก่อนที่จะคอมไพล์ คุณสามารถดาวน์โหลดไฟล์ส่วนหัวของ pitches.h ได้จากที่นี่
ในฟังก์ชัน การตั้งค่า เราเริ่มต้นพิน 2 และ 3 เป็นอินพุตด้วยตัวต้านทานแบบดึงขึ้น นอกจากนี้เรายังประกาศให้เป็นพินขัดจังหวะและเรียกใช้ tone1 () เมื่อมีการขัดจังหวะที่พิน 2 และฟังก์ชัน tone2 () เมื่อมีการขัดจังหวะบนพิน3 rd การขัดจังหวะเหล่านี้จะถูกทริกเกอร์ทุกครั้งที่พินเหล่านี้ได้รับ LOW จากสถานะดึง
การตั้งค่าเป็นโมฆะ () {pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (2), tone1, LOW); attachInterrupt (digitalPinToInterrupt (3), tone2, LOW); Serial.begin (9600); }
ภายในฟังก์ชั่น ลูป เราตรวจสอบตลอดเวลาว่าเซ็นเซอร์ดิ้นงอมากแค่ไหน ตัวอย่างเช่น FlexSensor 1 ของฉันให้ค่าประมาณ 200 เมื่อปล่อยให้แบนและลดลงไปจนถึง 130 เมื่อฉันงอจนสุดดังนั้นฉันจึงแมปค่าจาก 200 เป็น 130 เป็น 1 ถึง 3 เนื่องจากฉันต้องเล่น 3 ประเภท ของโทนเสียง คุณต้องปรับแต่งสองบรรทัดนี้ตามค่าเซ็นเซอร์ Flex และจำนวนโทนเสียง
โมฆะ loop () {flexSensor1 = แผนที่ (analogRead (A0), 200,130,1,3); // แมปค่าของคุณเองตามเซ็นเซอร์ดิ้น flexSensor2 = map (analogRead (A1), 170,185,1,3); // แมปค่าของคุณเองตามเซ็นเซอร์ Flex}
ดังที่เราเห็นก่อนหน้านี้ฟังก์ชัน tone1 () จะทำงานเมื่อตรวจพบการขัดจังหวะที่พิน 2 สิ่งที่เกิดขึ้นภายใน ฟังก์ชัน tone1 () ดังแสดงด้านบน เราดูค่าของ FlexSensor1 และเล่นโทนตามค่า flexSesnor Tones จะเล่นโดยใช้ฟังก์ชัน Tone ของ Arduino เราได้อธิบายฟังก์ชัน tone () ในโครงการก่อนหน้านี้แล้ว
เป็นโมฆะ tone1 () {if (flexSensor1 == 1) tone (8, NOTE_D4,50); อื่นถ้า (flexSensor1 == 2) โทน (8, NOTE_A3,50); อื่นถ้า (flexSensor1 == 3) โทน (8, NOTE_G4,50); เสียงอื่น (8, NOTE_D4,50); }
บรรทัดด้านล่างใช้เพื่อเล่นโทนเสียง คุณสามารถเล่นโทนเสียงใดก็ได้ที่มีอยู่ในไฟล์ส่วนหัว“ pitches.h” ตัวอย่างเช่นบรรทัดด้านบนจะเล่น NOTE_A3 บนพินเป็นระยะเวลา 50 มิลลิวินาที
โทน (8, NOTE_A3,50); // โทน (PinNum, ชื่อโน้ต, ระยะเวลา);
การทำงาน:
เมื่อฮาร์ดแวร์ของคุณพร้อมแล้วให้อัปโหลดรหัสและติดตั้งไว้บนนิ้วมือของคุณ ตรวจสอบให้แน่ใจว่าร่างกายของคุณสัมผัสพื้นของวงจรในบางจุด ตอนนี้เพียงแค่แตะวัสดุที่เป็นสื่อกระแสไฟฟ้าหรือร่างกายของคุณและคุณจะสามารถได้ยินน้ำเสียงที่เกี่ยวข้องได้ คุณสามารถเล่นเมโลดี้หรือเพลงของคุณเองได้โดยการแตะในช่วงเวลาต่างๆและตำแหน่งต่างๆ
วิดีโอด้านล่างแสดงให้เห็นถึงการทำงานที่สมบูรณ์ของโครงการ TH หวังว่าคุณจะสนุกกับการสร้างโครงการข้อเสนอแนะหรือคำถามใด ๆ สามารถโพสต์ไว้ในส่วนความคิดเห็นด้านล่าง ตรวจสอบ Arduino Audio Player และ Arduino Tone Generator Project ของเราด้วย