สารบัญ:

เครื่องกำเนิดโทนผ้าไมโครคอนโทรลเลอร์ในรหัส C: 8 ขั้นตอน (พร้อมรูปภาพ)
เครื่องกำเนิดโทนผ้าไมโครคอนโทรลเลอร์ในรหัส C: 8 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เครื่องกำเนิดโทนผ้าไมโครคอนโทรลเลอร์ในรหัส C: 8 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เครื่องกำเนิดโทนผ้าไมโครคอนโทรลเลอร์ในรหัส C: 8 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: 20210110_0050_เรียนรู้_microcontroller_08_voltmeter_adc 2024, กรกฎาคม
Anonim
ไมโครคอนโทรลเลอร์ Fabric Tone Generator ใน C-code
ไมโครคอนโทรลเลอร์ Fabric Tone Generator ใน C-code

เมื่อปลายเดือนตุลาคมปีที่แล้วผู้ใช้คำสั่ง carmitsu ส่งข้อความถึงฉันหลังจากเห็น synth กล่องอาหารกลางวันของฉัน จากข้อความของเขา ฉันสอนดนตรีในโรงเรียนประถม เราเล่นเพลงบันทึกมากมาย เช่น เด็กๆ เล่นขลุ่ยเล็กๆ…… ฉันมีเด็กที่มีความต้องการพิเศษหลายคนที่สามารถใช้กระดานโปสเตอร์สีดำกับวงกลมที่มีชื่อโน้ตอยู่ได้ นักเรียนเหล่านี้กดชื่อโน้ตบนวงกลมพร้อมๆ กับที่นักเรียนที่เหลือกำลังเล่นเพลง….. เด็กที่มีความต้องการพิเศษส่วนใหญ่สามารถทำสิ่งนี้ได้ค่อนข้างดีและทันเวลากับดนตรี สิ่งที่ฉันต้องการคือสร้างเครื่องกำเนิดเสียงที่เรียบง่ายมาก ๆ เพื่อให้เด็ก ๆ เหล่านี้สามารถเล่นในระดับเสียงเดียวกับที่นักเรียนเล่นด้วยเครื่องบันทึกเสียงของพวกเขา ฉันจะเป็นเพียงไม่กี่สนาม ฉันคิดว่าฉันสามารถติดปุ่มเล็กๆ บางชนิดไว้ที่ด้านล่างของวงกลมกลมๆ ของพวกเขา เพื่อที่ว่าเมื่อพวกเขากดเข้าไป เสียงจะออกมาจากลำโพงขนาดเล็กดังพอที่พวกเขาจะได้ยิน มีแม่เป็นครูแล้วชอบโรงเรียนจะอดใจไหวไหม? บอกตรงๆว่าทำไม่ได้ นี่เป็นพงศาวดารของโครงการและคำแนะนำในการสร้างของคุณเอง

ขั้นตอนที่ 1: จุดเริ่มต้นหรือเหตุใดฉันจึงติดแอนะล็อกไม่ได้

จุดเริ่มต้นหรือเหตุผลที่ฉันไม่สามารถยึดติดกับอนาล็อกได้
จุดเริ่มต้นหรือเหตุผลที่ฉันไม่สามารถยึดติดกับอนาล็อกได้

สิ่งที่ดีเริ่มต้นในหน้าถัดไป หากคุณต้องการทราบว่าฉันลงเอยด้วยการใช้ส่วนต่างๆ ที่ฉันทำได้อย่างไร อ่านต่อไป ตัวจับเวลาที่แท้จริง: หลังจากให้ความคิดกับโปรเจ็กต์แล้ว ฉันนึกถึงเครื่องกำเนิดเสียง Piezo จากหนังสือ op-amps Forest Mims III ของฉันทันที ดูเหมือนจะเป็นวิธีที่ดี เป็นเพียงเพียโซ 741 IC และส่วนประกอบแบบพาสซีฟสองสามตัว ไม่มีอะไรมากใช่มั้ย? มันมี 2 ปัญหา 1) เมื่อคุณกดสวิตช์ มันเป็นไปได้ที่จะเปลี่ยนระดับเสียง 2) มันแทบเป็นไปไม่ได้เลยที่จะปรับแต่ง อย่างแรกน่าจะเอาชนะได้ด้วยเทคโนโลยี debounce แม้ว่าฉันจะไม่รู้ว่าต้องทำอย่างไรโดยไม่ต้องเพิ่มตัวนับใหม่ อาจเป็นปัญหากับการใช้เพียโซ ปัญหาที่สองเพิ่งจะเทอะทะเมื่อคุณเริ่มพยายามตีระดับหนึ่ง 555 แล้วไง? แผ่นข้อมูลแสดงฟังก์ชันหน่วงเวลาตามตัวต้านทานและตัวเก็บประจุ ซึ่งดีมากจนคุณเริ่มพิมพ์ค่าที่แท้จริงของส่วนต่างๆ ในโลกแห่งความเป็นจริง เมื่อนั้นคุณจะพบว่าการกดที่ระดับเสียง 440Hz นั้นเริ่มยากขึ้นเล็กน้อย คุณสามารถใช้หม้อตัดแต่งเพื่อปรับให้เข้ากับมันได้ แต่เมื่อเวลาผ่านไปพวกมันมักจะเคลื่อนไหว ปรับแต่งเครื่องดนตรีอย่างต่อเนื่อง คอมไพล์ด้วยราคาและปริมาณของชิ้นส่วนที่เพิ่มขึ้นอย่างรวดเร็ว และภรรยาของฉันก็เปลี่ยนระดับเสียงเมื่อเธอกดปุ่มฆ่า 555 สำหรับโปรเจ็กต์นี้ Op-amp: ไม่มีปัญหา คนทำ synth ด้วย op-amps ตั้งแต่ก่อนฉันเกิด มันยากแค่ไหนที่จะทำแบบง่ายๆ จริงๆ ด้วยบางส่วนและบันทึกเฉพาะ? ยากกว่าที่คิด การออกแบบส่วนใหญ่มีความซับซ้อนมากสำหรับโครงการนี้ นักออกแบบ Synth ต่างมองหารูปแบบคลื่น/โทนเสียงที่สมบูรณ์แบบ สิ่งนี้ขัดแย้งโดยตรงกับโครงการที่ควรมีราคาถูกเพียงพอสำหรับงบประมาณของโรงเรียนหรือครู การสร้างแป้นพิมพ์นั้นง่ายพอ มันเป็นเพียงตัวต้านทานและกำลังไฟฟ้า หรือไดโอดและกำลังจำนวนมาก เป็นส่วนที่เหลือของการออกแบบวงจรและค่าใช้จ่ายของ pcbs แบบกำหนดเองที่เริ่มจะพ้นมือสำหรับใครบางคนในระดับเริ่มต้นทางอิเล็กทรอนิกส์ นิยามใหม่ของโปรเจ็กต์: ดังนั้นโปรเจ็กต์จึงถูกกำหนดใหม่ก่อนที่ฉันจะไปจริงๆ ฉันต้องการบางอย่างที่สามารถสลับหมุดของลำโพงได้ทันเวลาด้วยการกดปุ่ม ฉันไม่ต้องการออกแบบและซื้อ PCB สิ่งนี้ต้องใช้ส่วนประกอบน้อยที่สุดเท่าที่จะเป็นไปได้และประกอบเป็นชุดสำหรับผู้เริ่มต้น มันจ้องหน้าฉันตลอดเวลา ฮึก!! ไมโครคอนโทรลเลอร์! ไมโครคอนโทรลเลอร์:หลังจากซื้อทั้งชุด Arduino Bare Bones Modern Devices และคณะกรรมการเป้าหมาย Simple Target ของ Evil Mad Scientist และปล่อยให้พวกเขานั่งบนโต๊ะของฉันเป็นเวลาหลายเดือนโดยที่ไม่ได้ใช้งาน ฉันมีโครงการแนะนำที่สมบูรณ์แบบ ฉันเริ่มดูเวลาที่ใช้ในการรวบรวมทั้งสองอย่าง เส้นโค้งการเรียนรู้สำหรับโค้ด ค่าใช้จ่าย ส่วนเพิ่มเติมที่จำเป็น และทำให้มันทำในสิ่งที่ฉันต้องการและตกลงบนกระดานเป้าหมาย ค่าใช้จ่ายค่อนข้างดี 15 ดอลลาร์บวกสายเคเบิล FTDI 20 ดอลลาร์สำหรับ Arduino 12 ดอลลาร์บวกโปรแกรมเมอร์ USBtinyISP 22 ดอลลาร์ ฉันรู้ C++ จากวิทยาลัยเล็กๆ ที่ฉันสามารถยืนหยัดได้ และคิดว่า C สำหรับไมโครคอนโทรลเลอร์ไม่ได้แย่ขนาดนั้น ในขณะที่นอกจากการกะพริบไฟเพื่อให้แน่ใจว่าฉันใส่ชุดอุปกรณ์อย่างถูกต้องแล้ว ฉันไม่มีประสบการณ์เกี่ยวกับ Arduino ทั้งสองสามารถติดตั้งได้ มันค่อนข้างจะล้มเหลว ดังนั้นฉันจึงตัดสินใจเลือกส่วนน้อยของทั้งสอง กระดานเป้าหมาย

ขั้นตอนที่ 2: สิ่งที่คุณต้องการ Rev1

What You Need Rev 1
What You Need Rev 1

ค่าอะไหล่USBtinyISP AVR Programmer Kit (USB SpokePOV Dongle)v2.0 $22.00https://www.adafruit.com/index.php?main_page=product_info&cPath=16&products_id=46Evil Mad Scientist labs ATmegaXX8 Mini Dev Kits $12Headers, 6-pin DIP, 5-pk $2.75https://evilmadscience.com/tinykitlist/74-atmegaxx8Speaker (8-ohm Mini) $2.79https://www.radioshack.com/product/index.jsp?productId=2062406SPST สวิตช์ชั่วขณะเปิดตามปกติ (เราใช้ 5) $3.49 (4 แพ็ค) https://www.radioshack.com/product/index.jsp?productId=2062539"AAA" ที่ใส่แบตเตอรี่ $1.79https://www.radioshack.com/product/index.jsp?productId=2102735SPST Submini Slide Switch (ตัวเลือกสำหรับสวิตช์เปิดปิด) $2.69 (2 แพ็ค)https://www.radioshack.com/product/index.jsp?productId=2062490LED และตัวต้านทาน (ตัวเลือก หากคุณต้องการไฟจ่ายไฟ) $ควร ฟรี ถ้าพวกเขากำลังนอนอยู่รอบ ๆ ลวด $ ควรจะนอนอยู่รอบ ๆ บัดกรีเงิน (หากสิ่งนี้เกิดขึ้นใกล้กับเด็ก ๆ คุณไม่ควรใช้ตะกั่วผู้ปกครองจะค่อนข้างแปลกเกี่ยวกับสิ่งนั้น;)) แอลกอฮอล์ถู (เพื่ออีกครั้ง ย้ายฟลักซ์)ถ้าคุณต้องการบางสถานที่เพื่อประหยัดเงิน คุณไม่จำเป็นต้องรับชิ้นส่วนจาก RadioShack ฉันทำเพราะใกล้เคียงและคาดเดาได้

ขั้นตอนที่ 3: การประกอบ Rev1

การประกอบ Rev1
การประกอบ Rev1
การประกอบ Rev1
การประกอบ Rev1

ใส่ชิ้นส่วนของคุณเข้าด้วยกันตามที่แสดง อย่าลืมใช้แอลกอฮอล์ถูและแปรงฟลักซ์เมื่อคุณทำเสร็จแล้วเพื่อกำจัดฟลักซ์จากการบัดกรี แผนผังอยู่ด้านล่างสำหรับผู้ที่ชอบ D1 และ R1 เป็นอะไรก็ได้ที่คุณต้องการ เป็นเพียงไฟแสดงการทำงาน C1 เป็นเพียงการช่วยให้พลังมีความสม่ำเสมอมากขึ้นเล็กน้อย ฉันใช้ 10uF แผนผังนี้เหมือนกันสำหรับรุ่นที่ใหม่กว่า เพียงแค่สลับปุ่มกดสำหรับสวิตช์แฟบริก ในการแก้ไขครั้งล่าสุดฉันได้เพิ่มสวิตช์เป็น PC4 และ PC5 หรือพิน 27 และ 28

ขั้นตอนที่ 4: สิ่งที่คุณต้องการ Rev2

What You Need Rev 2
What You Need Rev 2

โดยพื้นฐานแล้ว คุณกำลังสลับปุ่ม Radio Shack สำหรับปุ่มที่ทำจากผ้า คุณต้องการ: ผ้าหลายสี หรือสีเดียว หากคุณต้องการให้โน้ตทุกตัวมีสีเดียวกัน แผนกควิลท์ของร้านผ้าที่ใกล้ที่สุดคือที่ที่ดีที่สุดในการซื้อผ้าในราคาถูก ควิลท์ควิลท์ราคา $1.50 และคุณสามารถดึงสวิตซ์ออกมาได้มากมาย ผ้านำไฟฟ้า ฉันขอแนะนำผ้าเฟล็กตรอนจาก LessEMF ในราคา 20 ดอลลาร์สำหรับชิ้นส่วนตาไก่ขนาด 12 "x54" สำหรับติดลวดเข้ากับผ้า คุณสามารถหาซื้อได้ตามร้านผ้าส่วนใหญ่ในราคาถูก JoAnn มีเครื่องมือและ 25 ในราคา $2 คุณจะต้องใช้ค้อนสำหรับสิ่งนี้ Wire ฉันใช้ 22AWG ฉันขอแนะนำให้เล็กกว่านี้ถ้าคุณมีมัน หลอมรวมเพื่อให้ผ้าสีและสื่อนำไฟฟ้าติดกัน ถามที่ร้านและคุณอาจจะซื้อได้ตามลาน วิธีนี้น่าจะใช้ได้ผลดี แม้ว่าฉันจะแนะนำให้คุณถามใครสักคนในการตีแบต ตอนแรกฉันใช้อะไรที่หลวมมากๆ แล้วเปลี่ยนไปใช้ผ้าที่ถักแน่นกว่านี้ ฉันแนะนำให้คุณลองใช้หลายๆ แบบจนกว่าคุณจะพบสิ่งที่ดีที่สุด ท่อหดด้วยความร้อน ทำให้ทุกอย่างจัดการได้ง่ายขึ้นมาก ความร้อนหดสายเข้าด้วยกันเมื่อผ่านกันและกันและจะดีขึ้นมาก

ขั้นตอนที่ 5: การประกอบ Rev2

การประกอบ Rev2
การประกอบ Rev2
การประกอบ Rev2
การประกอบ Rev2
การประกอบ Rev2
การประกอบ Rev2

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

ขั้นตอนที่ 6: สิ่งที่คุณต้องการ Rev3

What You Need Rev 3
What You Need Rev 3

ใน Rev 3 ฉันทำสวิตช์เป็นอิสระจากการเดินสาย สิ่งนี้ช่วยประหยัดเวลาได้มาก ฉันยังชอบรูปลักษณ์ของผลลัพธ์ที่เสร็จสิ้นมากขึ้นอีกด้วย ดังนั้นนี่คือชิ้นส่วนใหม่ที่คุณต้องการ:Snaps เพิ่งได้มาจาก JoAnn's พวกเขามาพร้อมกับเครื่องมือติดตั้งที่ไม่เลวในราคา $ 7 ฉันจะแนะนำเครื่องมือคีมตัวใดตัวหนึ่งแทนเนื่องจากฉันต้องแยกเครื่องมือออกจากกันเพื่อติดตั้งสแนปตรงกลาง การเย็บอาจเป็นทางเลือกที่ดี แม้ว่าจะใช้เวลานานกว่าในการยึดติดก็ตาม ด้ายนำไฟฟ้า Spark Fun มีสิ่งของที่สามารถใส่ในจักรเย็บผ้าของคุณได้ ฉันต้องทำงานช้ามากในเครื่องของฉัน มิฉะนั้น ด้ายจะขาด ไมล์สะสมของคุณอาจแตกต่างกันไป

ขั้นตอนที่ 7: การประกอบ Rev 3

การประกอบ Rev3
การประกอบ Rev3
การประกอบ Rev3
การประกอบ Rev3
การประกอบ Rev3
การประกอบ Rev3
การประกอบ Rev3
การประกอบ Rev3

การแก้ไขนี้ดีกว่าครั้งที่แล้วมากในแง่ของเวลาที่สร้าง นอกจากนี้ การมีสวิตช์แบบถอดได้ช่วยรักษาสติของฉันได้มากกว่าหนึ่งครั้ง เริ่มต้นด้วยการสร้างฐาน มันเป็นเพียงหนึ่งในสี่ควิลท์พับครึ่ง ใส่ชั้นของลูกบอลที่ด้านบนแล้วเย็บทิ้งรูไว้เพื่อพลิกกลับ ดันสิ่งของผ่านรูและโดยทั่วไปคุณมีสิ่งที่เป็นหมอน ฉันควิลท์มันเพื่อให้มันทำงานได้ง่ายขึ้นด้วย ใช้ด้ายธรรมดาและไปถั่ว ฉันทำเพชรกับอันนี้ แต่บางทีคราวหน้าฉันจะใส่มังกรไว้ข้างหลัง หรืออะไรที่เจ๋งๆ ตอนนี้ ไปที่สวิตช์ ฉันชอบการออกแบบนี้เพราะโดยพื้นฐานแล้วคุณสามารถสร้างสิ่งเหล่านี้ได้ล่วงหน้าและใช้สิ่งที่คุณต้องการ เริ่มต้นด้วยการใช้เศษกระดาษแข็ง กระดาษ หรือผ้า แล้วตัดเป็นทรงลูกแพร์ ใช้เป็นแนวทางในการตัดด้านบนและด้านล่างสำหรับสวิตช์แต่ละตัว ฉันตัดหนึ่งสีสำหรับแต่ละด้านล่างและสีที่แตกต่างกันสำหรับท็อปส์ซู แต่คุณสามารถสร้างสรรค์และทำสิ่งที่คุณต้องการ ลดคำแนะนำของคุณให้เป็นรูปทรงอมยิ้มที่จะพอดีกับภายในสวิตช์ได้อย่างง่ายดาย ยืด "ไม้" ให้ยาวเพื่อพันทับขอบ "ลูกแพร์" ตัดรูปร่างออกจากผ้าหลอมรวมและผ้านำไฟฟ้า แล้วหลอมรวมด้านหนึ่งของผ้านำไฟฟ้า นำ backing ออกจากวัสดุที่ใช้ฟิวซิ่ง แล้วมัดเข้ากับส่วนบนของผ้าที่จะอยู่ด้านล่างและด้านล่างของผ้าที่จะอยู่ด้านบน ห่อส่วนพิเศษรอบด้านบน ตรงไปที่จักรเย็บผ้าของคุณแล้วตีด้วยรูระหว่างผ้าด้านบนและด้านล่าง เย็บด้านนอกผ้านำไฟฟ้าและข้ามส่วน "ไม้" ของสวิตช์ ฉันพบว่าสามารถเย็บผ้าที่นำไฟฟ้าด้านบนไปด้านล่างจนกลายเป็นผ้าสั้นได้ เป็นการดีกว่าที่จะไม่เย็บผ้าที่เป็นสื่อกระแสไฟฟ้า แนบสแนปและสวิตช์เสร็จสิ้น ฉันพบว่ามันง่ายกว่าที่จะใช้สแน็ปตัวผู้สำหรับการเชื่อมต่อด้านล่าง / GND ทั้งหมดและสแน็ปตัวเมียสำหรับท็อปส์ซูทั้งหมด สิ่งนี้ทำให้สวิตช์ทั้งหมดใช้แทนกันได้ วงจร: สิ่งที่เกี่ยวกับการตัดรอบคือคุณมีบิตพิเศษจำนวนมาก ฉันนำเศษวัสดุ หลอมชิ้นใหญ่ผสมกับผ้านำไฟฟ้าขนาดใหญ่ และใช้สิ่งเหล่านี้เพื่อตัดสี่เหลี่ยมเล็กๆ ที่ฉันใช้เป็นแผ่นรอง วางสวิตช์ของคุณคร่าวๆ แล้วรวมแผ่นอิเล็กโทรดเข้ากับฐานโดยมีพื้นที่เพียงพอสำหรับเย็บเป็นเส้นและเย็บง่ายๆ ตีนเย็บผ้าที่ฉันใช้ไม่ค่อยสะดวกนักที่จะชิดกับสแน็ปอินจริงๆ ดังนั้นโปรดจำไว้และให้พื้นที่ตัวเองบ้าง เนื่องจากฉันมีด้ายนำไฟฟ้าที่สามารถไปในจักรเย็บผ้าของฉันได้ ฉันจึงเย็บเป็นเส้นจากผ้าหนึ่งไปอีกแผ่นหนึ่งและด้านหลัง ฉันต้องเดินช้าๆ ไม่อย่างนั้นด้ายจะขาด แต่มันเร็วกว่าการเย็บด้วยมือเป็นตัน ด้วยด้ายนำไฟฟ้าบนไส้กระสวยและเข็ม ฉันจึงมีการเชื่อมต่อที่แน่นหนาดีจริงๆ สิ่งที่หลุดลุ่ยอย่างบ้าคลั่ง แต่กาวสำหรับงานหัตถกรรมเล็กน้อยหรือ Elmers ทำให้มันชัดเจนขึ้น พยายามไม่ให้สายสัมพันธ์กันและคุณไม่ควรมีปัญหาใดๆ การประกอบขั้นสุดท้าย: ยึดสวิตช์ทั้งหมดของคุณ เชื่อมต่อบอร์ด โหลดโค้ด เท่านี้ก็เสร็จเรียบร้อย ฉันใช้ลวดดึงจากกระดานไปยังแผ่นรองแล้วเย็บลวดเข้ากับฐานด้วยมือ สำหรับรุ่นถัดไป ฉันจะติดบอร์ดในกล่องพลาสติกพร้อมสแนปเพื่อติดเข้ากับฐาน เพื่อไม่ให้นิ้วว่างๆ หลุดออกจากกัน

ขั้นตอนที่ 8: รหัส

รหัส
รหัส

หากคุณไม่เคยตั้งโปรแกรมชิปมาก่อน นี่เป็นงานที่ค่อนข้างยาก ไม่ได้ช่วยอะไรเครื่องมือจะหลุดลอกและส่วนใหญ่คุณต้องดำเนินการเดียวกันหลายครั้ง แหล่งข้อมูลที่ดีที่สุดสองอย่างที่ฉันพบเพื่อทำความเข้าใจสิ่งที่เกิดขึ้นคือหน้าสำหรับ USBtinyISP https://www.ladyada.net/make/usbtinyisp/ และหลักสูตรความผิดพลาดในการเขียนโปรแกรมของเล่นที่มีเสียงรบกวน http:/ /blog.makezine.com/archive/2008/05/noise_toy_crashcourse_in.html สิ่งเหล่านี้น่าจะช่วยให้คุณเริ่มต้นได้

ผู้คนจำนวนมากชอบ Arduino สำหรับการเข้ารหัสนี้และไม่มีอะไรผิดปกติกับการใช้มัน ยกเว้นว่าฉันรู้สึกว่ามันเพิ่มจำนวนมากขึ้นให้กับโปรแกรมธรรมดาทั่วไป ฉันรู้ C และไม่รู้จัก Arduino สักวันหนึ่งถ้ามีเวลา:) รหัส: {{{ #include //ใช้หมุดเพื่อเปิด SPK /// Typedefs ////////// typedef unsigned char u8; int หลัก (เป็นโมฆะ) { u8 btnState0; u8 btnState1; u8 btnState2; u8 btnState3; u8 btnState4; u8 btnState5; u8 btnState6; DDRB = (1 << DDB6); // ตั้งค่า SPK สำหรับเอาต์พุต PORTD =(1 << PD0) | (1 << PD1) | (1 << PD2) | (1 << PD3) | (1 << PD4); // ตั้งค่าปุ่ม PORTC สูง = (1 << PC4) | (1 << PC6); TCCR2B = (1 << CS21); // ตั้งเวลาในขณะที่ (1) { btnState0 = ~PINC & (1 << PC5); btnState1 = ~PINC & (1 << PC4); btnState2 = ~PIND & (1 << PD0); btnState3 = ~PIND & (1 << PD1); btnState4 = ~PIND & (1 << PD2); btnState5 = ~PIND & (1 << PD3); btnState6 = ~PIND & (1 << PD4); if (btnState0) { if (TCNT2 >= 190) { PORTB ^= (1 << PD6); //พลิกพิน SPK TCNT2 = 0; } } if (btnState1) { if (TCNT2 >= 179) { PORTB ^= (1 << PD6); //พลิกพิน SPK TCNT2 = 0; } } if (btnState2) { if (TCNT2 >= 159) { PORTB ^= (1 << PD6); //พลิกพิน SPK TCNT2 = 0; } } if (btnState3) { if (TCNT2 >= 142) { PORTB ^= (1 << PD6); //พลิกพิน SPK TCNT2 = 0; } } if (btnState4) { if (TCNT2 >= 126) { PORTB ^= (1 << PD6); //พลิกพิน SPK TCNT2 = 0; } } if (btnState5) { if (TCNT2 >= 119) { PORTB ^= (1 << PD6); //พลิกพิน SPK TCNT2 = 0; } } if (btnState6) { if (TCNT2 >= 106) { PORTB ^= (1 << PD6); //พลิกพิน SPK TCNT2 = 0; } } } } }}} สนามมาจากไหน? ต้องใช้คณิตศาสตร์เล็กน้อย นาฬิกาจับเวลาบน atmega 168 ทำงานที่ 1MHz มันเร็วเกินไปสำหรับเสียง ดังนั้นเราจึงต้องใช้พรีสเกลเลอร์ /8 เนื่องจากเราต้องพลิกพินเอาต์พุตให้สูงแล้วต่ำเพื่อสร้าง 1 รอบ เราจึงต้องหารคำตอบด้วย 2 เพื่อให้ได้ระดับเสียงที่ถูกต้อง สูตรมีลักษณะดังนี้ Pitch to put in code= (1000000/8)/(Target frequency*2) For A(440) จะเป็น 125000/880=142.045 หรือ 142 สำหรับวัตถุประสงค์ของเรา เนื่องจากค่าต้องเป็นจำนวนเต็ม. ความถี่เป้าหมายของบันทึกย่อสามารถพบได้ทุกที่ทางออนไลน์และโดยทั่วไปจะเหมือนกันทั้งหมด ฉันยังต้องการเพิ่มคำสั่ง case แทนการใช้ ifs จำนวนมาก และใช้ PWM เพื่อควบคุมระดับเสียงและ pitch ของลำโพงได้ดีขึ้น แต่ตอนนี้ใช้ได้

แนะนำ: