תוכן עניינים:

מחולל טון בד מיקרו-בקר בקוד C: 8 שלבים (עם תמונות)
מחולל טון בד מיקרו-בקר בקוד C: 8 שלבים (עם תמונות)

וִידֵאוֹ: מחולל טון בד מיקרו-בקר בקוד C: 8 שלבים (עם תמונות)

וִידֵאוֹ: מחולל טון בד מיקרו-בקר בקוד C: 8 שלבים (עם תמונות)
וִידֵאוֹ: זה מה שעושים בסדנאות והרצאות לטיפול עצמי בעברית וברוסית 2024, יולי
Anonim
מחולל טון בד מיקרו-בקר בקוד C
מחולל טון בד מיקרו-בקר בקוד C

בסוף אוקטובר בשנה שעברה שלח לי משתמש carmitsu הודעה לאחר שראיתי את הסינתי של קופסת האוכל שלי. מהמסר שלו: אני מלמד מוזיקה בבית הספר היסודי. אנחנו מנגנים הרבה מוזיקת מקליט. כלומר הילדים מנגנים בחלילים קטנים … יש לי כמה ילדים עם צרכים מיוחדים שיכולים להשתמש בלוחות פוסטרים שחורים אלה עם עיגולים שעליהם יש שם הפתק. תלמידים אלה דוחפים את המעגלים עם שמות תווים במקביל שאר התלמידים מנגנים שיר….. רוב הצרכים המיוחדים ילדים יכולים לעשות זאת בצורה די טובה ובזמן עם המוסיקה. מה שאני מחפש הוא לבנות מחולל צלילים פשוט מאוד, כך שילדים אלה יוכלו לשחק את אותו המגרש כמו התלמידים שמנגנים התלמידים במכשיר ההקלטה שלהם. אני אהיה רק כמה מגרשים. חשבתי שאני יכול לחבר איזה כפתור קטן לתחתית העיגולים העגולים שלהם, כך שכאשר ילחצו עליהם הצליל ייצא מרמקול קטן, חזק מספיק כדי שישמעו. אם יש לי אמא שהיא מורה ואהבה את בית הספר, איך יכולתי להתנגד? האמת שלא יכולתי. זו פחות או יותר כרוניקה של הפרויקט והנחיות כיצד לבנות משלך.

שלב 1: ההתחלה או מדוע לא יכולתי לדבוק באנלוגי

ההתחלה או מדוע לא יכולתי לדבוק באנלוגי
ההתחלה או מדוע לא יכולתי לדבוק באנלוגי

הדברים הטובים מתחילים בעמוד הבא. אם אתה רוצה לדעת איך השתמשתי בחלקים שעשיתי, המשך לקרוא. הטיימר האמיתי: לאחר שהקדשתי מחשבה לפרויקט חשבתי מיד על מחולל צלילי הפיזו מהספר האופמפרסטי שלי של Forest Mims III. נראה כמו דרך טובה ללכת, זה רק פיצו, IC1 741 וכמה רכיבים פסיביים. אין עניין גדול נכון? ובכן יש לו 2 בעיות, 1) כאשר אתה לוחץ על המתג, אפשר לשנות את המגרש 2) זה כמעט בלתי אפשרי לכוון. סביר להניח שניתן להתגבר על הראשון בעזרת טכנולוגיית ניפוח כלשהי, אם כי לא ידעתי כיצד לעשות זאת מבלי להוסיף מונה נוסף. זה יכול להיות גם בעיה בשימוש בפייזו. הגיליון השני פשוט הפך לא מסובך כשהתחלת לנסות לפגוע במגרש מסוים. מה עם 555? גליון הנתונים מציג פונקציית dlay time המבוססת על נגדים וקבלים. וזה נהדר עד שתתחיל להקליד ערכים אמיתיים של חלקי העולם האמיתי, ואז תמצא קצת פגיעה במגרש של 440 הרץ. אתה יכול להשתמש בסירים לקצץ כדי לכוונן אותו, אך עם הזמן הם נוטים לזוז. כוונון מתמיד של המכשיר, שנערך על רקע עלייה מהירה בעלות ובכמות החלקים, ואשתי עשתה את שינוי המגרש כאשר היא לחצה על הכפתור הרגה את 555 לפרויקט זה. מגברים אופיים מאז שנולדתי. כמה קשה זה יכול להיות אחד פשוט עם כמה חלקים והערות ספציפיות? יותר קשה ממה שחשבתי. רוב העיצובים שם מסובכים מאוד לפרויקט הזה. מעצבי סינטה מחפשים את צורת הגל/הטון המושלמת. זה מתנגש ישירות עם פרויקט שאמור להיות זול מספיק לתקציבי בית הספר או המורים. בניית מקלדת קלה מספיק, זו רק חבורה של נגדים והספק או חבורה של דיודות והספק. זה שאר עיצוב המעגלים והמחיר של מחשבים אישיים מותאמים אישית שמתחיל לצאת מכלל שליטה על מישהו ברמת אלקטרוניקה מתחילה. הגדרת הפרויקט מחדש: אז הפרויקט הוגדר מחדש עוד לפני שהתחלתי באמת. הייתי צריך משהו שיכול להחליף סיכת רמקולים בזמן, בלחיצת כפתור. לא רציתי לעצב ולקנות PCB. זה היה צריך להשתמש בכמה שפחות רכיבים ולהיות מורכב כערכה למתחילים. זה בהה בי בפנים כל הזמן. אחי !! מיקרו -בקר! מיקרו -בקר: אז לאחר שרכשתי ערכת Arduino של מכשירים מודרניים חשופים, וגם לוח מטרות פשוט של Evid Mad Scientist ונתתי להם לשבת על שולחני במשך חודשים ללא שימוש, היה לי פרויקט ההיכרות המושלם. התחלתי להסתכל על הזמן שלוקח לחבר את שניהם, את עקומת הלמידה של הקוד, העלות, את החלקים הנוספים הדרושים ולגרום לו לעשות מה שאני רוצה והתמקמתי בלוח המטרה. המחיר היה די שווה, 15 $ בתוספת כבל FTDI של 20 $ עבור Arduino, 12 $ בתוספת מתכנת USBtinyISP של 22 $. כבר הכרתי C ++ מהקולג 'הקטן שאוכל לעמוד בו וחשבתי ש- C עבור בקרי מיקרו לא יהיה כל כך גרוע, בעוד שמלבד למצמץ אור כדי לוודא שאחבר את הערכה שלי כראוי, לא הייתה לי ניסיון בארדואינו. שניהם יכולים להיות מותקנים. זה היה די לזרוק, אז החלטתי על פחות החלקים של השניים, לוח המטרה.

שלב 2: מה שאתה צריך Rev 1

מה שאתה צריך Rev 1
מה שאתה צריך Rev 1

עלות חלקיםUSBtinyISP ערכת מתכנת AVR (USB SpokePOV Dongle) v2.0 $ 22.00https://www.adafruit.com/index.php? Main_page = product_info & cPath = 16 & products_id = 46 מעבדות מדבקות מרושעות ATmegaXX8 ערכות Mini Dev $ 12 כותרות, 6 פינים DIP, 5-pk $ 2.75https://evilmadscience.com/tinykitlist/74-atmegaxx8 רמקול (8 אוהם מיני) 2.79 $ https://www.radioshack.com/product/index.jsp? ProductId = 2062406SPST מתגים רגעיים פתוחים בדרך כלל (השתמשנו 5) $ 3.49 (4pack) https://www.radioshack.com/product/index.jsp?productId=2062539"AAA "מחזיק סוללות 1.79 $ https://www.radioshack.com/product/index.jsp? ProductId = 2102735SPST מתג Submini Slide (אופציונלי למתג הפעלה) $ 2.69 (דו חבילה) https://www.radioshack.com/product/index.jsp?productId=2062490LED ונגד (אופציונלי, אם אתה רוצה נורת חשמל) $ אמור להיות בחינם אם הם שוכבים Wire $ צריך להיות גם שוכב הלחמה כסופה (אם זה מתקרב לילדים קרוב לוודאי שלא תשתמש בעופרת, ההורים נהיים די מוזרים בדברים כאלה;)) שפשוף אלכוהול (כדי לחזור move flux) אם אתה רוצה כמה מקומות לחסוך כסף, אתה לא צריך לקבל חלקים מ- RadioShack. עשיתי כי הם קרובים וצפויים.

שלב 3: הרכבה Rev 1

הרכבה Rev 1
הרכבה Rev 1
הרכבה Rev 1
הרכבה Rev 1

חבר את החלקים שלך כפי שמוצג. הקפד להשתמש באלכוהול משפשף ומברשת שטף כשתסיים להיפטר מכל שטף מהלחמה. סכמטי להלן עבור אלה המעדיפים אותו. D1 ו- R1 יכולים להיות מה שאתה רוצה, זה רק נורת הפעלה. C1 הוא רק כדי לעזור להפוך את הכוח קצת יותר עקבי. השתמשתי ב- 10uF. סכמטי זהה לגרסאות המאוחרות יותר, פשוט החלף כפתורי לחיצה למתגי בד. בגירסה האחרונה הוספתי מתגים ל- PC4 ו- PC5 או לסיכות 27 ו -28.

שלב 4: מה שאתה צריך Rev 2

מה שאתה צריך Rev 2
מה שאתה צריך Rev 2

אז בעצם אתה מחליף את כפתורי Radio Shack עבור אלה מבד בעבודת יד. אתה צריך: צבעים מרובים של בד, או צבע אחד אם אתה רוצה שכל פתק יהיה באותו צבע. קטע השמיכה בחנות הבדים הקרובה ביותר שלך הוא המקום הטוב ביותר להשיג זאת בזול. רבעי quilting הם $ 1.50 ואתה יכול להוציא המון מתגים מאחד. בד מוליך, אני מציע את בד Flectron מ LessEMF זה $ 20 עבור חתיכה בגודל 12 "x54" לחיבור החוט אל הבד. אתה יכול להשיג אותם ברוב חנויות הבדים בזול. לג'ואן יש את הכלי ו -25 תמורת $ 2 תצטרך פטיש בשביל זה. חוט, השתמשתי ב- 22AWG, אני מציע אם יש לך את זה קטן יותר. פיוזינג, כדי שהבד הצבעוני והמוליך יידבק. שאל בחנות ואתה כנראה יכול לקנות אותו ליד החצר. זה כנראה יעבוד בסדר, אם כי אני מציע לך לשאול מישהו מחבט, השתמשתי בהתחלה ממש רופפת, ואז עברתי למשהו סרוג מהודק יותר. אני מציע לך לנסות כמה סוגים שונים עד שתמצא מה עובד הכי טוב. צינורות חימום לכווץ, זה הפך את כל העניין לניהול הרבה יותר. חוטי כיווץ חום יחד כשהם חולפים אחד על השני והם יישארו הרבה יותר טוב.

שלב 5: הרכבה Rev 2

הרכבה Rev 2
הרכבה Rev 2
הרכבה Rev 2
הרכבה Rev 2
הרכבה Rev 2
הרכבה Rev 2

הניחו את הבד הצבעוני זה על זה וחתכו ריבוע, זה לא חייב להיות מושלם. גיהנו את הבד כדי להוציא את כל הקפלים, שכבו אותם שוב זה על גבי זה וודאו שהקצוות תואמים כולם. חותכים את כל הקצוות שלא. חותכים את הסיבוב העליון והתחתון ומשאירים את הצד השמאלי והימני ישר. אתה הולך להפוך את המתג לאחר התפירה, אז אל תהפוך את הצדדים המעוגלים מדי לעזובים והשאיר מספיק גובה בצדדים השטוחים כדי לדחוף את המתג בקלות כשתסיים. עגול את הצד השטוח של המתג הראשון והאחרון. העבר לעבר מכונת התפירה שלך והרכיב שניים מהסיבובים יחדיו כך שהצד הטוב יפנה אחד כלפי השני ותפר תפר על החלקים השטוחים. לאחר שבראש הכפתורים יש תפור, חותך ריבועים מהבד המוליך וממזג צד אחד. חותכים חוט לאורכו ומפשיטים קצה אחד. הלחם את החוט סביב אחת העפעפיים. (סביר להניח שההלחמה לא תידבק לעינית) חותכים חריץ קטן בבד בפינה אחת ופוחמים את העין כדי לצרף את הבד והחוט. הסר את הגיבוי מהפיוז והמזג את הבד המוליך לחלק האחורי של הבד הצבעוני. חזור על כל המתגים. כדי להקל על העניינים, אתה יכול לחמם את צינורות החוטים יחד כאשר חוט אחד עובר את החוט למתג הבא. קבל או עשה פיסת בד באורך המתג וחתך רצועת בד מוליך לאורכו. שלא כמו המתגים הצבעוניים, מדובר בחתיכה אחת ארוכה. זה יהיה מה שהכפתורים נוגעים בו כדי ליצור את החיבור. חותכים חריץ קטן ומחברים אליו חוט בעזרת עין, כמו החלקים הצבעוניים. תמיסו אותו בחלק האחורי של הבד התחתון. תפרו את החלק העליון והתחתון יחד עם הבד המוליך כלפי מטה, השתמשו במקל חצר כדי להפוך את הסט לאחר התפירה. גזרו כמה חורים קטנים בחבטה, השתמשתי במקל אכילה כדי לקבל עיגול ואז פשוט מסיר את האכילה ומבצע את החיתוך. חותכים אותם לצורה ומכניסים אותם למתגים. זה מה שמפריד את הבד המוליך. ייתכן שיהיה קל יותר להכניס את החבטות בזמן שאתה הופך את המתגים במקום אחרי. החומר שהשתמשתי בו נקרע למדי בזמן שהכנסתי אותו והייתי צריך לקבל חבטות שונות.בסוף לחבר את החוטים ללוח המטרה ואתה מוכן. הרצועה התחתונה הארוכה תיטחן.

שלב 6: מה שאתה צריך Rev 3

מה שאתה צריך Rev 3
מה שאתה צריך Rev 3

ב- Rev 3 עשיתי את המתגים ללא תלות בחיווט. זה חסך המון זמן. אני גם אוהב את המראה של התוצאה המוגמרת הרבה יותר. אז הנה החלקים החדשים שאתה צריך: סנאפס, הרגע קיבלתי אותם מבית ג'ואן. הם הגיעו עם כלי התקנה לא רע עבור $ 7. הייתי מציע את אחד מכלי הצבת במקום זאת מכיוון שהייתי צריך לפרק את הכלי שלי כדי להתקין את הצלילים באמצע. תפירה תהיה אלטרנטיבה טובה, למרות שלוקח להם יותר זמן לדבוק. חוט מוליך, לספארק כיף יש דברים שיכולים להיכנס למכונת התפירה שלך. הייתי צריך ללכת ממש לאט במכונה שלי או שהחוט יישבר. הקילומטראז 'שלך עשוי להשתנות

שלב 7: הרכבה Rev 3

הרכבה Rev 3
הרכבה Rev 3
הרכבה Rev 3
הרכבה Rev 3
הרכבה Rev 3
הרכבה Rev 3
הרכבה Rev 3
הרכבה Rev 3

התיקון הזה היה הרבה יותר טוב מהקודם מבחינת הזמן עד שנבנה. בנוסף, עם מתגים נשלפים הצילו את השפיות שלי יותר מפעם אחת. התחל על ידי יצירת הבסיס. זה רק רבע קווילט אחד מקופל לשניים. הניחו שכבה של חבטה למעלה ותפרו, והשאירו חור להפוך אותו. דחוף את הדבר דרך החור ובעצם יש לך דבר מסוג כרית. כיכבתי אותו כך שיהיה קל יותר לעבוד איתו. השתמש בחוט רגיל ותשתגע. עשיתי יהלומים על זה, אבל אולי בפעם הבאה אשים דרקון מאחור, או משהו מגניב. עכשיו, על המתגים. אני אוהב את העיצוב הזה כי אתה בעצם יכול להכין המון כאלה מראש ופשוט להשתמש במה שאתה רוצה. התחל בעזרת פיסת קרטון, נייר או בד וגזור מתוכה צורת אגס. השתמש בזה כמדריך לחיתוך החלק העליון והתחתון של כל מתג. גזרתי צבע אחד לכל תחתית וצבע אחר לחלק העליון, אבל אתה יכול להיות יצירתי ולעשות מה שאתה רוצה. גזור את המדריך שלך לצורת סוכרייה שתתאים בקלות בתוך המתג. האריך את "המקל" כך שהוא יכול להתעטף על קצה ה"אגס ". חותכים את הצורה מבד ההתמזגות והמוליך וממזגים צד אחד של הבד המוליך. הסר את הגיבוי מחומר ההתמזגות והתמזג אותו בחלק העליון של הבד שיהיה בחלק התחתון ותחתון הבד שיהיה בחלקו העליון. עטפו את החלק הנוסף סביב החלק העליון. פנה אל מכונת התפירה שלך ושם חבטות עם חורים בין הבד העליון והתחתון. לתפור מחוץ למרקם המוליך ולדלג על חלק ה"מקל "של המתג. גיליתי שאפשר לתפור את הבד המוליך העליון לתחתית וליצור קצר. עדיף לא לתפור דרך הבד המוליך. צרף מצלמות והמעבר נעשה. מצאתי שקל יותר להשתמש בצמד הזכרים לכל חיבורי התחתון/GND ובצמד הנקבי לכל החלקים העליונים. זה הופך את כל המתגים להחלפת.המעגל: העניין בחיתוך סיבובים הוא שיש לך הרבה סיביות נוספות. לקחתי את שאריותיי, התמזגתי פיסות פיוז גדולות לחתיכות בד מוליכות והשתמשתי באלה כדי לחתוך את המלבנים הקטנים שבהם השתמשתי כרפידות. הפוך את המתגים שלך בגסות והתמזג את הרפידות לבסיס עם מספיק מקום כדי לתפור להם קו ולהתפשט. כף הרגל של מכונת התפירה בה השתמשתי לא לקחה בחביבות להיות קרובה ממש לצמד, אז קח את זה בחשבון ותן לעצמך קצת מקום. מכיוון שקיבלתי חוט מוליך שיכול להיכנס למכונת התפירה שלי פשוט תפרתי קו ממשטח לרפידה ובחזרה. הייתי צריך ללכת לאט או שהחוט יישבר, אבל זה היה טון מהר יותר מתפירת ידיים. גם עם חוט מוליך על הסליל והמחט, קיבלתי חיבור מוצק ממש טוב. החומר מתמוטט כמו מטורף, אבל קצת דבק מלאכה או אלמרס מנקה את זה. נסו להרחיק את הקווים זה מזה ולא אמורות להיות לכם בעיות. הרכבה אחרונה: הצמד את כל המתגים שלך, חבר את הלוח, טען קוד וסיימת. השתמשתי בחוט כדי להגיע מהלוח לרפידה ואז פשוט תפרתי את החוט לבסיס ביד. עבור הגירסה הבאה, ארכב את הלוח בקופסת פלסטיק עם הצמדות לחיבורו לבסיס כך שאצבעות סרק לא יפרקו אותו.

שלב 8: קוד

קוד
קוד

אם מעולם לא תיכנת שבב בעבר, זוהי משימה קצת מרתיעה. זה לא עוזר שהכלים מתקלפים ולרוב אתה צריך לבצע את אותה הפעולה מספר פעמים. שני המשאבים הטובים ביותר שמצאתי להבנת מה שקורה הוא הדף ל- USBtinyISP, https://www.ladyada.net/make/usbtinyisp/ וקורס ההתרסקות בתכנות צעצוע הרעש, http:/ /blog.makezine.com/archive/2008/05/noise_toy_crashcourse_in.html אלה אמורים להיות מסוגלים להתחיל אותך.

הרבה אנשים אוהבים את Arduino בקידוד הזה ואין שום רע בשימוש בו, אלא שאני מרגיש שהוא מוסיף הרבה נפיחות לתוכנית פשוטה בדרך כלל. כמו כן, הכרתי את C ואיני מכיר את ארדואינו. אולי יום אחד, אם יהיה זמן.:) קוד: {{{ #include // השתמש בסיכה כדי להפעיל את SPK /// Typedefs ////////// typedef unsigned char u8; int main (void) {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. אז מכיוון שעלינו להטות את סיכת הפלט גבוה ואז נמוך כדי לבצע מחזור אחד, עלינו לחלק את התשובה ב -2 על מנת להגיע למגרש הנכון. הנוסחה נראית כך, Pitch להכניס קוד = (1000000/8)/(תדירות יעד*2) עבור A (440) זה יהיה 125000/880 = 142.045 או 142 למטרותינו, מכיוון שהערך חייב להיות מספר שלם. תדרי היעד של הערות ניתן למצוא כמעט בכל מקום באינטרנט ובדרך כלל כולם אותו דבר. אני עדיין רוצה להוסיף הצהרת מקרה במקום להשתמש בחבורה של Ifs ולהשתמש ב- PWM כדי לשלוט טוב יותר על עוצמת הקול והגובה של הרמקול, אבל בינתיים זה עובד.

מוּמלָץ: