วันอาทิตย์ที่ 16 กันยายน พ.ศ. 2561

โปรเจค งานที่ 17 สร้างเสียงโดยการแตะนิ้วมือโดยใช้ Arduino

สร้างเสียงโดยการแตะนิ้วมือโดยใช้ Arduino
สร้างเสียงโดยการแตะนิ้วมือโดยใช้ Arduino

ส่วนประกอบที่ต้องการ:

วัสดุที่จำเป็นสำหรับโครงการนี้มีดังต่อไปนี้ไม่จำเป็นต้องติดอยู่เหมือนกัน เมื่อคุณคว้าแนวคิดคุณสามารถใช้วิธีการสร้างอาคารของคุณเองได้
  1. Arduini Pro Mini
  2. ลำโพง Peizo
  3. เซนเซอร์ Flex
  4. ถุงมือนิ้วมือ
  5. ตัวต้านทาน 10K
  6. BC547 ทรานซิสเตอร์
  7. แบตเตอรี่ 9V

แผนผังวงจรและคำอธิบาย:

แผนภาพวงจรสำหรับArduino Palm Pianoดังแสดงด้านล่าง
Arduino นิ้วแตะโทนเล่นแผนภาพวงจร
โครงการที่ใช้ทั้งหมดสี่เซ็นเซอร์ที่เป็นสองเซ็นเซอร์ดิ้นและสองคู่ดาร์ลิงตันทำหน้าที่เป็นเซ็นเซอร์สัมผัส เรายังได้ใช้ตัวต้านทานแบบดึงลงสองตัว R1 และ R2 ของแต่ละค่า 10k ซึ่งจะทำหน้าที่เป็นตัวต้านทานแบบดึงลงสำหรับเซ็นเซอร์ Flex ใช้เซ็นเซอร์ Flex เพื่อสร้างเสียงสามแบบโดยการใช้นิ้วเดียวโดยพิจารณาจากระดับความโค้งงอ เราสามารถผลิตเสียงได้ 6 เสียงโดยใช้สองนิ้ว เรียนรู้เกี่ยวกับFlex Sensor ที่นี่

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

ดังที่แสดงไว้ข้างต้นเราได้ใช้ทรานซิสเตอร์ BC547 สองตัวที่มีการรวบรวมตัวเก็บรวบรวมและ emitter ของทรานซิสเตอร์ตัวแรกจะเชื่อมต่อกับฐานของทรานซิสเตอร์ที่สอง วงจรนี้ทำหน้าที่เป็นเครื่องขยายเสียงที่มีกำลังรับซึ่งหมายถึงสัญญาณขนาดเล็กที่ให้กับฐานของทรานซิสเตอร์ตัวแรกก็เพียงพอที่จะส่งผลต่อฐานของทรานซิสเตอร์ที่สอง ร่างกายของเราทำหน้าที่เป็นพื้นดินที่นี่ดังนั้นเมื่อใดก็ตามที่เราสัมผัสฐานของทรานซิสเตอร์ที่ทรานซิสเตอร์ที่สองจะลำเอียง เราได้สร้างเซ็นเซอร์สัมผัสสำหรับโครงการนี้ขึ้นมาเพื่อประโยชน์ของเรา

หมายเลขขาที่ 2 และ 3 เป็นขาขัดจังหวะที่ Arduinoซึ่งจะถูกดึงขึ้นโดยใช้ตัวต้านทานแบบดึงขึ้นภายในและหมุดเหล่านี้จะยึดกับพื้นเมื่อใดก็ตามที่สวิตช์ดาร์ลิงตันปิดลง วิธีนี้ทุกครั้งที่เราสัมผัสลวด (จากฐานของ 1 เซนต์ทรานซิสเตอร์) ขัดจังหวะจะถูกเรียกจาก Arduino
ใช้สองนิ้วสามารถผลิตเพียงสองประเภทของเสียงด้วยเหตุนี้ฉันยังเพิ่มขึ้นเซ็นเซอร์ดิ้นซึ่งจะปรับเปลี่ยนโทนสีขึ้นอยู่กับวิธีการมากก็จะงอ ฉันได้ตั้งโปรแกรมให้ผลิตเสียงที่แตกต่างกันสามแบบต่อนิ้วขึ้นอยู่กับจำนวนนิ้วที่งอ (flex sensor) คุณสามารถเพิ่มจำนวนได้หากต้องการมีโทนเสียงที่ปลายนิ้ว
ฉันทำกระดานสมบูรณ์บนบอร์ด perf เพื่อให้พอดีกับปาล์มของฉัน แต่คุณสามารถใช้ breadboard เช่นกัน เพียงให้แน่ใจว่าร่างกายของคุณสัมผัสพื้นของวงจรในบางจุด เมื่อคุณประสานทุกอย่างแล้วควรมีลักษณะดังนี้
เปียโนนิ้วเปียโน Arduino
สร้างเสียงโดยแตะนิ้วโดยใช้ arduino
ฉันใช้ถุงมือสองนิ้วเพื่อรักษาสายไฟจากคู่ของ Darlington และเซ็นเซอร์แบบดิ้นในตำแหน่งดังที่แสดงไว้ด้านบน คุณสามารถมากับความคิดของคุณ (ดีกว่าถ้าเป็นไปได้) เพื่อรักษาความปลอดภัยในสถานที่ในขณะที่คุณกำลังเล่นเสียงของคุณ

การเขียนโปรแกรม Arduino:

โปรแกรมสำหรับเครื่องกำเนิดไฟฟ้า Tap Tap Tone ของ Arduinoนี้ค่อนข้างตรงไปข้างหน้า เราต้องตรวจสอบการขัดจังหวะจากสายดาร์ลิงตันและหากพบเราต้องเล่นเสียงซึ่งขึ้นอยู่กับเซ็นเซอร์แบบโค้งงอมาก รหัสที่สมบูรณ์จะได้รับที่ท้ายโพสต์นี้ แต่ฉันได้อธิบายชิ้นส่วนที่สำคัญไม่กี่ด้านล่าง
หมายเหตุ: โปรแกรมนี้ทำงานร่วมกับห้องสมุด "pitches.h" เพื่อให้แน่ใจว่าคุณได้เพิ่มไฟล์ส่วนหัวลงในโปรแกรมของคุณก่อนที่จะคอมไพล์ คุณสามารถดาวน์โหลดไฟล์ส่วนหัว pitches.h จากที่นี่

ในฟังก์ชันการตั้งค่า เราจะเริ่มต้นขา 2 และ 3 เป็นอินพุทพร้อมตัวต้านทานแบบดึงขึ้น นอกจากนี้เรายังประกาศให้เป็นหมุดขัดจังหวะและดำเนิน tone1 () ที่เมื่อมีการขัดจังหวะในขา 2 และ tone2 () ฟังก์ชันเมื่อมีการขัดจังหวะใน 3 ขา การขัดจังหวะเหล่านี้จะถูกเรียกใช้เมื่อใดก็ตามที่หมุดเหล่านี้ได้รับต่ำจากสถานะที่ดึงขึ้น
การตั้งค่าเป็นโมฆะ () {
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 และจำนวนโทนเสียง
void loop () {
 แผนที่ flexSensor1 = (analogRead (A0), 200,130,1,3); // จัดทำค่าของคุณเองตามเซ็นเซอร์ flex ของคุณ
 แผนที่ flexSensor2 = (analogRead (A1), 170,185,1,3); // จัดทำค่าของคุณเองตามเซ็นเซอร์ flex ของคุณ

}

ฟังก์ชั่นtone1 ()จะถูกเรียกใช้เมื่อมีการตรวจพบ interrupt ใน pin 2 สิ่งที่เกิดขึ้นภายในtone1 ()จะปรากฏขึ้นที่ด้านบน เรามองไปที่ค่าของ FlexSensor1 และเล่นเสียงตามค่า flexSesnor เสียงเรียกเข้าจะเล่นโดยใช้ฟังก์ชั่นเสียงของ Arduino เราได้อธิบายฟังก์ชัน tone () ไว้ในโครงการก่อนหน้านี้แล้ว
โมฆะ tone1 ()
{
ถ้า (flexSensor1 == 1)
โทน (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); // tone (PinNum, ชื่อโน้ต, ระยะเวลา);

การทำงาน:

เมื่อฮาร์ดแวร์ของคุณพร้อมแล้วให้อัปโหลดโค้ดแล้วติดตั้งไว้บนนิ้วมือ ตรวจสอบให้แน่ใจว่าร่างกายของคุณสัมผัสกับพื้นของวงจรในบางจุด ตอนนี้เพียงแค่สัมผัสวัสดุนำไฟฟ้าหรือร่างกายของคุณและคุณควรจะสามารถได้ยินเสียงที่เกี่ยวข้อง คุณสามารถเล่นเมโลดี้หรือเพลงของคุณเองได้โดยการแตะที่ช่วงเวลาต่างๆและตำแหน่งต่างๆ
วิดีโอด้านล่างแสดงให้เห็นถึงการทำงานที่สมบูรณ์ของโครงการ TH หวังว่าคุณจะสนุกกับการสร้างโครงการคำแนะนำหรือคำถามต่างๆสามารถโพสต์ได้ในส่วนความคิดเห็นด้านล่าง ตรวจสอบArduino Audio PlayerและArduino Tone Generator Project ด้วย
แฮปปี้แตะ!
รหัส
/ * 
 * ผู้เล่น Tap and Tone ของ Arduino 
 เผยแพร่โดย: CircuitDigest.com 
 * รหัส: B.Aswinth Raj 
 * วันที่: 8-7-2017 
 *  
 * ### CONNECTIONS ### 
 * Darlington Wire 1 -> Pin 2 
 * Darlington Wire 2 -> Pin 3 
 * FlexSensor 1 -> A0 
 * FlexSensor 2 -> A1 
 * ลำโพง -> Pin 8 
 * /
# include "pitches.h" / / เพิ่ม librarey นี้ลงในโฟลเดอร์โครงการ
flexSensor1 int, flexSensor2;
การตั้งค่าเป็นโมฆะ () { 
pinMode (2, INPUT_PULLUP); 
pinMode (3, INPUT_PULLUP); 
attachInterrupt (digitalPinToInterrupt (2), tone1, LOW); / / Trigger tone1 เมื่อ LOW 
attachInterrupt (digitalPinToInterrupt (3), tone2, LOW); / / ทริกเกอร์ tone2 เมื่อ LOW 
Serial.begin (9600); 
}
void loop () { 
 flexSensor1 = แผนที่ (analogRead (A0), 200,130,1,3); // 
 แม็ปค่าของคุณเองตามเซ็นเซอร์ flex ของคุณflexSensor2 = แผนที่ (analogRead (A1), 170,185,1,3); // แม็ปค่าของคุณเองตามเซ็นเซอร์แบบยืดหยุ่นของคุณ
}
/ / ** ฟังก์ชันเพื่อดำเนินการใน Interrupt 1 ** / / 
void tone1 () 
{
ถ้า (flexSensor1 == 1) 
โทน (8, NOTE_D4,50); 
อื่นถ้าเสียง (flexSensor1 == 2) 
(8, NOTE_A3,50); 
อื่นถ้า (flexSensor1 == 3) 
โทน (8, NOTE_G4,50); เสียง
อื่น
(8, NOTE_D4,50); 
}
/ / ** ฟังก์ชันเพื่อดำเนินการใน Interrupt 2 ** / / 
void tone2 () 
{
ถ้า (flexSensor1 == 1) 
เสียง (8, NOTE_A4,50); 
อื่นถ้าเสียง (flexSensor1 == 2) 
(8, NOTE_F4,50); 
อื่นถ้า (flexSensor1 == 3) 
โทน (8, NOTE_E4,50);   เสียง
อื่น
(8, NOTE_A4,50); 
}
วีดีโอ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

งานครั้งที่ 5 ในสถานที่ฝึกงานของ นศ ใช้ระบบควบคุณภาพอย่างไร

มาตรฐาน ISO 9001 ISO 9001 เป็นมาตรฐานสากลที่องค์กรธุรกิจทั่วโลกให้ความสำคัญ เพื่อความเป็นเลิศทางด้านคุณภาพ และความมีประสิทธิภาพของการด...